王开宇, 赵海博, 秦晓梅, 赵权科, 张 晶
(1. 大连理工大学 电工电子国家级实验教学示范中心, 电工电子国家级虚拟仿真实验教学中心, 辽宁 大连 116024; 2. 大连理工大学 电信学部, 辽宁 大连 116024)
目前高校实体实验教学使用的FPGA开发板一般是专业版,存在结构复杂、价格高、输入输出形式单一的问题;而价格较低的FPGA开发板则功能不全。这两种形式的开发板均无法提供给学生复杂应用的实验教学环境[1]。随着Web技术、虚拟现实技术的推广与应用[2],许多高校建设了具有较高水平的虚拟实验室,开发了种类繁多的虚拟仿真实验平台,为教学工作提供了便捷的途径[3]。
但是,电类专业所用的基于FPGA系列开发板的虚拟实验[4],大多数以演示实验为主,学生编写程序模式较为死板;相比于实物实验,虚拟实验的灵活性、容错性也较差[5]。
以数码管实验为例,传统的FPGA实验虽然只需要简单的连线与编程,但仍然占用了大量的教学资源与学生的时间。虚拟的FPGA实验多为演示类实验,只有当编程正确的时候才会显示预设的图像,但不会提示错误的地方。
为此,研究了一种基于FPGA+HTML5动画的八位数码管虚拟仿真教学实验。采用HTML5动画技术,能够真实地还原实验的情况。
实验总体流程如图1所示。学生将编写的Verilog程序导入虚拟实验软件中,选择对应类型的HTML虚拟实验并运行程序,得出与Verilog程序相对应的实验结果。通过比较结果,可以验证程序正确与否。
图1 实验总体流程
在基于数字电路实验的数码管实验设计中,要求学生用Quartus II编写Verilog文件,控制FPGA的端口电平值,实验原理如图2所示。
图2 实验设计原理
由于七段数码管公共端连接到GND(共阴极型),所以当数码管中的某一段被输入高电平,则这一段被点亮,反之则不亮[6-7]。8位七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口[8]。8个数码管的a、b、c、d、e、f、g、dp都连在一起,8个数码管分别由各自的位选信号来控制,当位选信号为低电平时该位数码管被选中。
本实验结合了HTML动画的显示功能,应用上述数码管工作原理,设计出数码管显示图像。
在HTML文件中调用JavaScript的callNative函数,读取从FPGA服务器中返回的a、b、c、d、e、f、g、dp的8位端口电平值,通过判断8位电平值和JavaScript判断语句,调用对应的数码管的显示图片[9]。数码管一共有256种显示结果,循环调用256种显示结果,即可满足每一种实验结果的实现。
实验所用的FPGA为Cyclone系列芯片,采用基于成本优化的全铜1.5V SRAM工艺,容量为2 910~20 060个逻辑单元,具有多达294 912 bit嵌入RAM[10]。Cyclone FPGA支持各种单端I/O标准如LVTTL、LVCMOS、PCI和SSTL-2/3,通过LVDS和RSDS标准可提供多达129个通道的差分I/O支持。每个LVDS通道高达640 Mbit/s。Cyclone是具有双数据速率(DDR)SDRAM和FCRAM接口的专用电路。Cyclone FPGA中有2个锁相环(PLLs),提供6个输出和层次时钟结构,以及复杂设计的时钟管理电路[11]。
Verilog文件需要学生根据实验要求自行设计,但是端口需要与FPGA中数码管的端口相对应,以便与虚拟实验接口对应。Verilog语言设计主要思路为循环控制a、b、c、d、e、f、g、dp 8位七段数码管高低电平值,利用循环语句分段计数,更改8位数值,每次向LED写数据时,通过片选,选通其中1个LED,然后把数据写入该LED管。因此每个时刻只有1个LED管是亮的[12]。为了能持续看见LED上面的显示内容,必须对LED管进行连续扫描,即依次循环点亮各LED管。利用人眼的视觉暂停效应,在一定的扫描频率下,就会看见好几个LED一起点亮[13]。
利用HTML动画显示则可以省略扫描频率的语句编写,在JS文件中的var Jsonobj = { port: 0, type: 'loop', freq:1};语句则可以代替Verilog文件中的扫描频率,自由定义时钟频率,从而实现动画的运行与显示。
实验流程见图3,学生编写Verilog文件,生成.rbf文件,通过USB传输到FPGA服务器中。通过FPGA服务器得出对应的数据并传回电脑,再通过.js函数文件,将数据转换为端口数据,通过计算端口数据,控制HTML文件,产生动画。结果如图4所示。
图3 实验流程
图4 仿真实验结果
根据仿真实验产生的图像,判断编写程序的正确与否。学生编写的Verilog文件会在相应的端口产生一组高低电平值。这组值会通过USB传回软件,软件中的.js文件读取这组端口的值,通过库函数文件,控制HTML文件产生相应的动画效果。因为编写的Verilog文件不同,产生的端口的值和动画效果也会不同。与实际FPGA板的子端口类似,不同的高低电平产生的数码管图案与相应的管脚对应,学生可以根据图案的变化,对自己的程序进行调整,最终达到对实验进行虚拟仿真的目的。
本实验具有以下优点:
(1) 具有虚拟实验的便捷性,只需在学生端调试程序,就能直观地看到实验结果;
(2) 结合HTML动画,使实验具有二次开发的优势,且动画对多平台适用,手机、电脑均可使用;
(3) 能够完整地显示学生编写的每一种代码的情况。
大多数虚拟仿真实验在进展顺利的情况下才能得到正确的实验结果;而遇到错误时,多数情况是报错而停止,需要操作人员查找错误,往往耗时耗力。本实验可以根据错误的代码显示对应的图像,学生可以根据图像改写自己编写的代码,能更好地学习有关数码管的相关知识,并且节省了查错的时间。