主线实验教学法研究

时间:2022-03-21 10:22:00

主线实验教学法研究

1主线实验教学法

在针对教学实验的设计进行大量研究后[11-14],提出了围绕主线实验的教学方案。这个方法的主要特点是将理论和实验融合在一起,建立整个实验阶段的系统性,消除了单个实验的零散性。具体来说,就是设立一个(或多个)终极目标实验以及一些围绕它的阶段性实验,即每个小实验都是在为最终目标做准备,具有承前启后的作用。教师提供各个实验的设计原理、要求、参数,而将具体实现的算法留给大家自己思考。这样,就容易保持学生的实验中的动手积极性,使得他们能有自己的想法并且实现之。同时,通过实验,能够给学生们带来成就感,激励他们的创新意识。通俗地讲,整个实验阶段,就好像是在打一个具有很多关卡的游戏,完成一个小实验就相当于通一关,当完成所有阶段性实验及最后目标实验(打通关)时,那成就感不言而喻。

从理论上而言,在这个模式下设计实验有点类似于EDA中的自顶而下的设计流程。在提出最终目标实验后,教师需要根据理论知识点将其分解为多个模块。当然,为了更多的练习,也可以衍生出更多的相关小实验。在学习相应的知识点后,学生根据各个实验的要求,自行完成程序设计。

2应用

本节以VHDL程序设计课程的具体安排来说明主线实验教学法的教学流程,并以各阶段实验来阐述涵盖的知识点及学习重、难点。

(1)在课程设计时选定主线实验。因本课程性质是全校性的素质公选课,教学内容是介绍基本语法及设计思路。主要知识点涵盖有:基本结构(实体、结构体)、各类并行、顺序选择语句、元件例化、有限状态机等。主要目的是引导学生进入以硬件功能描述的方式来设计电路的领域。所以,选择了带暂停功能的数码二极管时钟显示电路设计作为主线实验。

(2)将选定主线实验分解为几个阶段性实验。其实,这个划分也与功能分块相似。当然,为了教与学,对其进行了一些改动。具体包括(按教学进度排序):译码电路、(带暂停功能的)对时钟信号上升沿的计数器、(带暂停功能的)1位固定位数码管显示电路、1位切换位数码管显示电路。下面对各阶段练习实验进行详细说明。

第1阶段译码电路。这是一个组合电路器件,要求:输入0~9范围内的整数,输出共阴极(或者共阳极)数码管显示该输入数字的7位控制向量。这个器件可以有很多种描述方式,可以使用when_else,with_select,if,case等语句,也可以用纯组合逻辑方式将控制向量的每一位表示出来。在介绍了最基本的结构语法(实体、结构体声明)及简单的选择语句(一般是when_else结构)后,就可以安排学生着手此实验。通过这个实验可练习的语法点很多,除了具体的选择语句,还可以分辨并行与顺序语句结构上的不同。此实验只要求仿真,没有开发板操作。通过该实验,除了语法练习,还要求同学们对开发平台(选用QuartusII)的使用要熟练。教学人员可以根据需要,将其中一、两种方法作为必做题,余下的作为拓展练习。练习阶段,只讲原理及要求,不讲具体代码。激励学生自己动手写。以检查RTL电路图是否是纯组合电路及仿真结果是否正确作为合格条件。

第2阶段(带暂停功能的)对时钟信号上升沿的计数器。这也是一个仿真实验,最基本的要求是对输入的时钟信号的上升沿计数,从零开始数至给定的值再循环,并输出当前的计数以及进位信号。此实验主要是练习使用不完整if语句构成时序电路的方法、数据类型转换等。进一步可以要求增加端口实现异步复位功能,实现同步使能,再进一步实现暂停功能等。特别是暂停功能的实现,经课堂观察,同学们很容易受到一般软件语言工程设计惯性思维的影响。通过此实验,同学们除了能够得到相应的语法练习以外,还能够加深以软件代码设计硬件电路的思想。特别是能具体地理解是综合器将程序映射为相应电路的,与一般高级软件语言设计不一样,并不是所有符合语法规则的代码都能够成功完成预想功能的。这个实验也有很多衍生实验,基本上与计数相关的都能涉及,比如:修改输出的进位信号,可以很容易地拓展为分频器。

上述两个实验是基本实验,对同学们的要求是一定要通过自己的思考来解决,基本上在4或5个课时内大部分认真的同学都能很好地完成。这两个实验也都是仿真类型的,不用上板子测试。经过此两阶段,同学们对QuartusII平台的操作基本上均已熟练,VHDL基本语法的掌握已入门。

第3阶段(带暂停功能的)1位固定位数码管计数显示电路。从这个实验开始,同学们开始接触开发板的使用及多层系统的设计。基本的要求是在开发板的8位数码二极管上使用一位固定位置,每秒计数一次,循环显示计时0~9。进一步,可以加上异步复位功能、暂停功能、更改计数频率等要求。同学们逐步学习如何将软件与硬件相连接,了解开发板的实际性能,体会到仿真结果正确并不能代表硬件设置满足要求,并且能够从开发板的实际使用中发现的问题出发,寻找解决方案,培养独立发现、思考问题的能力,进一步提高大家的激情和创新意识。比如,在仿真时是无法发现按键抖动问题的。在实现异步复位功能时,虽然要求有按键,但也不容易感觉到。只有在实现暂停功能时,才会真正体会到按键防抖的重要性。大部分同学在设计此电路是都能够体会到按键防抖的必要性,大家也能够自行设计方案解决。除了语法学习,根据功能来进行元件划分及调用也是这个实验的一个重要结构训练点。大家逐渐开始有意识在复杂系统中进行功能分块,慢慢开始理解自顶而下的设计思路。

第4阶段1位切换位数码管显示电路。此实验的基本要求是用8位数码管显示一个固定的1位数字,每秒钟切换一个显示位置,8个管位循环显示。进一步可以要求8个位置上的固定数字不同;更改切换位置的频率,寻找8个位置能够同时显示数字的切换频率等。这个实验主要是要求同学们理解数码管扫描显示的原理。据课堂统计,显示固定数字比较容易,但当要求不同位置显示不同数字时,学生容易出现不知道如何将数字显示到对应位置上的问题,对功能模块的划分也需要多次重复设计。总之,这个实验是理解数码管扫描显示的重、难点,需要3个左右的课时才能较好地完成。

在完成这4个阶段实验后,就可以开始进行最终实验的设计了:(带暂停的)8位数码管扫描时钟显示电路。此实验是前面4个实验的系统综合,基本上涵盖了除去有限状态机以外的所有基础语法点。基本要求是利用开发板上的晶振进行计时,并用8位数码管以hh-mm-ss格式显示。进一步,可以要求异步复位、暂停等功能。这个实验对同学们的考查,从结构上来说,是对复杂系统的功能模块划分;从语法来说,是基本上所有的基础语法点;从操作来说,是QuartusII平台的整体设计流程及开发板上晶振、数码管、按键等器件的使用。具有很强的综合性。这个实验涉及多次分频,据课堂观察,虽有前面实验做铺垫,但在刚开始时,有部分同学仍然对功能模块划分不够熟练,直接使用if语句嵌套计数来计时。部分同学有分频的意识,但也未使用多层次器件设计的模式。当然,这样设计的器件从功能上来讲是成功的,但整个程序的可读性不太好,代码的可复用率也较低。在自行设计阶段完成后,教师可对同学们的设计进行总结,邀请几位设计思路有特色的同学来分享交流。在从功能模块划分角度稍作分析解释后,大部分同学能够对自己的器件重新进行模块划分、设计,基本上程序可读性会有很大提高,整体电路图层次、分块清晰。

在本课程中,还设计了选做的扩展实验:1路交通信号灯数码管及LED灯显示电路。基本要求:利用有限状态机设计,仿照交通灯让红黄绿三色LED灯循环亮固定时长,同时用数码管显示倒计时。因为开发板上并未设置红黄绿三色LED灯,所有相应接口需要从开发板原理图上查找而得,所以这个实验可以训练同学自行查阅资料的能力,培养兴趣。经过前面实验的练习,这个实验成功率很高。

3结语

在前几届授课中,基本上都是采用传统的教学模式,虽然采用了理论课时与实验课时的交替教授方法,实验练习也设计得不少。但是从实验课堂答疑发现同学们的动手积极性并不高,设计进度也比较缓慢。自从最近2年开始采用主线实验教学法后,3学期共6个实验班,效果可谓越来越好。同学们理论学习,实验动手的积极性都有很大提高。特别是在一开始实验时,就提出了最后目标,不少同学课下自行查阅相关资料。由于整个实验阶段具有很强的系统性与循序渐进性,同学们在整个阶段中都能够保持很高的动手热情,每个阶段实验练习时,不时提出新的设计方案,最后综合实验的完成率也比往年大有提高。

经过近2年的教学,发现主线实验教学法非常适合语言类课程入门阶段的教学。系统性的实验能够让同学们从一开始就有目标;循序渐进的阶段实验能让大家一直保持学习的激情;完成一个阶段时,又能够找到学习成就感;每个阶段可有多种方案,这又可以培养大家的创新意识;实验中,特别是需要结合硬件开发板的时候,可能碰到的各种硬件问题,又可以给大家提供独立发现、思考、解决问题的机会,提高了同学们进行科学研究的能力。

现在的实验方案主要是针对入门教学等级的,我们准备进行更深入的研究,为更加有效地发挥实验教学在创新型人才培养中的作用,针对不同学习深度的要求设计出更多的主线实验。

作者:黄方剑 单位:电子科技大学