基于FPGA的电话号码滚动显示设计
课程名称:数字电子技术实验
实验题目:基于FPGA的电话号码滚动显示设计
课程简要信息
数字电子技术实验,16学时,自动化、测控等专业,大学二年级第二学期
实验内容与任务(限500字)
-
在一个4位7段数码显示器上,实现12位电话号码的滚动显示;
-
在Vivado集成开发环境中进行程序设计以及模块的波形仿真,并在FPGA口袋实验室EGO1板卡上进行设计的验证、调试与实现;
-
系统应具有复位功能,当按下复位键,显示器的号码停止滚动,并显示预置数码,释放该键,则从电话号码的前四位开始逐位滚动显示;
-
利用FPGA口袋板卡上自带的100MHz的时钟进行分频,合理设置数码显示的滚动速度以及4个数码管的循环速度,以人眼能够看清楚且感觉较为舒适为准。
实验过程及要求(限300字)
-
学习Vivado集成开发环境下FPGA设计流程;
-
自学Verilog HDL的基本结构和语法;
-
了解4位共阴极数码显示器的基本功能和使用方法,设计程序模块实现4位数码管的显示功能,模块中应包括显示译码,以及数码管的片选控制;
-
设计移位寄存器模块,实现电话号码的移位功能,并进行波形仿真;
-
考虑数码管显示模块和移位寄存器模块所需的时钟频率,设计分频模块,输出系统所需的时钟信号;
-
设计顶层模块;
-
查看EGO1板卡使用手册,确定数码管等外设与FPGA芯片连接的引脚,添加约束文件;
-
将比特流文件写入FPGA芯片,验证结果并调试;
-
撰写设计报告,总结实验过程中出现的问题及解决方法。
相关知识及背景(限150字)
在日常生活中,信息的循环滚动显示几乎随处可见。本实验以电话号码的滚动显示为例,基于FPGA口袋实验室,运用数字电子技术来实现这一现实生活中的典型应用,需要使用的具体相关知识和技术方法包括分频器、移位寄存器、显示译码器、4位7段数码显示器、FPGA技术、Vivado开发环境以及Verilog HDL语言等。
教学目标与目的(限100字)
通过该综合设计型实验的实现过程,使学生熟悉FPGA开发流程,理解Verilog HDL语言的模块化设计思想;掌握以显示译码和数码显示为代表的组合逻辑电路设计方法,以及以分频器和移位寄存器为代表的时序逻辑电路设计方法;提高工程实践能力。
教学设计与引导
本实验是一个综合性较强的实践项目,为使学生顺利完成实验,并能提高设计能力和动手实践能力,应在以下几个方面加强教学设计和引导:
-
学生应在上课之前完成实验的预习工作,包括熟悉FPGA设计流程、自学Verilog HDL语言基本语法、复习实验相关理论知识、进行实验原理设计、撰写预习报告。
-
快速检查学生的预习报告,找到学生的设计中存在的共性问题,在课堂讲解中重点指出,并给出解决的思路,以避免学生在实际操作过程中出错。
-
简要介绍4位数码显示器的使用方法,分析实验要求与设计思路,可以给出系统设计框图,说明系统中各个模块实现的功能,但不对各模块的设计做详细的介绍。
-
考虑到部分学生对Verilog HDL语言并不熟悉,对其中的always块语句、assign语句和case语句做简单介绍。
-
针对学生容易忽视和出错的一些细节,在学生开始操作前,给出以下几个问题进行思考:电话号码在程序中存储的位宽应为多少位,在哪里设置初始值?分频模块的两个输出时钟频率取多大合适?移位寄存器的数据应该左移还是右移?数码显示模块输出的7位段选信号和4位片选信号如何配置芯片引脚?等等。引导学生带着这些问题去设计电路,主动思考,有助于学生在出现错误时及时解决问题。学生之间也可以分组讨论这些问题。
-
实验过程中,如有学生求助,应注意引导学生查找问题的方法,分析问题的思路,而不能直接指出如何解决问题。比如,如果显示数据不能正确移动应检查哪个模块,数据可以移动,但显示数据不正确又应该检查哪里?
-
在学生完成实验后,检查EGO1板卡上的实现情况、设计的创新性、程序的规范性。对实现较快的学生,可更改或增加部分实验要求,让他继续实现;而对于进度较慢的学生,可以适当降低实验要求。
实验原理及方案
- 系统框图
系统框图如图1所示,共包含4个模块,分别为顶层模块、移位寄存模块、4位数码显示模块和分频模块,在顶层模块中调用其他三个模块。其中分频模块将100MHz时钟分频,得到两个频率不同的时钟信号,分别作为移位寄存模块和4位数码显示模块的输入;移位寄存模块输出电话号码的十六位(二进制)数据Num[15:0],并在每个时钟clk1的上升沿,将输出信息移动4位(二进制);数码显示模块在时钟clk2的作用下控制4位数码管的片选信号Sel[3:0],并将对应的4位二进制数据译码,得到数码管的段选信号A_G[6:0],输出控制数码显示器。
图1 系统框图
- 移位寄存模块的设计
在移位寄存模块中设置待显示的电话号码,由于该号码为12位十进制数字,每一个十进制数字可以用四位二进制数表示,因此模块中存储电话号码的寄存器宽度应大于等于48位。
若复位信号clr为1时,将初始号码赋值给寄存器。
在时钟信号clk1的上升沿,将寄存器存储的数据向低位移动四位,同时将移出的低四位赋值给高四位,实现循环移位功能。
将寄存器的低16位数据作为移位寄存模块的输出。
- 4位数码显示模块的设计
4位数码显示模块主要实现两个功能,4选1片选控制和显示译码,如图2所示。

图2 4位数码显示模块的原理框图
在4选1片选控制子模块中,设置一个两位寄存器,在时钟clk2的上升沿计数值加1,在复位信号clr有效时清零。当两位寄存器数据为不同值时,将片选信号Sel[3:0]的某一位数据置1,同时将Num[15:0]中对应的四位二进制数赋值给code[3:0],送至显示译码子模块。例如,若两位寄存器数据为2,则Sel[3:0]=0100,code[3:0]=Num[11:8]。
显示译码子模块实现从BCD码到七段码的转换,以驱动7段数码管。建议该子模块使用case语句实现。7段数码管的段位分布如图3所示。

图3 七段数码管段位分布
需要注意的是,EGO1板卡上的数码管为共阴极数码管,段选端应连接高电平,数码管上的对应位置才能被点亮。因此,FPGA输出有效的片选信号和段选信号都应该是高电平。
- 分频模块的设计
首先需要分析clk1和clk2的时钟频率。clk1用于移位寄存模块,不宜太快,建议以2~3Hz左右的频率移动数据,人眼才能看清移动的数据。clk2用于4位数码显示模块,4个数码管在clk2作用下被循环点亮,同一时刻只有一个数码管被点亮,每个数码管被点亮的频率应大于每秒30次,人眼才不会感觉到明显的闪烁,因此时钟clk2的频率应大于120Hz。
根据确定好的clk1和clk2的时钟频率,合理设置计数器,即可实现分频模块的设计。
教学实施进程
-
任务安排:在上一次课结束时,向学生安排本次实验的内容与要求。
-
预习自学:学生在课前做好预习工作。
-
现场教学:检查学生的预习报告,简要介绍实验的应用背景,分析实验原理与设计方案,并针对学生预习中存在的普遍性问题以及容易出错的地方,提醒学生注意。
-
现场操作:学生根据实验要求和自己的设计方案,完成程序设计、波形仿真、添加约束、芯片写入等操作,并在EGO1板卡上验证结果。在此过程中,如果发现实验结果与预期结果不符,应仔细分析问题,修改相应设计,实现预期要求。教师可协助学生解决问题。学生之间也可互相讨论,共同解决问题。由于课时限制,不再单独设置分组研讨的环节。
-
结果验收:检查学生EGO1板卡上实现的结果是否正确、完整,检查计算机上的程序代码是否符合规范、注释清晰,判断学生的设计是否具有创新性或创新意识。
-
实验报告:实验课后,学生根据要求完成实验报告,并按时提交。
-
报告批改:批改学生提交的实验报告,考察其规范性、完整性与正确性,并结合课堂表现,给出本次实验的总成绩。
实验报告要求
实验报告需要反映以下工作:
-
实验的应用背景
-
实验的原理设计
-
显示译码模块的功能表
-
移位寄存模块的仿真波形
-
FPGA芯片与外设连接的引脚设置
-
实验结果记录
-
实验中出现的问题与分析
-
实验总结
考核要求与方法(限300字)
-
预习情况:实验前,检查预习报告中原理设计部分的合理性,占比10%。
-
波形仿真:实验过程中,检查移位寄存模块的仿真波形是否正确,占比10%。
-
实物验收:检查EGO1板卡上实现功能的正确性、完整性,以及所用时间,占比30%。
-
规范性:程序代码的规范性,以及注释的可读性,占比10%。
-
创新性:考察设计是否具有创新性,以及自主思考能力,占比10%。
-
实验报告:实验结束,检查提交报告的规范性、完整性与正确性,占比30%。
项目特色或创新(可空缺,限150字)
项目的特色在于:一方面具有广泛的实际应用背景,有利于学生将课堂理论知识与实际应用联系起来;另一方面具有很强的综合性,既包含数字电子技术中组合逻辑电路的知识,也有时序逻辑电路的知识。此外,本项目的难度适中,大部分学生经过努力都能够完成,比较适合作为数字电子技术实验课的一个综合设计型实验。
参赛选手信息表
| 案例提供单位 | 北京科技大学 | 相关专业 | 自动化、测控等专业 | |||
|---|---|---|---|---|---|---|
| 设计者姓名 | 郝彦爽 | 电子邮箱 | haoys@ustb.edu.cn | |||
| 移动电话 | 13661352306 | 通讯地址 (含邮编) |
北京市海淀区学院路30号 北京科技大学 自然科学基础实验中心 邮编100083 | |||
| 设计者姓名 | 韩守梅 | 电子邮箱 | hanshm@ies.ustb.edu.cn | |||
| 移动电话 | 13651104396 | 通讯地址 (含邮编) |
北京市海淀区学院路30号 北京科技大学 自然科学基础实验中心 邮编100083 | |||
| 设计者姓名 | 林颖 | 电子邮箱 | linying_ustb@126.com | |||
| 移动电话 | 13466351329 | 通讯地址 (含邮编) |
北京市海淀区学院路30号 北京科技大学 自然科学基础实验中心 邮编100083 | |||
| 相关x课程名称 | 学生年级 | 大学二年级 | 学时(课内+课外) | 3+5 | ||
支撑 条件 |
仪器设备 | 依元素口袋实验板卡EGO1、计算机 | ||||
| 软件工具 | Xilinx Vivado | |||||
| 主要器件 | Xilinx ARTIX-7系列FPGA器件xc7a35tcsg324 | |||||
