实验三基于FPGA的数码管动态扫描电路设计quartus数码管电路模块设计
实验三基于FPGA的数码管动态扫描电路设计
源⽂件的链接放在最后啦
1. 实验⽬的:
(1) 熟悉7段数码管显⽰译码电路的设计。
(2) 掌握数码管显⽰原理及静态、动态扫描电路的设计。
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为节拍);
decoder1、电路模块设计
(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)整体设计
接下来就和上⾯的差不多了。
我这⾥接了两个消抖模块是因为⼀个好像效果不太好。
基本任务3:利⽤FPGA硬件平台上的6位数码管显⽰模100计数结果(以1S为节拍);
1、电路设计
(1)实验三就有⼀些复杂了。要实现模100计数结果,我们⾸先要有⼀个模100计数器。
cnt100
(2)第⼆个新模块是sec_select模块,之所以这么命名和设计是为了下⾯的数字电⼦钟做准备。
这个模块的主要作⽤是将每⼀个电⼦管显⽰不同的内容,根据基本任务⼆可知⼀次只能⼀个数码管显⽰⼀位数字,我们是通过加快频率使得⼈眼看起来是6个数码管⼀起显⽰。但是每⼀位都是显⽰的都是同⼀个内容,还没有分开,所以要⽤sec_select模块进⾏数据选择。我们可以看到现在有6组输⼊,以总线的形式输⼊到数选模块⾥来,这6组分别代表了六个数码管上显⽰的数字,
add端输⼊⼆进制BCD码与dig_select端保持同步,表⽰现在在显⽰的是哪⼀个电⼦管,那么code输出
端就会选择相应的输⼊端输出。(⽐如add端是000,表⽰0号数码管显⽰,code端就会将D0对应的sec_ge秒的个位数字输出)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论