冼 进, 赖晓铮
(华南理工大学 计算机科学与工程学院, 广州 510006)
“数字逻辑”是计算机专业硬件教学中的一门十分重要的学科基础课,也是国家教委《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(2008)》要求的计算机科学与技术专业学生必须掌握的一门核心基础课,是关于计算机硬件领域几门主干课程的第一门课,学好该课程,可以为日后继续学习计算机组成与体系结构、嵌入式系统等后续课程打下坚实的基础。因此,上好这门课,对于计算机专业的发展和学科建设有着不可忽视的意义。
现有的数字逻辑的实验教学与高水平大学计算机人才的培养极不相适应,面临着巨大的挑战:传统的“面板插线”实验教学方式受限于动手能力和实验条件,学生仅能通过在实验箱面板上插线连接去验证实验箱上设定功能,不能去改动实验箱硬件电路,并且现有实验箱上各器件之间连线错综复杂,每次实验过程都要重复进行大量的连线操作,不仅实验箱因为频繁插拔容易损坏,而且学生在实验过程中花费相当精力在枯燥乏味的连线、查错等琐事上,严重降低学生的学习兴趣与学习效率,影响实验教学效果。
新的数字逻辑实验也增加了一些可编程逻辑实践,允许学生运用硬件描述语言对可编程逻辑芯片进行数字逻辑实验和CPU设计,灵活性比较高,可以实现工业级应用标准的复杂CPU架构设计,但这要求学生必须有较好的电子设计自动化(EDA)技术基础和硬件描述语言编程能力[1-2]。
传统的实践方式是以实际元器件为基础,手工操作来搭建实验电路,这将带来线路繁杂,实验成本高,效率低,器件问题影响实验结果等弊端[3]。为了解决这些弊端,力图用简单、直观的方法,使枯燥的计算机硬件基础知识变得直观、形象,让学生方便、快捷进行逻辑设计实验,减轻学生和老师的负担,本项目将采用电子电路仿真软件Multisim来进行实践,虽然Multisim里面也有8051等CPU模型,可以非常方便进行单片机和嵌入式系统的模拟仿真,但是本项目不需要用到任何现成的CPU模型,仅通过中小规模数字逻辑器件“搭积木”的方法来实现所有的实验[4-6]。
Multisim软件是专门用于电子电路仿真与设计的EDA工具软件。它具有:直观的图形界面、丰富的元器件、强大的仿真能力、丰富的测试仪器、完备的分析手段、方便的人机交互等特点。基于这些特点,采用Multisim软件的仿真设计可以很好地克服实际元器件搭建电路中存在的问题。数字逻辑课程已经开展了EDA技术教学和FPGA实验多年,该课程可以看作是计算机组成原理课程的先导课程。传统实验教学有很多成功应用经验,实验项目移植到PC机进行模拟仿真实验教学改革可行[7-9]。
在Multisim虚拟仿真软件平台上,继承传统面板插线实验教学的“低门槛”特点,即只要掌握基本的数字逻辑电路概念,也能在虚拟环境中运用常见的中小规模逻辑器件“积木式”设计和搭建简单的CPU;在虚拟仿真教学中也继承可编程逻辑实验教学一样的高灵活性特点,在Multisim虚拟仿真环境中从简单到复杂,有利于降低硬件基础课的实验门槛,提高学生对计算机硬件课程的学习兴趣,增强学生的创新意识,培养学生实践动手能力[10-13]。
采用硬件描述语言的编程方法,把传统的数字逻辑课程验证式实验教学转变为设计式实验教学,对门电路与时序电路实验进行虚拟仿真设计,让学生自主设计控制器,搭建一小型计算机控制系统,深入理解计算机逻辑原理[14]。具体构建验证性实验,设计性实验和创新性综合训练3个层次。熟悉组合逻辑电路和时序逻辑电路分析与设计,创新性综合训练项目在课程设计环节中进行,主要训练学生的综合实验能力,设计一全周而复始的执行一系列任务的控制器[15]。
本项目拟将数字逻辑课程的实验教学体系分成由浅入深、相互关联的3个层次,设计一批实用性强的EDA实验项目。
(1) Multisim虚拟仿真软件使用。打开的Multisim如图1所示。菜单栏位于主窗口界面上方的第2行,一共给出了12个主菜单。
图1 Multisim设计主页
通过这些菜单可以对Multisim所有功能进行操作。菜单中的一些功能与大多数Windows平台上的应用软件一致,如文件、编辑、视图、选项、工具、帮助等菜单。此外,还有一些EDA软件专用的选项,如绘制(放置)、MCU、仿真等。Multisim 提供了多种工具栏,并以层次化的模式加以管理,用户可以通过视图(View)菜单中的选项方便地将顶层的工具栏打开或关闭,再通过顶层工具栏中的按钮来管理和控制下层的工具栏。通过工具栏,用户可以方便直接地使用软件的各项功能。
(2) 组合逻辑电路仿真设计。逻辑门是组合逻辑电路的基础器件,具有1个或多个输入端,但只有唯一的输出。选取组合逻辑最具特色电路进行仿真设计,在解决逻辑问题时所使用标准译码器,常见的有2-4译码器(74LS139)、3-8译码器(74LS138)等规格。2-4译码器74LS139有2个输入端(A、B),输入编码(00~11),对应可以选择4个输出端(Y0~Y3),其逻辑功能如表1所示。
74LS139译码器芯片功能可以用逻辑门搭建等效逻辑电路实现,如图2所示。译码器逻辑属于“若全部输入条件都成立,输出状态才成立”,所以采用与非门实现(输出端负逻辑)。
(3) 时序逻辑电路仿真设计。计数器的另一种更常见的结构设计是同步计数器,如图3所示。所有位的JK触发器都由同一时钟源CLK驱动。在同步计数器中,每一位JK触发器的状态翻转由J和K端的当前状态决定;“当所有低位全1时,本位触发器的J=K=1”。 4位同步计数器[D0,D1,D2,D3]电路中,D1位翻转的条件是D0=1,D2位翻转的条件是D0=D1=1(与门实现),而D3位翻转的条件则是D2=D1=D0=1(两个与门级联实现)。
表1 译码器74LS139真值表
图2 译码器74LS139及其等效逻辑电路
图3 同步计数器的时序逻辑电路
(4) 综合逻辑电路仿真设计。多位数据比较的方法则是先比较高位,再比较低位。当高位不等时,两个数的比较结果就是高位的比较结果;当高位相等时,两数的比较结果再由低位做比较。本设计的8位数据比较器电路如图4所示,采用了2个4位比较器74LS85串行级联的方式来实现,74LS85的真值表如表2所示,当高4位比较器U_H4B的所有比较位都相等时(Ai=Bi,i=0~3),则FAB=IA>B,即低4位74LS85比较器U_L4B比较结果从比较器U_H4B的级联输入端直通级联输出端。在比较器U_H4B级联输出端外接红、黄、绿三色LED灯,分别表示A>B、A=B及A
表2 74LS85真值表
图4 8位数据比较电路图
(5) 控制器与微程序CPU仿真实现。仿真设计一个最小版本CPU:只有4条指令,唯一的功能是“程序跳转”,如表3所示。
表3 CPU指令列表
“最小版本”CPU如图5所示。由时序发生器CLOCKUNIT、微程序控制器CONTROLLUNIT和数据通路DATAPATH组成。时序发生器输出预定的CPU时序,通过微程序控制器按时序产生操作信号,在数据通路中完成CPU的程序跳转。
图5 “最小版本”CPU电路图(微程序版)
负责执行上述微程序流程的CPU部件是微程序控制器,其结构由控制存储器、微指令寄存器、微地址寄存器和地址转移逻辑电路组成。CPU启动或复位后,微地址寄存器清零,控制存储器从地址[00000]开始输出微指令。微指令结构包括了控制字段、下址字段和判断字段。控制字段即图5中的微命令字段,直接输出微操作信号执行当前微指令;下址字段锁存在微地址寄存器,待当前微指令执行完后,再从控制存储器取出下一条微指令。若当前微指令是取指微指令,则P字段启动地址转移,根据指令寄存器IR中的OP码修改微地址寄存器,转向指令执行周期的第1条微指令。
创新性综合训练实验在课程设计环节中进行,主要实验内容是指导学生采用不同的外设,与设计性实验中自行设计的CPU搭建计算机最小系统,训练学生综合实验设计能力,加强学生创新能力的培养。具体实验内容有:① 微程序版CPU设计;② 硬布线CPU设计;③ 流水线版本CPU设计;④ 嵌套中断的CPU设计。由最具特色嵌套中断的CPU设计为例,仿真实验的中断嵌套所需“断点”堆栈则是由硬布线逻辑搭建的“硬堆栈”,其对CPU指令和软件程序员来说是完全透明的[16]。
图6展示了两种硬堆栈电路:位(bit)堆栈STACK_BIT和字节(byte)堆栈STACK。位堆栈STACK_BIT由一个移位寄存器74LS194独立构成;而字节堆栈STACK电路则包括由4个74LS273寄存器STACK_0~3构成的4级堆栈、堆栈指针寄存器SP及输入/输出电路等组成部分。
图6 硬布线逻辑的堆栈电路
(1) 解决传统数字逻辑课程实验、实践方式是以实际元器件为基础,手工操作来搭建实验电路,这将带来线路繁杂,实验成本高,效率低,器件问题影响实验结果等弊端。
(2) 学生通过熟练应用基于Multisim的仿真设计,数字逻辑知识体系,通过中小规模数字逻辑器件“搭积木”的方法来实现所有的实验。如自主定义的CPU设计,提高学生在计算机硬件系统方面的认识广度和深度,符合计算机学科“面向理论知识,兼顾动手能力”的教学目标。理论与实际相结合,培养具有较强动手能力和创新能力的学生。
(3) 对传统数字逻辑实验进行模拟仿真。
基于Multisim虚拟仿真数字逻辑实验,可以说是计算机数字逻辑课程的一次革命。可以将传统的计算机数字逻辑实验箱的设计完整地在仿真软件Multisim上搭建起来。采用仿真软件Multisim实验平台,学生的实验及课程设计可以在实验室完成,也可以在寝室教室完成。学生实验设计可以在上课时间完成,也可以在课余时间完成,完全没有时间与空间的限制。更加有助于学生理解实验原理、消化实验内容。有利于逐歩培养学生的动手能力,创新思维与综合运用设计的能力,避免了学生在硬件实验中“走过场”“只知其然而不知其所以然”。使学生更深层次的了解计算机逻辑结构。把硬件原理学习与硬件描述语言编程技术结合起来,达到以软促硬、软硬结合的教学效果。从而为今后的课程,如计算机组成原理、编译原理、操作系统等做了良好的铺垫。