实验三 基于FPGA的数码管动态扫描电路设计
源文件的链接放在最后啦
实验目的:
(1) 熟悉7段数码管显示译码电路的设计。
(2) 掌握数码管显示原理及静态、动态扫描电路的设计。
实验任务:
(1) 基本任务1:利用FPGA硬件平台上的4位数码管做静态显示,用SW0-3输入BCD码,用SW4-7控制数码管位选;
(2) 基本任务2:利用FPGA硬件平台上的4位数码管显示模10计数结果(以1S为节拍);
(3) 基本任务3:利用FPGA硬件平台上的6位数码管显示模100计数结果(以1S为节拍);
(4) 拓展任务1:对7448译码结果中的“6”和“9”进行补段;
(5) 拓展任务2:用按键控制计数器从0-9计数,4位数码管显示计数结果;(注意按键消抖)
(6) 拓展任务:3:dig_select、decoder和code_select三个模块做波形仿真。(注意输入设置)
基本任务一:利用FPGA硬件平台上的4位数码管做静态显示,用SW0-3输入BCD码,用SW4-7控制数码管位选;
1、实验原理
使用decoder模块控制数码管的显示功能,输入二进制码,输出对应的数码管显示数字。
dig_select模块负责选择哪一个数码管显示数字,add端输入二进制码,如果输入的频率特别高的话,人眼就分辨不出来一个个显示的过程了,看起来就是六个数码管都在亮。
2、电路模块设计
(1)decoder模块
(2)dig_select模块
拓展任务一:对7448译码结果中的“6”和“9”进行补段;
1、电路模块设计
(1)补段后的decoder模块,原本6和9显示的时候会少一段没有显示,加上外部与非门后就可以完整显示了。
基本任务二:利用FPGA硬件平台上的4位数码管显示模10计数结果(以1S为节拍);
1、电路模块设计
(1)fre_div模块(如果不知道原理可以看我的上一篇文章实验二)
(2)基本任务一的decoder和dig_select模块(在上面,用那个补过段的)
(3)模六计数器cnt6(实验一里有)
(4)整体设计
拓展任务二:用按键控制计数器从0-9计数,4位数码管显示计数结果;(注意按键消抖)
1、电路模块设计
(1)按键消抖key_debounce模块
(2)原理
利用D触发器的延时特性,将每一个D触发器(延时不同)的输出端相与,仅当所有D触发器都输出为1的时候,消抖模块才输出为1,这样就可以将按键抖动的部分(有1也有0的部分)跳过,达成消抖的目的。
后面还可以接更多的D触发器,如果效果不好的话。
clk端要接一个500Hz的时钟
(3)整体设计
接下来就和上面的差不多了。
我这里接了两个消抖模块是因为一个好像效果不太好。