王巧兰
[摘 要]Multisim提供了强大的学习功能和实验室硬件集成,可帮助学生在整个工程和理论课程中轻松学习电子电路的基本概念和应用知识。FPGA技术更新快,从芯片、软件到各类参考书籍都层出不穷。因此在教学中强调形成电子自动化设计的思路,在教学中要求熟悉FPGA器件的开发环境Quartus软件、硬件编程语言(VHDL或Verilog HDL)基本语法和图形化编辑方式,在FPGA开发板上完成基本运算逻辑、组合逻辑设计、时序逻辑设计和状态机等。所完成的设计内容贴近教学内容且循序渐进,使初学FPGA技术的学生能快速上手,激发学生的学习兴趣并提高科创能力。
[关键词]EDA技术;数字电子技术;案例
[中图分类号] G642.0 [文献标识码] A [文章编号] 2095-3437(2016)11-0167-04
一、引言
“数字电子技术”课程是自动化、电气、电子信息等相关电类专业的核心专业基础课之一,该课程由理论教学和实践教学两部分有机组合。其中实践教学对学生掌握电子技术基础知识,培养学生的实践操作、团队合作精神、分析并解决问题、创新等能力起到关键作用。因此,如何加强数字电子技术实验课程教学,以更好地巩固理论知识并提高实践能力,是理工科大学生培养的重要环节之一。
随着电子技术的快速发展,EDA(Electronic Design Automation电子设计自动化)技术在现代电子设计领域的地位使其成为电子技术课程中必不可少的教学内容。在许多优秀教材中都增加可编程逻辑器件和硬件描述语言等EDA内容。传统的电子技术实验虽然能让学生更好地理解掌握器件性能及具体应用,但受实验箱端口、芯片数量及连线限制,传统实验只能完成验证性实验和较简单的电路设计及实现。引入EDA技术能很好地补充传统实验的不足,同时也为后续的数字系统设计提供很好的基础。因此如何利用EDA技术更好地辅助教学是顺应发展趋势。众多学者给出了许多教改方案,如实验内容与实验体系、实验教学方法、EDA设计仿真技术、项目教学法等,这些教学方案也取得一定的效果。而本文主要是从案例的方面探讨EDA技术在数字电子技术教学中的应用,既有利于学生理解理论知识,又培养学生一定的综合分析能力、开发和创新能力。
知识的膨胀与学时有限的矛盾也是日益突出,因此如何在不额外增加学生学习压力的前提下,尽可能地提高教学有效性也是需要进行探索的方面。
二、总体方案
利用NI的Multisim软件虚拟电子元件和电路辅助理论教学。该软件的可视化仿真实现“软件即元件”、“软件即仪器”,能形象、生动、快速地设计、测试和演示各种数字电路。在掌握数字电路分析和设计的基础上,再结合可编程逻辑器件FPGA开发板推进综合数字系统设计。通过这也是本文主要阐述的内容。
因为教学课时有限,因此可将Multisim仿真和可编程器件的知识通过短视频讲解的方式放在教学群共享里。引导学生利用零碎的时间学习并完成相应的任务,将理论分析设计知识应用到具体的仿真和系统设计中。在课堂教学中挑选几个典型案例进行分析、讲评,以便学生更好地理解合理设计、修改错误、避免同类错误等,最终达到有效教学的目的。
(一)Multisim在教学中的辅助应用
Multisim广泛地用于模拟电路和分析、数字逻辑电路、微控制器、电力电子与系统、学生设计和科研项目中,它已受到国内外教师、科研人员和工程师的广泛认可,称为先进SPICE仿真标准环境。
为了让学生能更好地理解器件功能及电路分析设计的能力,引入Multisim能有效促进学生的知识理解,提高创新思维能力和学习主动性。以常见的中规模器件译码器设计为例。
设计一个交通灯故障检测电路,要求红、黄、绿三个灯有且只有一个灯亮,则正常;无灯亮或有两灯以上亮均为故障,则输出故障信号。要求使用译码器和少量门电路设计。
1.将文字的设计要求转换为数字逻辑表达形式,即逻辑抽象和列真值表,如表1所示。
输入变量:红(R)、黄(Y)、绿(G);亮为1,灭为0。
输出变量:故障信号(Z);故障为1,正常为0。
2.列出符合目标器件的逻辑表达式。
根据真值表写出表达式:Z=R′Y′G′+R′YG+RY′G+RYG′+RYG。由于译码器的输出是m的形式,所以需要转换表达式。转换后的结果为:
Z=Σm(03567)-Σ(m′m′m′m′m′)′。
如果直接按该式则译码器输出端的连线会比较多,因此采用圈0取反的形式则更简洁。
3.画出逻辑电路图,如图1所示。
在许多理论书上,到这一步可能就结束了。学生对器件的认识和逻辑电路应该怎么实现设计要求可能还是觉得比较抽象。而实验操作课的课时又有限,不能每个器件或电路都进行搭建并观察现象。因此利用Mulitisim的可视化功能能有效地提高学习效率。
4.在Multisim中搭建实现电路,并观察分析现象。
利用发光二极管来模拟红、黄、绿三个交通灯,在输出端用发光二极管来指示是否故障。根据逻辑门的技术参数可知:对TTL器件而言高电平时输出电流较小,低电平时输出电流较大;而发光二极管流过电流至少要几个毫安才能发光,因此可以选择在原有逻辑电路图的输出端增加非门。为了满足尽可能少的器件,可将逻辑电路图的与门转换为与非门。具体的仿真电路如图2所示。
图中显示红灯和绿灯都亮时,故障指示灯ALARM亮。通过仿真学生能直观地掌握设计到电路实现的整个流程,而不仅仅停留在设计阶段,同时举一反三地仿真其他电路。对译码器和逻辑门的功能有较深刻的认识,对发光二极管的导通压降和流经的电流值有更确切的理解,并根据发光二极管的电流要求选择合适的限流电阻值。
(二)可编程逻辑器件在综合数字系统中的应用
传统的电子技术实验和Multisim仿真虽在电子电路分析设计中有较大的优势,但对于综合数字系统设计则具有一定的局限性。目前,在综合数字系统设计方面,基于可编程逻辑器件的设计是电子自动化设计的发展趋势,它更注重层次化设计思想。以FPGA为代表的可编程逻辑器件的设计受到学校和企业的普遍重视,掌握FPGA技术也是新技术发展的热点之一。
这里以99s数字秒表设计为例。要求:误差小于0.1s;设置外部操作开关,控制计时器启动计数、暂停/连续计数。
根据设计要求可知,该电路由秒脉冲发生器、计数器、译码显示电路和辅助时序控制电路等五部分组成。具体原理框图如图3所示。秒脉冲发生器由555多谐振荡器或石英晶体通过分频实现;计数器采用加法计数器,能暂停、清零、设置计数范围;数码显示需用到译码驱动,根据所用数码管是共阴型或共阳型来选择相应的译码驱动器。控制电路能实现暂停/启动计数、开关去抖动等功能。这样通过这个小系统的电路设计,将组合逻辑、时序逻辑、脉冲产生等电路知识有机结合起来。具体Multisim仿真如图4所示,图中的脉冲产生采用555多谐振荡器。通过设计、仿真、电路焊接和调试,能很好地掌握MSI逻辑电路的分析设计、元器件参数值的计算和选择、测量调试等。
通过99s数字秒表电路,学生能很好地掌握555、逻辑门、计数器、译码显示器、数码管等器件原理和应用;硬件制作过程也较顺利。但是一旦设计要求提高,电路复杂度也随之增加,再用这种设计方法则存在较大的限制,且硬件制作时出错的概率也会大幅提高。在掌握数字逻辑基础的前提下,利用可编程逻辑器件来提高数字系统设计的能力。
制作数字系统设计相关知识的短视频,并上传到教学群共享;根据数字逻辑课程进度要求学生完成短视频的观看并完成相关的练习。学生通过时间碎片的学习掌握硬件编程语言基本语法,使学生逐步掌握一些基本的组合和时序逻辑电路实现方法。这样就能设计一些简单的逻辑电路和系统,进而过渡到后续的复杂数字系统设计。以前面99s数字秒表为例。
根据图3中99s数字秒表原理框图可知数字秒表需要产生秒脉冲、计数、译码显示等模块。
1.秒脉冲
由于FPGA开发板使用的晶振为50MHz,所以要得到1Hz的信号,需经过50 000 000次分频,通过分频程序即可实现。
2.计数
99进制计数程序如下所示,通过少量的语句就可以实现99进制计数。计数模块使用率高,因此可将计数模值设置为parameter参数值,每次使用只需修改parameter值即可。
always @(posedge clk or negedge rstn)
if(!rstn)
begin rcount_h<=4′d0;rcount_l<=4′d0;end
else if(rcount_h==4′b1001 && rcount_l==4b1001)
begin rcount_h<=4′d0;rcount_l<=4′d0;end
else if(rcount_l==4′b1001)
begin rcount_h<=rcount_h+1;rcount_l<=4′d0;end
else
rcount_l=rcount_l+1;
assign count_num[7∶4]=rcount_h;
assign count_num[3∶0]=rcount_l;
3.显示译码
由于计数时采用的8421BCD码,因此要将8421BCD计数值译码转换为七段数码管显示所需的段驱动。这里以共阳极数码管为例给出显示译码的部分程序,设置好参数后,只需采用case选择语句就能完成显示译码。相应地,程序编写也能有助于学生理解译码器件的功能表。
parameter_0=8b1100_0000,_1=8b1111_1001,_2=8b1010_0100,_3=8b1011_0000,
_4=8b1001_1001,_5=8b1001_0010,_6=8b1000_0010,_7=8b1111_1000,
_8=8b1000_0000,_9=8b1001_0000;
4.动态显示和扫描
如果采用静态显示的方式会耗费较多的I / O口,因此通常采用动态显示的方式。通过分频得到1ms的扫描时钟信号。在第一周期将计数值count_num[7∶4]送往第一个数码管并扫描第一个数码管(使能),在第二个周期将计数值count_num[3∶0]送往第二个数码管并扫描第二个数码管(使能)。动态显示和扫描都可以通过简单的case语句来完成,这里就不再列出。
5.顶层原理图
各子模块都分别实现并通过测试后,就可以在顶层组合成主模块进行功能仿真和时序仿真,根据硬件资源分配管脚,最后下载到开发板进行验证。顶层用图形化编辑方式能更加直观地显示各模块的位置及数据流的方向。具体顶层图如图5所示。顶层原理图仿真调试通过后就可以下载到开发板验证。
该设计方法可以快速地扩展为电子时钟的设计、频率计设计等,许多模块的程序可以复用,因此增加的工作量很少。
(三)不同EDA技术在数字电子技术实验应用中的比较
通过前面的具体案例分析可知:Multisim仿真能够很好地辅助教学,促使学生更好地掌握分立元件和中规模器件的功能和具体使用,能直观地观察节点测量值和运行结果。但对于系统的扩展或者较复杂的电路则存在一定的限制。可编程逻辑器件则特别适合于复杂的数字系统开发设计,也顺应电子系统设计的发展趋势。因此在实验中将两者有机结合能更好地提高学习效率并奠定一定的复杂系统设计基础。
三、结论
本文通过案例分析的方式讨论EDA技术在数字电子技术实验中的应用。Multisim提供了强大的学习功能和实验室硬件集成,可帮助学生在整个工程和理论课程中轻松学习电子电路的基本概念和应用知识。FPGA技术更新快,从芯片、软件到各类参考书籍都层出不穷。因此在教学中强调形成电子自动化设计的思路,在教学中要求熟悉FPGA器件的开发环境Quartus软件、硬件编程语言(VHDL或Verilog HDL)基本语法和图形化编辑方式,在FPGA开发板上完成基本运算逻辑、组合逻辑设计、时序逻辑设计和状态机等。所完成的设计内容贴近教学内容且循序渐进,使初学FPGA技术的学生能快速上手,激发学生的学习兴趣并提高科创能力。
强调EDA技术在数字电子技术教学中的应用,希望学生能独立思考,寻找最适合自己学习、实践的方式方法。在后续学习中能结合传感器等相关课程完成相应的课程设计、科创项目、电子竞赛、毕业设计等,尽可能地达到有效教学的目的。教学经验结果表明,大多数同学能更好地掌握知识点并较快速地将EDA技术用于电子竞赛和大学生创新项目中。
[ 参 考 文 献 ]
[1] 姚福安,徐向华,高宁.“电子技术基础”实践教学体系的建设与探索[J].实验室研究与探索,2014(10).
[2] 王波,张岩,王美玲.“数字电子技术实验”课程的改革[J].实验室研究与探索,2012(9).
[3] 阎石.数字电子技术基础(第5版)[M].北京:高等教育出版社,2006.
[4] 夏宇闻.Verilog数字系统设计教程(第3版)[M].北京:北京航空航天大学出版社,2015(6).
[5] Mark Zwolinski.System Verilog数字系统设计[M].北京:电子工业出版社,2011.
[6] 杨春玲,朱敏,张岩.数字电子技术基础研究性教学方法的探索与实践[J].中国大学教学,2014(2).
[责任编辑:张 雷]