基于FPGA的“数字电路”教学改革探索

2021-04-04 09:38艾伟清陈景波钟黎萍
电气电子教学学报 2021年2期
关键词:数字电路状态机计数器

艾伟清, 陈景波, 王 伟, 钟黎萍

(常熟理工学院 电气与自动化工程学院,江苏 常熟 215500)

0 引言

“数字电路”是电子信息和自动化类工科专业必修的一门基础课。传统的“数字电路”理论教学以布尔代数和逻辑卡诺图为理论工具,以门电路和触发器作为基本电路单元,以组合电路和时序电路作为知识主干[1~2]。实验教学以中小规模集成芯片为主要器件,实验手段局限在器件连线和传统示波器等的使用。这样传统的教学方式导致培养的学生缺乏设计复杂数字系统的能力、缺乏熟练使用现代数字系统设计、测试和调试工具的能力,所学的知识与实际的技术应用脱钩[3]。

相对于集成度较低的标准芯片,现场可编程门阵列FPGA拥有丰富的内部资源,能根据应用需求在硬件层进行灵活修改,适用于大型集成电路和数字系统的开发。越来越多的高校开始将FPGA作为主要的教改手段引入到“数字电路”理论和实验课程中[2~6]。我院以硬件描述语言(Verilog HDL)为主要设计手段,以FPGA作为实现工具,将“数字电路”课程改革为“数字电路与FPGA设计”课程,精简了传统的教学内容,按照从简单组合电路到复杂数字系统的顺序,循序渐进地编排了理论教学内容和实例训练[4]。实验平台也由传统的实验箱变为口袋式FPGA开发平台。

1 传统教学内容的精简

1.1 逻辑函数与卡诺图

传统的教学内容目的是让学生掌握采用集成芯片设计中小规模数字电路的能力,因此,逻辑函数和卡诺图的化简是课程教学的重点。然而,在实际应用中,小规模芯片的使用越来越少,取而代之的是拥有丰富片内资源的现场可编程逻辑器件FPGA。因为器件中各种单元电路足够多,也就没必要对逻辑函数进行化简[5]。因此,新课程对逻辑函数和卡诺图的化简内容进行了大幅度的弱化,只介绍了基本的原则,不作为教学内容的重点。

1.2 组合电路

传统的组合电路教学内容以门电路为基础,以编码器、译码器、数据选择器、数值比较器和算术运算电路的集成模块为主要对象,培养学生对小规模组合电路的分析和设计能力。基于FPGA在工业现场的大规模应用,传统的组合电路分析和设计方法已经不适应实际的生成需要。因此,新课程只对典型组合电路的功能进行简单介绍,教学重点为Verilog HDL行为描述的常用语法介绍,包括always块、if语句、case语句、参数和常数等,并通过一些常见组合逻辑电路实例来介绍基于Verilog HDL语言的设计方法,如二进制-BCD码转换器。

1.3 时序电路

传统的教学内容以各类锁存器和触发器模块为基础,并把时序逻辑电路的设计作为重中之重。在使用FPGA设计中小规模时序电路时,不需要考虑状态的化简,也不需要考虑触发器的类型。因此,新课程中删减了时序逻辑电路的传统设计方法,弱化了不同结构、功能和用途的锁存器、触发器的教学内容,将教学重点关注到这些基础时序逻辑单元的Verilog HDL描述方法上,如触发器、寄存器、移位寄存器和计数器的Verilog HDL行为描述。在学生掌握简单时序电路的FPGA设计方法后,新课程通过PWM脉冲调试器、7段数码管动态扫描以及秒表等实例,进一步训练学生设计复杂时序电路的能力。

2 新增的教学内容

为了进一步培养学生利用硬件描述语言和FPGA设计复杂数字系统的能力,新增的教学内容包括:FPGA与Vivado基础,Verilog HDL基础,计数器和状态机架构,IP核设计方法,串口通信控制器设计,内部存储器控制器设计,VGA控制器设计以及数字系统设计案例。

2.1 FPGA与Vivado基础

教学内容主要为可编程逻辑器件的基本电路、表示方法,以及现场可编程逻辑门阵列FPGA的基本结构及原理。教学重点为实验平台Basys3 FPGA开发板的结构及主要资源介绍,并通过一个两输入门电路的FPGA设计实例说明开发环境Vivado的整个设计流程。

2.2 Verilog HDL基础

教学内容主要为Verilog HDL语言的基础规范,包括标识符、数据类型、运算操作、关键字、注释、模块及端口声明和定义以及编程规范。通过对Verilog HDL语言的学习,让学生掌握自顶向下、结构化的数字电路设计方法。

2.3 计数器与状态机架构

教学内容主要为计数器架构八步法和有限状态机的Verilog HDL语言描述。计数器架构八步法包括明确功能、功能波形分析、计数架构、加1和结束条件、定义特殊点、完整性检查、计数器代码编写、功能代码编写。通过PWM流水灯和数字钟等实例进一步训练学生利用计数器架构法设计复杂时序电路的能力。有限状态机分为Moore状态机和Mealy状态机。通过序列检测器、交通信号灯数字系统、密码锁设计和ADC采样控制电路等实例实现学生运用状态机设计简单数字系统的能力。

2.4 IP核设计方法

随着FPGA片内资源的继续增大,市场机制下的设计周期越来越短,基于可重复使用的第三方IP核完成复杂数字系统设计的趋势已经不可避免。Xilinx提倡的积木式设计,正是与IP核紧密相关,用户可以将功能性设计做成一个IP核,然后“组装”起来成为产品[4]。教学重点为教授学生如何使用第三方IP核或打包自己开发的IP核实现简单数字电路和数字系统的设计。

2.5 串口通信控制器设计

当FPGA需要与外部数字设备进行数据传送时,需要用到串行通信协议。教学内容为四种串行通信协议的控制器设计,即UART总线、SPI总线、I2C总线和PS/2总线串行通信控制器的Verilog HDL行为描述。通过UART回环、OLED显示、ADT7420温度设置以及PS/2键盘控制等实例介绍了如何利用自顶向下的设计理念,基于先前学习的基本数字电路、计数器以及状态机模块,设计出具备通信能力的数字系统。

2.6 内部存储器控制器设计

当FPGA控制不同串行通信接口或不同设备间通信时,需要将多个字节的数据临时按需要存入内部的存储单元或从内部存储单元中取出,此时需用到内部存储接口控制器。教学内容主要为两种内部存储器,即FIFO和RAM的Verilog HDL行为描述。从内部存储器的结构和数据传输时序等方面介绍了内部存储器的数据通信原理,并通过PS/2键盘数据存取命令实例来训练学生进一步设计具备通信和数据存储能力的数字系统。

2.7 VGA控制器设计

一个良好的人机交流数字系统需要有可视化的数据输出。VGA视频接口作为当前仍是最常用的视频图像接口,有必要在教学中引入。教学内容为VGA接口信号功能、扫描显示原理以及Verilog HDL行为描述。通过VGA显示条纹、VGA显示文字、VGA显示图像等实例逐步地训练学生设计具备通信、数据存储和显示功能的复杂数字系统的能力。

2.8 数字系统案例设计

为了进一步培养学生利用模块化的思想设计复杂数字系统的能力,新课程提供了若干数字系统案例。以俄罗斯方块游戏机为例,需要用到PS/2通信模块、RAM存储模块、VGA显示模块。控制核心需要用到先前学习的计数器架构和状态机架构。通过俄罗斯方块游戏机的学习,学生不仅能够巩固先前学习的数字电路和数字系统的FPGA设计方法,也能够加强学习的兴趣,为后续的创新实践课程打好基础。

3 实验教学的改革

传统的“数字电路”实验课程独立于理论课程,由实验平台的教师上课。因此,常常出现实验课与理论课不同步,理论课没上的内容实验课已经开展了,学生学习效果差。另外,传统的实验平台采用的是集成的数字电路实验箱。实验以74LS系列的小规模集成芯片为主要器件开展,故障率高,能开展的实验有限,如基于状态机的红绿灯等实验就很难实现。

改革后的“数字电路与FPGA设计”将实验课程和理论课程相结合,由理论课教师直接带领学生实验,避免了实验与理论不同步的问题。此外,实验平台也从集成的数字电路实验箱改为了迪芝伦公司的口袋仪器Basys 3 FPGA开发平台和Xilinx公司的编程软件Vivado 2017.4。通过该实验平台,学生可以学习现代数字系统的设计、仿真和调试流程,并能够将理论课程中教授的案例逐一实现。这大大增强了学生学习的兴趣和教学效果。

4 结语

本文以FPGA设计为基础,从教学内容的精简和强化、实验教学的改革两个角度介绍了对传统的“数字电路”课程的教改探索,旨在培养学生利用硬件描述语言和FPGA设计数字电路和数字系统的能力。改革后的课程实施效果良好,在学院工程教育专业认证中获得了专家好评。

猜你喜欢
数字电路状态机计数器
采用虚拟计数器的电子式膜式燃气表
基于数字电路的定时器的设计
基于有限状态机的交会对接飞行任务规划方法
案例教学在数字电路教学改革中的应用研究
数字电路实验的设计分析
数字电路功耗的分析及优化
计数器竞争冒险及其处理的仿真分析
双口RAM读写正确性自动测试的有限状态机控制器设计方法
三值绝热多米诺可逆计数器设计
基于单片机的仰卧起坐计数器