VHDl语言实现动态数码管扫描文档格式.docx
《VHDl语言实现动态数码管扫描文档格式.docx》由会员分享,可在线阅读,更多相关《VHDl语言实现动态数码管扫描文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
班级:
180932
学号:
18093238
姓名:
夏良飞
完成时间:
2012-4-20
师大学中北学院
3位十进制循环计数器的设计
一、实验容
1.设计一个3位十进制循环计数器,从0加到999,再恢复到0,循环往复。
每秒计数器加1。
2.有复位功能,当复位端reset为高时,计数器清零,停止计数。
3.以控制计数的开始start和停止stop。
当计数开始start信号有效时,计数器开始计数;
当计数停止stop信号有效时,计数停止;
当start信号再次有效时,继续计数。
4.计数器的计数值采用动态显示方式在数码管上显示出来。
5.进行设计,仿真并下载程序到实验箱的CPLD模块板进行验证。
二、实验原理
1.按键去抖动模块设计原理
(1)、抖动原因
通常使用的按键都是机械弹性开关,按下时闭合,松开后自动断开。
在键盘操作时,在触点闭合和开启的瞬间会出现电压抖动,如图所示。
为了保证按键识别的准确性,必须进行去抖动处理,消除抖动部分的信号。
(2)设计原理
滤除前沿和后延抖动毛刺,提取稳定的按键信息
2.按键扫描模块设计原理
CPLD检测按键端的电平,当按键按下时按键端的电平为低电平,相应触发相关的操作。
反之,则不进行相应的操作。
3.三位循环计数器的设计原理
当时钟的上升沿到来之时,计数器的计数值就加一,直到加到计数值为999然后计数器的计数值重新置零。
4.动态显示计数器的设计原理
当时钟的上升沿到来之时,计数器的计数值就加一,直到加到计数值为2然后计数器的计数值重新置零。
5.分为电路的设计原理
将计数器计数所得到的值分别进行相应的取余和取整操作得到最后分位结果。
如下所示:
得到543的分位操作。
X=543mod10=3;
temp=543/10,
Y=tempmod10=4;
Z=543/100=5
X、Y、Z分别就是个位、十位和百位。
6.动态显示译码模块的设计原理
(1)、首先向LED数码管显示段码数据口发送第一个8位数据,同时发送位码数据,此时相应位码为低电平,其他为高电平;
(2)、延时一段时间,发送第二个数据,此时相应位码为低电平,其他为高电平;
(3)、依此类推,对各个显示器进行扫描,显示器分时工作,实际上每次只有一个显示器显示,但是由于视觉暂留现象,感觉显示器是同时显示的。
7.分频器的设计原理
分频器就是对较高频率的信号进行分频,得到较低频率的信号。
常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。
分频系数(倍率)rate=fin/fout。
三、设计方案
1.电路的框架图
2.电路模块
四、原理图和VHDL程序
1.顶层原理图
2.按键去抖的VHDL语言描述
3.按键扫描的VHDL语言描述
4.3位循环计数器的VHDL语言描述
5.分位电路的VHDL语言描述
6.动态显示计数的VHDL语言描述
7.动态显示译码模块的VHDL语言的描述
8.4个分频器设计的VHDL语言描述
(1)、200Hz的分频
(2)、10Hz的分频
(3)、1Hz的分频
(4)、1kHz的分频
五、实物仿真结果
在实验箱上直接看结果的正确与否,由实际现象看出电路设计的结果正确。
实验箱的引脚配置如下:
六、结论
在这次EDA实验设计中,我完成的是一个3位十进制循环计数器的设计,在计数器的设计中,多次用到了计数器这一基本数字电路元件(包括分频器的设计都用到了计数器),于是我对计数器做更深入的研究。
在这次EDA实验设计中还有二个重要的模块分别是按键去抖(包括按键扫描)模块和LED显示译码模块,
在这二个模块中让我清楚地认识到机械按键用在数字电路中的不足之处和对此的补救措施;
也让我深刻的认识到了LED动态显示的机制。
这里所设计的3位十进制循环计数器是在QuartusII开发环境下进行设计的,设计完之后,下载到了EPM570T100C5芯片进行了硬件验证。
实验证明设计基本正确,功能基本完善。
唯一的不足之处在于计数器的运行不够稳定,与预期结果相比,计数时间过快。
遗憾的是到目前为止,还未能找到问题所在。