我在一所文理学院教授唯一一门计算机架构课程。该课程是计算机科学专业和未成年人的必修课。我们没有计算机工程、电气工程、其他硬件课程等。我在课程中的主要目标是让学生一直了解计算机的工作原理,我相信他们最好通过硬件实验室和不只是通过教科书(计算机组织与设计轩尼诗和帕特森)。我的次要目标是激发他们对计算机体系结构的兴趣,并增加他们对计算机科学的兴趣。让他们直接为工业做好准备并不是目标,尽管激励他们学习更多的计算机体系结构才是目标。学生们通常没有任何建造任何东西或参加大学水平的实验室课程的经验。通常,每学期有 10-15 名学生参加该课程。
自 1998 年以来,我一直以类似于 1980 年代后期在麻省理工学院教授计算机架构和数字电子学的方式教授这门课程:在有源面包板上使用 DIP TTL 芯片。在第一个硬件实验室作业中,学生构建一个全加器。大约在学期进行到一半时,他们开始构建一台带有 8 位指令集的简单计算机。为了减少布线,我为他们提供了带有一些电子设备的 PCB(两个 D 触发器、两个 4 位 LS 181 ALU 连接在一起以充当 8 位 ALU 和一个三态缓冲器)。在第一个实验室中,他们为两种指令格式导出(非常简单的)控制信号并构建电路,在开关上输入指令并从灯中读取结果。在第二个实验室,他们添加了一个程序计数器(2 个 LS163)和一个 EPROM(其中我最初的问题是关于,在它切换到我应该如何教授入门架构之前)。在最后的实验中,他们添加了条件分支指令。虽然学生们花费了大量时间进行接线和调试,但我觉得这是大部分学习发生的地方,学生们带着真正的成就感离开。
不过,这个论坛上的人一直在告诉我,我应该改用我以前从未使用过的 FPGA。我是一名软件工程师,而不是计算机工程师,现在已经离开学校一段时间了,但我有能力学习。我无法获得很多钱(也许几千美元)来更换我们现有的数字培训师。我们确实有一个逻辑分析仪。
鉴于我的目标和限制,你们 EE 是否会建议我坚持我目前的切换到基于 FPGA 的方法?如果是后者,你能给我一些关于教育自己的材料的指点吗?
根据要求,这里是教学大纲和实验室作业的链接。
补充:是的,它也是一门数字逻辑课程。当我上大学时,学生们被要求每个学期学习计算机架构和数字逻辑,我将它们合并为一个学期。当然,这是关于过去的陈述,而不是未来的陈述。