FPGA实验教学中的趣味性探究
2017-09-04杨敏王芳龙艳花
杨敏+王芳+龙艳花
摘 要 工科实验往往被认为是严肃无趣的,如果能打造一些趣味实验,对吸引学生的课堂投入有很大的促进作用。在FPGA课程教学中,如何通过增加实验的趣味性提高学生对实验的专注度和主动性,值得去探究。通过“打地鼠”实例,具体阐述趣味实验的开展过程。
关键词 FPGA;趣味实验;实验教学;系统设计
中图分类号:G652 文献标识码:B
文章编号:1671-489X(2017)12-0139-02
1 引言
增强课程的趣味性在中小学教育中比较提倡,普遍认为是符合学生身心发展规律的举措,满足学生爱说、爱玩的特点。趣味课堂能够有效促进知识吸收,到了大学阶段却鲜有提及。目前高校中对课程内容及课程实验趣味性的尝试主要发生在体育、艺术类学科,而在工科尤其是信息学科范围内非常少见。其实大学生正处于精力充沛、求知欲强的年龄阶段,正需要在专业方向和人生目标上得到正确的指导。
工科知识普遍语言平实,偏重严谨的逻辑思维和大量的实践操作,加上教师授课时一板一眼、不苟言笑,工科给学生留下“艰深”“古板”“无趣”的印象,往往还没开始学就已经抗拒了。如果教师在课堂上能够适当加入一些趣味性的内容,结合一些好玩的游戏,引入身边常见的电子、科技元素,使学生在轻松愉悦的气氛中进行主动探索,有助于吸引学生将精力更多地投入问题钻研、任务解决中,顺利实现知识的消化和创新。笔者在将FPGA课程的实验环节改造成趣味实验以来,学生的实验完成主动性和自我评价都有很大提高。
2 FPGA课程中的实验设置
FPGA(Field Programmable Gate Array,现场可編程门阵列)课程是很多高校电子与信息类专业的必修科目,主讲VHDL/Verilog HDL语言在FPGA器件上的开发编程方法。由于VHDL/Verilog HDL这一类硬件描述语言在FPGA开发平台上的可移植性很好,实验前不需要预先选择特定的器件,也不必对具体目标芯片的器件结构有非常细致的了解,因此,很多教材包括国外的教材[1-2]都是花大篇幅介绍硬件描述语言的语法规则,做编程的基本训练,而很少介绍硬件有关的内容。在硬件描述语言的编程训练上,又停留在常见组合逻辑电路和常见时序逻辑电路的描述阶段,如各种码制转换电路、多位加法/减法器、计数器、移位寄存器和简单的状态机等中规模数字逻辑电路的独立设计。这些实验编程简单,电路规模小,强化了某一种基础电路的训练,对掌握FPGA的开发有非常重要的奠基作用,但仅有这些是不够的。
FPGA不仅自身具备实现高速复杂数字逻辑的强大功能,近年来更在SOPC(System On Programmable Chip,可编程片上系统)方向上迅速发展,以FPGA为核心加部分可选外围设备的软硬件协同设计,在电子制造和测试领域有着越来越成熟的运用。要让初学者通过一门课程了解到,课程实验中除了要有简单的基础实验,还必须有相对复杂的芯片级系统设计,将基本组合逻辑与时序逻辑做出各种整合,暂且把这部分内容叫作提高实验。提高实验决定了学生对FPGA开发能够达到的认识高度,具有系统性、综合性、完整性的特点,难度必须适中。很多学生也是真正从这里开始领会FPGA与其他电子芯片的根本区别,了解FPGA作为逻辑开发首选器件的优势,体会电子设计的艰难。
现有的很多FPGA教材,要么缺少这个部分,要么直接给出CPU设计这样的更高难度的综合实验,并不适合作为给定课时下的课内实验。那么,如何挑选和规划提高实验,是教师需要重点考虑的部分。而为了学生在实验过程中能够顺利地实现过渡,提高设计水平的同时减少畏难情绪,趣味实验是较好的选择。
3 趣味实验的开展
以打地鼠实验为例,打地鼠是日常流行的一个小游戏,基本上所有学生都熟悉它的游戏规则,但对它的印象只停留在游玩项目繁多、声音嘈杂的游戏室里。当这个主题和画面出现在实验室里时,学生的情绪会很快被回忆调动起来,积极地配合实验要求即游戏规则去思考如何在FPGA的平台上实现打地鼠游戏,因为这里的实验要求不再是古板的、疏远的,而是亲切的、生动的。一方面,把游戏作为实验,学生会切身感受到游戏中的快乐;另一方面,当学生完成思考的时候,会有一种把生活科技掌握在手的感觉,对后续的设计工作充满自信。游戏程序的模块划分如图1所示,软件功能上主要包括地鼠显示模块、计分模块和计时模块。从设计原则上看,打地鼠这个系统里囊括了FPGA课程中需要教会学生的多个元素。
现代电子系统设计自顶向下的设计方法 以实现整个游戏的功能作为设计目标,需要学生全盘考虑顶层设计:这个设计任务应该划分为多少个子模块?各个子模块之间又有怎样的相互联系?尽管顶层设计的程序需要放在后面完成,但这种从系统全局出发的思考是进行高层次电路设计必经的思路。
顶层程序设计的输入输出端口与FPGA器件引脚之间的对应关系 需要学生从系统功能出发,分析出设计这个系统需要哪些输入输出端口?各有多少位?还要结合实验室使用的FPGA开发板,考虑选择哪些输入元件才能让敲击的动作更快更顺手?选择开发板哪些位置上的输出元件才能让显示部分安排得更加清晰合理?使用LCD显示屏更好,还是使用多个七段数码管更好?等等。最后通过查找开发板使用手册,自行定义设计端口与器件引脚的分配关系。
系统中包含多个重要的常见逻辑电路设计 从游戏功能分析,系统中必须包含多个显示模块,包括地鼠位置的显示、游戏分值的显示和游戏时间的显示,涉及多位二进制数转换为BCD码并在七段译码器上显示的码制转换设计,是重要的组合逻辑电路,分秒计时和游戏计分都是计数器基本功能的修改,是重要的时序逻辑电路。其中隐藏的分频电路设计是每一个实用型系统设计所必需的,也属于时序逻辑。
在实验过程中,根据实验内容划分为3~4课时,难度分为两级。计分模块与计时模块设计方法相近,都包含两位数BCD码的转换,属于第一级难度,Verilog HDL模块的大体结构如下:endprint
case (xx%10) //数值的个位
……………
endcase
case(xx/10) //数值的十位
……………
endcase
因此,将学生每两人编成一组,两位学生先分别负责第一级计分模块与计时模块的编程实现,再合作完成第二级难度分频模块和顶层模块的设计,在硬件实现层面也是由两人相互配合查找手册和部署引脚。在实验过程中既有合理分工又有合作,每位学生结合自身游戏经验增加对设计的理解,是促使这个实验相对于其他同等难度的实验能够更快速有效完成的重要因素。
在FPGA教学过程中,类似可选的实验内容还有很多,只要符合以下两点要求。
1)实验内容生活化,可以是孩童时期玩的游戏,也可以是日常生活中的常见电路,只要它们的操作规则和结果是学生熟悉的,就不会把实验作为深奥严肃的学术课题而敬而远之。
2)实验内容不能过于简单,应该在一个实验中包含若干个组合和时序逻辑基本设计,通过几个实验覆盖FPGA课程全部知识点。实验内容也不要过于复杂,应该在进行拆解之后,保证1~2次的实验课内能够完成。
符合这两点要求,实验主题的选取未必需要教师一手包办,如果可以由学生自主设计一些趣味实验,更能提高学生的自主学习能力[3]。实验的趣味性不仅仅体现在实验方案和实验内容上,在组织实验过程、讨论实验结果等阶段,均可以考虑加入趣味的设计环节[4],不断激发学生的积极性和创造性。
4 总结
FPGA课程针对本科中高年级学生开设,是数字逻辑电路课程之后进行電路系统设计的重要拓展。为了学生能够尽快投入系统设计提高实验,实验过程应包含有生活化、趣味性的内容,寓学于玩、寓教于乐,更能提高学生的主观能动性和创造性。
参考文献
[1]Ciletti M D. Verilog HDL高级数字设计[M].李广军,等,译.2版.北京:电子工业出版社,2014.
[2]Cavanagh J. Digital Design and Verilog HDL Fundamentals[M].CRC Press,2008.
[3]马书云,王慧,吴方平,等.自主趣味实验提高自主学习能力的实践[J].实验室技术与管理,2015(9):194-196.
[4]黄飞腾,翁国庆,吴建元.大学工科实验趣味教学法探讨[J].中国电力教育,2013(7):160-161,184.endprint