“数字电路与系统”课程教学改革探索
2018-12-27李文渊王志功张在琛
李文渊, 王 蓉, 孟 桥, 王志功, 张在琛
(东南大学 信息科学与工程学院, 江苏 南京 210096)
0 引言
“数字电路与系统(数字电路与逻辑设计)”是一门传统的电类专业基础主干课。数字电子技术的发展,与电子计算机和集成电路的发展密不可分,在数字电子技术诞生的初期,其应用主要是在电子计算机系统。现在,数字电子技术已经融入到国民经济的各个行业中,除了电子计算机系统外,人工智能、通信系统、医疗仪器、工业控制以及各种消费电子产品,都离不开数字电子技术。构成数字逻辑电路的元器件也从电子管、晶体管、小规模集成电路,发展到现在的大规模和超大规模集成电路以及系统芯片。为此,“数字电路与系统”课程需要根据微电子技术的发展和数字电子技术的应用进行相应的调整。我院在“数字电路与系统”课程教学中,对其内容进行了增减的探索,以期使课程内容适应科技发展,并与产业紧密结合,为学生进入工作岗位后尽快适应工作的需求奠定基础[1]。此外,“数字电路与系统”课程理论和实践结合性要求高,工程应用背景强,传统的实验教学部分受到时间、空间限制,使实现效果大打折扣。因此,“数字电路与系统”课程教学改革也包括了实验课程的改革。
1 弱化部分教学内容
由于“数字电路与系统”是一门传统的专业基础课,主要的教学内容包括:数制与码制、逻辑函数与化简、组合逻辑电路与组合逻辑模块、触发器、时序逻辑电路与时序逻辑模块、半导体存储器、可编程逻辑器件、数模与模数转换等内容[2]。这些内容在教学中,需要根据应用电子技术和微电子技术的发展,调整相应的教学内容和侧重点,而有些内容教学内容则需要弱化甚至舍去。
1.1 逻辑函数的化简
逻辑函数的化简以前是该课程教学的重点,因为逻辑函数的繁简程度决定了实现该逻辑函数的逻辑电路的复杂性,也决定了实现逻辑函数的代价。在使用逻辑门电路实现组合逻辑函数的情况下是需要对逻辑函数化简的,这会简化电路的逻辑结构,减少所使用的器件数量。例如我们常常用这样的例题来说明逻辑函数换件的重要性:F=ABC+ABD+ACD+C′D′+AB′C+A′CD′ ,如果不化简,那么如果用与非门实现这个函数,就需要7个与非门,所有门的引脚数超过了20个,实现的代价很高。如果经过公式法化简,函数可以化简为F=A+D′用一个与非门就可以实现了,而且只有两个输入引脚。再如,采用卡诺图对逻辑函数进行化简,需要讲述主要项、必要项、冗余项和化简的原则等等许多内容[3]。如对于函数F(A,B,C,D)=Σm(0,2,5,6,7,8,9,10,14,15)的化简,图1是错误的,图2是正确的。
图1 错误的化简 图2 正确的化简
如果我们现在仍然使用小规模门电路设计组合逻辑电路,那么逻辑函数的化简仍旧是必要的。但是在教学中所采用的例题,函数的模型很少是来源于实际的逻辑问题,大部分例题可以说是为了说明逻辑函数化简的重要性而人为臆造出来的。现在的逻辑电路设计,已经很少采用价格非常低廉的小规模门电路了。或者使用电子设计自动化软件,不需要手工对逻辑函数进行化简;或者采用大规模集成电路,如复杂可编程逻辑器件CPLD(Complex Programable Logic Device)或者现场可编程门阵列FPGA(Field Programmable Gate Array),因为器件中包含了非常多的资源,各种单元电路足够多,也就没有必要对逻辑函数进行化简。当然,除了上述采用小规模门电路实现逻辑函数需要化简外,如果要设计小规模的数字集成电路芯片,为了减少集成电路的尺寸,有时也需要对逻辑函数化简。因此,我们在该课程的新编教材中主要介绍了公式化简和卡诺图化简的原则和方法,不再作为教学重点内容。
1.2 组合逻辑模块应用
组合逻辑模块包括多种,常见的如编码器、译码器、数值比较器、数据选择器、数据分配器、奇偶校验产生电路、全加器、算术逻辑单元等等[4]。这些模块因为电路典型,以前应用中小规模电路较多,因此都有相应的集成电路产品。随着集成电路技术的发展,其中很多模块的应用越来越少。因此,在教学中我们对于模块的应用尽可能压缩课时。例如,译码器电路74138,其基本功能是实现译码。之前教学中同时常常会讲使用74138译码器实现多输出逻辑函数,这实际上是其功能的扩展,现在的电子设计中,很少这样使用,因此这个模块的应用在课堂上便完全回归到其基本功能。74138的另一个功能是代替数据分配器,这是其另外一个基本应用,因为没有专门的数据分配器集成电路器件。另外,数据选择器74151,其基本功能是数据选择,从另外的角度上看,也是数据的复接,或者说是低速多路并行数据转换为一路高速串行数据。以前的教学中比较多的时间讲解用其实现单输出函数,进一步使用芯片扩展的方法或者用降维卡诺图减少变量的方法实现变量数多于地址端的函数。但是,这些方法目前在实际中基本不会用到,因此介绍74138模块本身的基本功能很有必要,而对于其扩展的应用,则介绍的必要性不大。
1.3 触发器类型
触发器是时序逻辑电路的基本单元,作为存储器件,它的介绍也应该与电路的发展紧密结合。我们大部分的教科书在介绍触发器的内容时,都是按照基本RS触发器、钟控RS触发器、钟控JK触发器、钟控D触发器、钟控T触发器、主从RS触发器、主从JK触发器、主从D触发器、边沿触发器等这一顺序,讲解触发器发展历程中所有出现过的触发器(锁存器),以及CMOS基本触发器和主从结构的CMOS D触发器。这样讲解的优点是很好地说明了触发器是如何一步步对触发方式和电路结构改进的。触发器,从根本上讲,其基本功能是一样的:能够存储一位二进制信息,能够置1清0。重要的是目前集成电路的主流工艺是CMOS工艺,目前的大规模集成电路中普遍采用的就是主从结构的CMOS D触发器。因此,在我们的教学中,主要讲解基本RS触发器、CMOS基本触发器和主从结构的CMOS D触发器,重点讲解主从结构的CMOS D触发器以及其集成器件的使用,压缩了这部分内容的教学课时,而且能够很好地满足实际应用需要。
1.4 时序逻辑电路设计
时序逻辑电路的设计是数字与逻辑电路课程的灵魂,在教学中通常把时序逻辑电路的设计作为重中之重。因此,我们会讲解同步时序逻辑电路设计的一整套方法:假定初始状态,求得对应状态表或状态图;状态化简;为了减少使用触发器数量;状态分配;选择触发器的类型;根据状态表,求出要设计电路的输出方程和驱动方程;画逻辑图;如果对得到的逻辑图不满意,需要回到状态分配那一步,重新进行状态分配;最后要检查电路的自启动性,必要时进行自启动设计;标明偏离状态的转移。对于异步时序逻辑电路,则设计方法灵活等等。典型的例题是序列检测器的设计,很多教材均采用了这一例题讲述同步时序逻辑电路的设计。
对于时序电路的设计问题,我们与多家电路设计企业科技人员、数字电路与逻辑设计课程教师进行过讨论,普遍认为在实际的电路设计中,几乎不会采用这种时序逻辑电路的设计方法。要么借鉴已有的逻辑电路,稍加修改,使其满足要求;要么采用电子设计自动化的方法(硬件描述语言)。因此,我们在课程教学中对于这部分内容进行了较多的课时压缩。
1.5 时序逻辑器件模块应用
时序逻辑器件模块的应用,也是传统教学中占用课时较多的内容。例如,讲解移位寄存器时,我们会讲解移位寄存器能够完成的功能:串行输入并行输出、并行输入串行输出、数据节拍延迟、每移一位数据乘以2或者除以2等。再如,讲解集成4位二进制计数器74161时,除了4位二进制计数功能外,我们还要讲解利用74161的同步送数端、异步清零端、进位端等实现任意少于16进制的计数器,利用多片74161级联,再加上反馈实现大于16进制的任意进制计数器等等[5]。正如前述,实际电路的设计已经很少使用中规模集成器件,学生以后又很少会用到,因此花这么多时间讲解这些内容是没有必要的。
1.6 存储器容量的扩展
在使用很多8位并行数据时候的计算机时,我们经常会用到计算机存储器的扩展和计算机接口的扩展,因为所使用的集成器件,如存储器芯片容量小,难以满足应用,因此需要对存储器进行扩展。存储器的扩展包括字扩展、位扩展和字位扩展三种,可以使用小存储容量的存储构成满足需要的大容量存储器。随着集成电路技术的飞速发展,现在的存储器芯片容量越来越大,一个芯片或者厂家做好的一组芯片就足以满足我们的需要,因此,存储器的位扩展、字扩展、字位扩展就没有讲解的必要了。
2 重点强化部分教学内容
在对上述经典“数字电路与系统”课程内容弱化的同时,我们增加或者强化部分课程教学内容,以适应电子技术的发展对本课程的新要求。
2.1 强化与微电子发展结合紧密的内容
我们需要对一些与微电子技术发展相关的技术内容进行强化。如逻辑电平的问题,在以前我们仅仅讲述TTL电路的时候,这个问题并不明显,通常认为逻辑高电平是+5V,逻辑低电平是0V。但是,因为集成电路主流工艺是CMOS制造工艺,虽然有些电路为了与TTL逻辑电路兼容而特意制作的,但是大部分电路中,其逻辑电平与TTL电路并不兼容,因此对于具体的集成电路制造工艺,其逻辑电平是不同的。随着集成电路制造工艺的发展,为了降低电路的功耗,集成电路的电源电压越来越低,所以其逻辑电平也越来越低。
与微电子技术发展相关的,还有电子设计自动化。与采用中小规模设计逻辑电路或者数字系统不同,现在很多情况下采用电子设计自动化软件(EDA工具)设计数字电路与数字系统。在计算机上,对电路采用硬件描述语言(VHDL、Verilog HDL等)描述[6],计算机就能够对电路进行仿真,如果结果满足要求,就可以进一步综合出电路的网表,给出电路的版图,版图数据可以直接送到代工厂加工出产品。或者可以在计算机中直接输入电路网表或者电路图,采用仿真软件对电路仿真,得到满意的结果后,将其转换成版图,送到代工厂加工。数字逻辑电路与系统还可以采用CPLD或者FPGA等大规模集成电路设计,同样需要采用硬件描述语言描述要设计的电路或者系统,进而在CPLD或者FPGA开发工具上仿真,得到满足要求的设计之后,完成在CPLD或者FPGA上的电路设计。
在电子设计自动化中,有多种硬件描述语言,也有多种电子设计自动化软件,典型的数字电路、数字系统设计综合软件有Synopsis 、Cadence等。采用这些软件,可以在计算机上完成电路与系统的设计、仿真和调试。
2.2 自顶向下的数字系统设计方法
除了数字逻辑电路外,更多情况下是需要对数字系统进行设计。对于数字系统的设计,我们经常采用的例子是交通信号灯控制器的设计,采用算法状态机ASM(Algorithmic State Machine)图的方法,描述交通信号灯,然后根据ASM图设计其控制器和处理器。在简单的数字系统设计中,ASM图的设计方法有其合理性,但并不是万能的,而且实际使用中的交通信号灯,并不是这样设计制作的。我们经常遇到的是复杂的数字系统,例如计算机系统、通信系统等。而对于复杂的数字系统,往往需要将其化分成子系统,然后对子系统进行功能模块划分,再对模块采用触发器和门电路进行设计,这就是自顶向下的设计方法。这种方法在实际工作中非常有用,在我们设计数字电路的时候也会经常用到,例如设计算术逻辑单元ALU(Arithmetic Logical Unit)的时候,我们就可以将ALU分为算术单元、逻辑单元、控制单元,进而将其功能简化,分布设计相应的单元,构成所需要的ALU电路。
2.3 大规模集成器件CPLD和FPGA的结构特点
大规模集成电路器件CPLD和FPGA在现在的数字电路与系统中,是经常使用的器件,而这两种器件又各有特点,因此需要说明其各自的特点,以便应用时能够很好地选择使用。对于CPLD,其基本结构是由简单可编程逻辑器件和可编程内部连线构成的,再增加了I/O控制块以提高输入/输出的控制能力。也就是说,CPLD是由功能块或者宏单元、可编程内部连线和I/O控制块构成。通常CPLD用宏单元或者功能块的数量来衡量其集成度,现有器件从数十个宏单元到超过2000个宏单元不等,工作电压从2.5 V到5 V,功耗在几毫瓦到几百毫瓦之间。FPGA采用逻辑单元阵列结构,由3种可编程模块阵列组成:输入输出块阵列、可配置逻辑块阵列和可编程互联网络。FPGA的可配置逻辑块结构简单,但是数量众多,从数百个到可达数十万个,工作电压从1.2 V到2.5 V。FPGA简单的逻辑单元和各种连线结构在组成系统时较灵活,当逻辑单元的布局和连线的布局合理时,FPGA器件内部资源利用率高,工作速度快。其缺点是延迟时间不好预测。相反,CPLD的连线相对固定,信号传输的延迟时间也容易估算。
总之,数字电路课程的教学内容,基本的概念、基本的方法是课程的基础,必不可少。随着电子技术、集成电路技术等相关技术的发展,对课程提出了新的要求,教学内容就需要吸纳一些新的知识和新的方法,使教学与实际紧密结合。
3 实验课教学与理论课教学相结合
实验课教学是“数字电路与系统”课程的重要组成部分,以往经常会将其分开教学,由实验课教师教授实验课,而理论课教师则专门教授理论课[7]。我们在5年前开始将实验课与理论课教学统一起来,由同一教师授课。这样做的优点在于理论课与实验课紧密结合,统一安排,使实验课能够验证理论课的教学内容,促进了学生对理论课的理解,理论课教学内容指导实验课,对学生的实验能力提升有很大的帮助。同时,为了突破实验受到的时间、空间限制,我们采用自己研制的POCKLAB虚拟实验仪器,与计算机连接后便可以提供直流电源、信号源、示波器、万用表、逻辑分析仪等功能[8],学生利用它可以在宿舍或者教室等有电源的场合开展实验并进行调试。POCKLAB虚拟实验仪器的样板如图3所示。
图3 POCKLAB虚拟实验仪器
实验完成后,学生需要提交完整的实验报告和实验视频。此外,在实验课上完成综合实验时,学生需提交实验方案设计并先用虚拟实验仪器调试完成后,再在实验室用实际的实验仪器调试完成并通过验收,这样做的目的是保证学生会使用虚拟实验仪器的同时,也需要掌握相关实验仪器实体的使用。将实验课和理论课结合起来教学,提高了学生的学习兴趣,取得了很好的效果。
4 结语
在“数字电路与系统”的课程教学中,我们根据技术发展对课程的要求,为了使学生能够适应后续学习和工作的要求,对课程教学内容进行了改革探索,课程的教学内容与实际紧密结合,学生能够了解课程教学内容在以后实际工作的作用,并将实验课教学和理论课教学统一起来,采用POCKLAB(口袋实验室)使学生学习的积极性明显提高,随时随地可以开展实验。课程的教学改革于2008年先从我校吴健雄学院高等理工实验班开始,采用新的教材内容;经过4年的探索,于2012年开始在我校信息科学与工程学院本科生推广使用新的教学内容和实验课,学生在学习过程中,能够学以致用,体会到了理论课内容在实验课中的指导作用,实验课又加深了对理论课的理解,提升了学生的学习兴趣和学习效率,理论课考试的不及格人数减少了一半以上,实验课成绩优良率大幅提升,达到了很好的教学效果。