数字逻辑电路课程设计实验教学改革与实践
2018-06-01龙胜春胡海根卢书芳
肖 杰,李 强,龙胜春,胡海根,卢书芳
(浙江工业大学 计算机科学与计算学院,浙江 杭州 310023)
0 引 言
数字电路与数字逻辑课程是计算机科学、计算机+自动化等专业本科生在硬件技术方面的专业基础必修课。通过该课程的学习,学生能够获得数字电路与数字逻辑方面的基本理论、基本知识和基本技能,理解数字电路的工作原理及应用,掌握数字电路的分析与设计方法,为后续相关课程的学习奠定基础。在物联网发展大背景以及教育工程专业认证的大环境下,社会发展对学生提出了更高的要求,要求学生能够根据特定需求对复杂计算机系统的子模块或子单元进行软硬件设计和实现,理解计算机系统工程化管理的概念与方法[1-2]。
然而,当前的教学实践主要通过设计一定的课内实验,使学生掌握常用电子仪器的使用方法和常用中大规模集成电路的装配方法,加深学生对数字电路与数字逻辑有关理论的理解,以此培养学生分析设计和解决实际问题的能力[3]。这些设计实验不具备复杂工程问题背景,学生难以在设计过程中体会相应的思想和方法以及提升足够的创新意识,也没有融入社会、健康、安全、法律、文化、环境等因素的考量,而这些因素是当前计算机专业学生需要进一步提升的素养,也是当前学生创业、创新实践中所需的内容[4]。
我们在实际教学过程中还发现,计算机专业学生往往表现出更加擅长软件编程,在硬件方面则较为薄弱,具体表现为对硬件缺少了解或者缺少兴趣。目前采用VHDL语言开展逻辑电路设计的实践性教学,对计算机专业学生来说还是较为困难,主要在于缺少相应课程的支撑从而造成学生缺乏EDA编程基础,难以在短期内快速掌握VHDL语言。因此,在实验教学过程中,利用类C的Verilog HDL语言,结合学生擅长软件编程的基础,通过融入数字逻辑电路知识的学习与实践,便可较好地在复杂工程综合设计与运用方面锻炼学生的能力。
1 实验教学改革与实践思路
一般来说,数字电路与数字逻辑课程计划学时数为64学时,其中授课56学时,实验8学时。该课程的课内实验8学时只局限于基本数字逻辑电路知识的练习,定位于基本电路的练习和掌握,见表1。显然,这还不足以支撑该课程教学内容以达成其教学目标。
表1 数字电路与数字逻辑课程课内实验安排
为了进一步提高学生的实践动手能力,特别是学习现代数字系统设计方法,开展共计20个学时的数字逻辑电路课程设计实验课程是有必要的。该课程最初采用VHDL语言,然而从近几年计算机专业学生的实验效果来看,教学效果并不理想。主要原因有两点:①VHDL较为复杂,计算机专业学生没有EDA编程基础,难以灵活运用该工具语言进行电路设计,实践中大都采取“依葫芦画瓢”的方式,缺乏主动思考和分析,不利于充分发挥学生的主观能动性;②当前工程领域中,较多企业采用Verilog HDL进行电路设计[5]。
1.1 课程教学思路的改革
针对计算机专业的特点与现状,该课程初步安排了4个理论学时和16个实验学时进行展开,同时还要求学生自主安排相应的课外自学课时。
理论教学的安排见表2。首先讲授FPGA结构和原理,有利于学生快速熟悉数字逻辑电路的设计与实验平台;其次讲授Verilog HDL语言,便于计算机专业学生快速掌握这一门类C的硬件设计语言;最后借助一个简单的数字系统设计方法的演示案例,使学生初步掌握电路的基本设计方法与技巧。
表2 数字逻辑电路课程设计理论教学安排
理论教学完成后,再安排“2必做+1自选”的实验操作与设计内容。需要说明的是,必选题目侧重于学生掌握基本知识和熟悉操作;自选题目则充分参照公司项目的操作流程,需要学生组队完成市场调研、分析设计、确定开发工具、项目实现、评估优化、开发说明书等环节,最终通过项目演示与答辩的形式通过验收评价。
1.2 实验课题的设计
实验课题的安排见表3。
表3 数字逻辑电路课程设计实验操作安排
1.2.1 必做课题1:12进制计数器
实验要求:基于原理图设计12进制计数器,原理框图如图1所示,状态转换图如图2所示。计数脉冲由实验板上的按键产生,计数值通过LED数码管显示,由EDA软件自带元件库提供的74192(十进制加减计数器)和7447(共阳7段LED显示译码器)元件构成。
1.2.2 必做课题2:4位数字频率计
实验要求:①分别采用自顶向下与自底向上的设计方法进行设计。顶层设计可采用原理图,也可采用Verilog HDL语言描述,底层模块均通过Verilog HDL语言描述;②系统的输入标准时钟信号频率为1MHz,可测量的频率范围为1~9 999 Hz;③系统具有复位信号且有溢出指示,计数频率通过4位共阴数码管显示。
1.2.3 自选课题3
学生可自由选择3个题目中的1个进行设计实现。自选题目的整个实验过程参照实际工程项目的实施流程来实施。首先,学生进行自由组队,2~3人/组,其中,1~2人负责市场调研(以确定拟采用的元器件型号)、电路结构设计、产品测试等,1人负责模块代码设计;其次,根据市场调研结果,确定所采用的元器件具有较小的成本,并确定所设计的电路结构具有较高的可靠性以及较强的可操作性,然后开展项目任务的设计、开发与测试;最后,完成报告的撰写以及答辩材料的准备,并进行答辩,需要注意的是内容上要求完整,包括项目设计目的、结合调研结果的总体方案设计(设计要求、方案论证与选择、设计思路及原理)、单元模块设计、顶层设计、系统功能仿真及调试、总结与体会、参考文献、源代码等。
图1 12进制计数器原理框图
图2 12进制计数器状态转换图
(1)自选题1:出租车计费器的设计与实现。要求实现如下功能:①实现计费功能,计费标准:按行驶里程计费,起步价为7.0元,并在行驶3 km后按2元/km计费,当计费器达到或超过20元时,每km加收50%的车费,车停不计费;②现场模拟功能:以开关按键模拟km计数,能模拟汽车启动、停止、暂停等状态;③将车费和路程分别以10进制形式显示出来。
(2)自选题2:智力抢答器的设计与实现。要求实现如下功能:①实现5人抢答器,一旦有人抢答成功,其他人则抢答无效;②在数码管上显示抢答成功者的序号;③抢答成功后开始20 s的答题倒计时,当倒计时结束,通过蜂鸣器响1 s提示回答问题时间到,并开始新一轮抢答,且数码管要显示倒计时开始所剩时间;④主持人可通过按键清除所有信息。
如图3所示,经过多次试验发现,该打磨机器人从端口最低点出发,在沿端口周向转动进行打磨的过程中会发生打滑失效,尤其在的转角范围内明显存在一个打滑失效区。发生打滑失效的原因是压紧力过小,也就是说,施加的预紧力在垂直方向的分力小于摩擦力和重力在该方向的合力,机器人在惯性的作用下发生打滑失效,这说明机器人发生打滑失效与预紧力、摩擦力及其自身重力等因素有关。
(3)自选题3:数字闹钟的设计与实现。要求实现如下功能:①具有基本的计时功能;②闹钟时间可调;③闹钟时间到通过蜂鸣器响30 s,中途可以通过按键停止;④若无外界干预,闹钟每隔3 min响一次,直至15 min后结束。
1.3 考评体系的设计
答辩过程主要由学生PPT展示和教师问答环节构成,使用分组答辩,每组2位老师,再根据实际情况邀请校外专家。首先,学生进行系统演示;其次,学生展示PPT进行答辩;最后,教师点评。
学生成绩由以下几部分构成:功能实现(包括测试)占比50%,可靠性评价[6]占比10%,代码质量评价占比10%,成本开销占比10%,报告完整性占比10%,回答问题占比10%。
2 改革与实践成效
从实验过程及结果的反馈来看,针对FPGA结构和原理、数字系统的设计方法这两部分内容,绝大部分学生能较好掌握,对于Verilog HDL语言基础的掌握情况则相对较差。一方面,前面两项内容相对简单且学生有较好的程序设计基础,掌握起来相对容易;另一方面,学生平常接触更多的是串行化的程序设计风格,对Verilog HDL的并行化程序设计风格还不太熟悉,因此实践过程中较容易犯错。
实验1的目的是让学生通过简单设计实例熟练掌握Quartus II的基本操作,包括设计输入、编译、仿真、管脚锁定与下载,并熟悉DE2实验板。实验结果显示,学生均能通过基于原理图方法实现对12进制计数器的设计与仿真。
实验3的目的是让学生将Verilog HDL编程与实际工程结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干方法,进一步提高上机动手能力,培养使用设计综合电路的能力和规范编程的思想,养成提供文档资料的习惯。通过这个实验,学生可以进一步理解触发器、计数器、锁存器等的工作原理,掌握利用Verilog HDL行为描述综合数字系统的基本方法。尽管在5 h的时间内,没有学生能完全正确地完成这个实验的设计与仿真,但他们在课外的几个星期里仍然探讨并最终基本完成了这个实验。虽然学生未能充分结合市场调研结果设计出一个低成本、高可靠性的产品,但是培养了把控产品成本与可靠性的意识、设计综合电路的能力及团队协作精神。
总之,这些实验课题的设计在安排上是从基础逐渐过渡到扩展提高的能力要求。通过设计12进制计数器,学生可以进一步巩固和加深对相关课程基本理论和概念,提高综合运用所学知识的能力;而4位数字频率计能使学生掌握自底向上和自顶向下的设计方法,充分感受这两种设计方法的特点。设置一些有趣的自选课题,能调动学生的积极性,促使学生进行独立分析,最终实现这些具有一定工程复杂性的设计课题,培养学生综合设计和实践创新的能力,并在此过程中培养团队合作能力,初步了解工程项目开发实践流程。
为了更好地了解本课程设计实验教学的效果,我们在开课前后分别设计了一套匿名问卷并在学生中进行调研。结果显示,大部分学生还是对硬件感兴趣的,如在开课之前虽然几乎所有学生没有接触过VHDL这样的硬件开发设计语言,但是仍有35%的学生对硬件开发感兴趣,并且认为学习VHDL或者Verilog HDL今后会有用。然而,受限于数字逻辑电路理论课的学习,高达80%的学生认为自己只会基于原理图完成简单电路的设计,无法独立完成更复杂的电路设计或者对电路进行功能与时序测试。
通过本课程设计的学习,90%的学生对硬件开发感兴趣;83%的学生认为有必要多开设一些硬件相关的工程实践类实验课程;78%的学生认为实验课题设置合理,通过查阅资料并结合教师课堂所讲授知识可以完成实验。某组学生自选课题的部分实验结果展示如图3所示。此外,也有20%左右的学生认为需要教师更详细地讲解并提供更多的相关资料;还有10%左右的学生反映对自选课题毫无头绪,不知从何着手。
图3 某组学生自选课题部分实验结果展示
针对学生反映的问题,我们采取了如下措施帮助学生顺利完成课题设计任务:①利用教师与学生的业余时间额外开设了4学时的理论教学课程,供需要的学生自愿听课;②通过开通即时聊天的群聊与单聊模式、公布移动电话号码等方式,方便教师随时随地为学生答疑。从实际效果来看,相比第①种方式,第②种方式明显更优。
3 结 语
在数字逻辑电路课程设计的实验教学改革过程中,我们采用Verilog HDL开展设计性实验,并设计“2必做+1自选”逐层递进实验课题的实践,使学生理解数字电路的工作原理及应用,掌握数字系统的基本设计流程与方法,熟悉复杂电子系统的相关技术标准、知识产权、产业政策和法律法规;此外,通过产品的可靠性分析与成本测算,培养学生的产品质量与成本控制意识。自选题采用团队方式开展,以项目答辩的方式进行考核,充分锻炼学生的团队协作和综合设计开发能力。从实验效果来看,针对计算机专业学生的该项实验教学改革是有效的,但是实验过程中也暴露出一些不足,如学生还难以熟练运用Verilog HDL进行复杂电路设计,未能扬长避短设计出更为合理的实验课题以适应当前计算机行业的发展需求等,这也促使我们在今后的实践教学中进一步探索,不断深入和完善。
[1] 中华人民共和国教育部. 工程教育专业认证标准(试行)[EB/OL]. [2017-12-30]. http://www.moe.edu.cn/s78/A08/gjs_left/moe_742/s5638/s3861/201110/t20111008_125419.html.
[2] 赵宏, 王恺. 我国大学计算机课程现状及改革探索[J]. 中国大学教育, 2015(2): 50-54.
[3] 龙胜春, 孙惠英, 肖杰. 电路与电子技术基础实验指导[M]. 北京: 清华大学出版社, 2015: 1-59.
[4] Palnitkar S. Verilog HDL: A guide to digital design and synthesis[M]. 2nd ed. New Jersey: Prentice Hall Press, 2003: 226-237.
[5] Ciletti M D. Verilog HDL高级数字设计[M]. 2版. 北京:电子工业出版社, 2014: 1-4.
[6] Xiao J, Lee W, Jiang J, et al. Circuit reliability estimation based on an iterative PTM model with hybrid coding[J]. Microelectronics Journal, 2016, 52(4): 117-123.