在入门计算机体系结构中,使用FPGA优于TTL有何优势?


24

我在人文学院教授一门也是唯一的计算机体系结构课程。计算机科学专业和辅修课程是必修课。我们没有计算机工程,电气工程和其他硬件课程,等等。我的主要目标是让学生从头到尾地了解计算机的工作方式,我相信他们可以通过硬件实验室和其他方面学习得最好。不只是通过教科书(计算机组织与设计轩尼诗和帕特森的作品)。我的第二个目标是激发他们对计算机体系结构的兴趣并增加他们对计算机科学的兴趣。尽管要激励他们学习更多的计算机体系结构,但直接为工业做准备并不是一个目标。这些学生通常没有任何建造任何东西或参加大学水平的实验室课程的经验。通常,每学期有10-15名学生参加该课程。

自1998年以来,我一直以与1980年代末在麻省理工学院教授计算机体系结构和数字电子学的方式相似的方式教授该课程:在有源面包板上使用DIP TTL芯片。在第一次硬件实验室作业中,学生将构建一个完整的加法器。他们大约在学期的一半,开始用8位指令集构建一台简单的计算机。为了减少布线,我为他们提供了带有某些电子设备的PCB(两个D触发器,两个连接在一起以充当8位ALU的4位LS 181 ALU和一个三态缓冲器)。在这些实验的第一个实验中,他们得出两种指令格式的(非常简单的)控制信号并构建电路,在开关上输入指令并从灯中读取结果。在第二个实验中,他们添加了一个程序计数器(2个LS163)和一个EPROM(我最初的问题是关于,在切换到如何教授入门架构之前)。在最后的实验中,他们添加了条件分支指令。尽管学生花费大量时间进行布线和调试,但我认为这是进行大量学习的地方,并且学生真正拥有成就感。

但是,该论坛上的人们一直在告诉我,我应该切换到以前从未使用过的FPGA。我是软件工程师,而不是计算机工程师,现在已经放学了一段时间,但是我有能力学习。我将无法获得很多钱(也许几千美元)来替换我们现有的数字培训师。我们确实有一个逻辑分析仪。

考虑到我的目标和限制,您是否会建议EEs继续使用当前的基于FPGA的方法?如果是后者,您能给我一些指导自己学习的资料的指针吗?

根据要求,这是课程提纲和实验作业的链接

另外:是的,它也是一门数字逻辑课程。当我上大学时,要求学生分别学习计算机体系结构和数字逻辑中的每一个学期,然后将它们合并为一个学期。当然,那是关于过去的陈述,而不是关于未来的陈述。


您可以发布或链接到您的课程/课程表吗?
凯文·维米尔

我可以建议您考虑一种替代方法吗?在您的实验室中如何使用像Arduino这样的微控制器呢?
JonnyBoats 2011年

7
@JonnyBoats:...怎么适合?她正在谈论从硬件门构建计算机。
darron 2011年

为了回答您的问题-几乎没有人制造硬件门,他们购买已经实现门的芯片。使用FPGA时,无需在硬件中建立门,而是在软件中进行设置。
JonnyBoats 2011年

1
@JonnyBoats:FPGA正在从硬件门(LUT是可编程门)构建数字设计。门是作为硬件存在的,您的设计将完全以物理方式运行。使用TTL,您也不能按照该标准“构建门”……它们是预建的门。唯一的区别是门功能是可编程的,路由是可编程的(但仍然是物理的),并且它们的数量多很多。我仍然完全看不到Arduino如何适合数字逻辑设计课程。(除非您是要她改变课程本身的目的?)
darron 2011年

Answers:


16

考虑到该课程的目标,我认为TTL方法很好,我将此称为“ FPGA专家”。FPGA充满了逻辑,您可以使用它们来做各种有趣的事情,但是一个学期中人类只能做很多事情。

查看您的课程表,您的课程是我在本科学习的逻辑设计和“机器结构”课程的结合。(此外,它是供CS专业人士使用的。我全都是面向CS专业人士的,他们必须面对真正的硬件-让他们摆脱编写代码的感觉似乎是一个回退。)在此入门级,您将讨论汇编指令的方式。分解后,我发现让学生用代码做事而不是手工做并没有真正的好处。进行HDL意味着学习HDL,学习如何编写可合成的 HDL以及学习IDE。这是概念上的更多复杂性和重新抽象。另外,您还必须处理软件问题。

通常,使用FPGA的课程的重点是练习创建有用的逻辑-用于与外设,串行通信,RAM,视频生成器等对话。这是有价值的知识,但似乎非常有用。课程范围。计算机体系结构方面的高级课程要求学生在FPGA中实现复杂的CPU,但同样,这似乎超出了您的课程范围。

我至少会专门针对FPGA进行一次演讲。使用开发板运行一些演示,并向他们展示工作流程。既然你在米尔斯,也许你可以联系伯克利分校谁运行CS乡亲150 / 152,去看看他们是如何做的事情。


我可以说在90年代初期,基本上以OP描述她在MIT的课程的方式来教CS150 -主要是74xx门,最终构造了一个简单的8位(或4位?)CPU。我们确实做了一个简短的项目,使用了在原理图捕获工具(无HDL)中设计的FPGA。看起来当前的课程大纲主要基于HDL。
Photon

很好的一点是,该课程是逻辑设计和机器结构的结合。正如我在问题描述中所添加的,以前有两门独立的课程,我将它们合并为一门。非常感谢您的帮助。我将研究FPGA,并且至少要增加一个关于它们的讲座。在UCB,Dave Patterson创建了一种新的入门架构方法,该方法具有更高的层次。我一直在关注它,但不打算做出那么大的改变。
艾伦·斯佩特斯

我一直在考虑FPGA环境的复杂性,也许我并不完全不同意,对于入门课程来说可能太多了。不使用现代工作流程进行教学似乎真可耻。我自己玩过TTL,直到进入FPGA之后,我才真正了解了(相对简单的)计算机是如何工作的。该课程看起来比我所需要的更好,因此也许她可以更好地理解这些概念。但是,从TTL逻辑芯片的角度来看,“真正的”处理器看起来很遥远。在FPGA之后,可以考虑制造一个。
darron 2011年

“计算机的工作方式”是指如何实际构建它们,而不是模糊的“时钟和触发器”概念……当然,TTL足以满足要求。(再说一遍,她的课程看起来可能讲得很好……我的问题是讲授几乎没有实际应用的硬件概念,而不是讲授实际使用的硬件)
darron 2011年

@ darron,TTL基本上已经过时了,但是从概念上讲它是干净的-没有语言或IDE使事情复杂化,只有图和点对点布线。当您的单词大小增加时,它会变得凌乱,但是8位的东西还不错。如果该课程进一步进行,或者有后续课程,FPGA将会很有意义,但是鉴于所涉及的内容,我认为这将是不必要的麻烦。
mng

6

我非常同意Photon。使用FPGA有许多优点。这里有一些有趣的考虑事项:

1)简单的平台,可非常快速地进行闸门设计,而无需花费数小时甚至数天的时间进行工作。FPGA非常容易实现潜在的非常复杂的数字设计。(多理论,少忙)

2)学生工作的重要部分可以在实验室外的模拟中完成。

3)软件环境是免费的(通常包括模拟器)。

4)周围有许多相对便宜的FPGA平台。学术定价应该会有所帮助。像Terasic DE0-Nano这样的完整套件的价格为59美元(看起来不错)。50-60美元似乎是您要查看的每板范围。

5)FPGA有很多非常酷的东西。像OpenCores这样的站点提供了数百个预建模块,可与FPGA一起使用。有FPGA4Fun,其中包含许多教程和项目。对于纯娱乐性,FPGA Arcade致力于使用FPGA构建游戏。根据您在FPGA板上设置的内容,这可能会构成一个非常有趣的课程。

6)有些主板显然已经为它们准备好了数字设计课程使用稍微老的基于Xilinx Spartan 3E的主板进行数字设计简介(警告:大量下载)。(尽管基于ActiveHDL,但我个人更希望使用更标准的VHDL或Verilog。)主要的FPGA供应商也有大学课程:Xilinx大学课程Altera大学课程Lattice大学课程

7)现在的工作流程更接近专业设计的工作方式。FPGA开发中的工作知识是可立即销售的技能。


非常感谢。我一定会尝试的。FWIW,如果我有第二学期的硬件实验室,我肯定会用它们来做FPGA或Arduino。
艾伦·斯佩特斯

5

我认为,如今,如果您正在处理入门级的事务,那么您将不在“计算机体系结构”领域工作,那么您实际上只是在做基本的数字电子学。但是,您也无法在一个学期内教授从门级数字电子产品到缓存算法,并行计算体系结构,SIMD,网络等方面的所有知识。

因此,这实际上取决于您要教的内容。如果您想专注于门级数字电子学,那么使用门级芯片将为学生提供一些实用的知识,并使他们对这种材料有更深入的了解。但是,如果要教计算机体系结构,它们可能需要比AND和OR门处于更高的抽象水平。

至少,您可能应该归功于自己学习HDL并实现一两个基于FPGA的设计,以便您(作为此处的教育专家)可以评估这些技能如何适合您的学生目标。我希望其他答案会为低价和无成本的材料提供很多指导,使您能够在短时间内加快FPGA设计的速度。(提示:Xilinx和Altera都提供免费的软件设计工具和仿真器,以及大量的应用笔记和其他教学材料)。


我不同意该课程不能教授计算机体系结构。学生将学习如何实现ISA(这绝对是计算机体系结构的一部分),并且我还将教授流水线和缓存。我同意建筑学比我在一门课程中讲授的要多。我还参加了其他几门架构课程,并在架构等方面进行了学术和行业研究。我很高兴看到HDL和FPGA。
艾伦·斯佩特斯

5

使用TTL的好处是,对于最基本的电路,HDL的细节会掩盖实际的电路,并且大多数学生只会花费大部分时间来编写和学习HDL。我认为第一部分使用TTL,然后架构部分使用FPGA会更好,因为实际上很难用TTL创建可编程系统。


+1 HDL隐藏电路。在HDL中有几种不同的写入多路复用器的方法,其中大多数与门的排列方式如何创建多路复用器几乎没有关系。
ajs410 2011年

这是关键点-在不从根本上真正了解其工作原理的情况下,为FPGA编写代码太容易了。现在,有很多方法可以避免这种情况,例如,Altera的IDE包括一个原理图输入模式,可以帮助您专注于门级设计,但是如果坚持这样做,您最终将无法真正利用FPGA的功能,因此切换真的有用吗?
朱尔斯

1

我完全理解物理电路组装的一些动手经验的重要性,我认为认识到如果没有某种程度的“感觉”模拟或太多抽象的东西就无法涵盖现代计算实践也很重要。最好的办法是尝试在每个级别上做一些工作,然后再添加足够的抽象以使尝试下一级别的复杂性成为可能。例如,您所参考的MIT课程在一开始就对32位RISC机器进行了软件仿真,该机器运行在物理上“构建”的芯片和模块8位微编程机器之上。到那时,我认为仅在FPGA中实现这样的机器会更有效(我怀疑他们从那以后可能已经做过)。

有鉴于此,我的诱惑是尽力在早期阶段包括芯片和布线阶段,然后在课程后期包括FPGA阶段。由于您已经有了面包板套件,因此您可以保留早期的实验,并在以后的实验中使用FPGA板或可面包板的FPGA模块。可以在FPGA依赖处理器的某些外部电路的情况下构建混合机,但感觉非常人为-仅在复杂度超过一块面包板的点上完全切换技术可能是最现实的。

您应该能够以教育价格以低于$ 100 / ea的价格采购现有独立FPGA板。

另一种选择是将您自己的类构建为类的一部分,也许将FPGA串行加载接口构建为项目的第一部分。这样做的一个很好的好处是,成本将足够低,以至于学生可以保留董事会,而不必在学期结束时上交董事会,这有望在少数学生中引起持续的兴趣和意识。


非常感谢。我知道麻省理工学院的变化。实际上,我是从现在的机构开始的,使用的是MIT不再需要的旧的6.004 / 6.111实验套件。但是,我的学生不是麻省理工学院的学生,一个学期不能吸收那么多的东西,所以我必须有选择性。(实际上,我在麻省理工学院发现,大多数学生也不能像向他们投掷的东西那样吸收太多,但这是另一回事。)FPGA板的较低成本无疑是吸引人的。
艾伦·斯佩特斯

1

我认为正确的方法是从继电器中构建一些门,这些门很容易看到和理解,但显然太慢了,而且对于现代应用而言耗电。然后说明如何使用晶体管更紧凑,更快速,更有效地完成相同的工作,而封装的栅极(例如“ quad nand”)可以做得更好。一旦达到这一点,我建议您展示如何在门外构建多路复用器和锁存器,然后如何从打包的多路复用器,锁存器等构建更大的结构。通过物理焊接数以千计的分立晶体管来构建当今的计算机,但是计算机的内部操作与晶体管的内部操作非常相似,只不过体积要小得多。

我认为学生从这种指导中会获得的主要好处是,了解为什么许多事情会像他们一样起作用。例如,如果一个人在“模拟”一个不需要任何实际物理实现的指令集,那么就不需要一个“装载存储器”指令占用三个周期,而其他大多数指令则需要一个周期。在不降低晶体管性能的情况下,有些事情是可以理解的,但是有些事情是不可以理解的(例如,同步与异步输入的重要性)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.