背景:本实验所有结果基于Quartus II 13.1 (64-bit)实现,实验过程采用自下而上
2020年6月21日更新
我的实验报告,希望大家可以借鉴理解。
链接:https://pan.baidu.com/s/1Hp_wdcR7Ad642M920Cq2BQ?pwd=dijs
提取码:dijs
大家有什么不懂的可以评论。
目录
一、基本功能设计与思路
基本功能:能实现秒、分钟、小时的计数,计数结果清晰稳定的显示在 6 位数码管上。
1、动态显示模块
该模块主要功能是通过数码管的动态扫描实现 6 位数码管显示计数结果,本模块由扫描模块
scan_cnt6,位选控制模块 dig_select,数据选择控制模块 seg_select 以及译码模块 decoder 构成
-
扫描模块 scan_cnt6
模块功能:产生 位选控制端dig_select 和数据选择端 code_select 模块所需要的地址信息,扫描时钟决定位选信号和数据切换的速度。
设计思路:利用74390芯片(P160 TTL 双十进制异步计数器)构建一个模六计数器,就是6进制计数器,利用计数到6(110)时,“q2”和“q1”为高电平,产生 一个复位信号,加到74390的高电平有效的异步清0端“1CLR”上,使计数器回0,从而实现模六计数。
设计结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9149624edadd4c6ea9922f4b37d547ad.png)
波形仿真:(默认为时序仿真)
![](https://i-blog.csdnimg.cn/blog_migrate/e98fb7a33688eeab4d441d6784f89caa.png)
-
位选模块 dig_select
模块功能:在地址端的控制下,产生位选信号。
设计思路:利用74138芯片(3线-8线译码器),当选通端输入端G1为高电平,选通端输入端G2AN和G2BN为低电平时,将扫描信号cnt6的输出作为输入信号,dig[5..0]是译码输出,输出低电平有效。
设计结果:
![](https://i-blog.csdnimg.cn/blog_migrate/afcb8e456ecfa6ef58b0b08d9ffd64f5.png)
波形仿真:
![](https://i-blog.csdnimg.cn/blog_migrate/0040d6a92ab1998f02a5f169750d7b8c.png)
-
数据选择模块 seg_select
模块功能:输入 6 组数据,每组数据 4bit,本模块完成在地址端的控制下从6 组数据当中选择 1 组输出。
设计思路:利用74151芯片(P91 8选1数据选择器),在控制输入端GN为低电平时,将扫描信号的选择下,分别选中D[5..0]对应的输入信号输出为Y。
设计结果:
![](https://i-blog.csdnimg.cn/blog_migrate/95dde0f9eaa768f60246f6ff18bf5927.png)
波形仿真:
-
译码模块 decoder
模块功能:本模块实现将从 seg_select 模块送过来的 4 位 BCD 码转换为共阴数码
管的段码数据。
设计思路:利用7448芯片(P86 显示译码器),在
设计结果:(已补全)
![](https://i-blog.csdnimg.cn/blog_migrate/fd548ca3849794902deeb9ea744a27d3.png)
波形仿真:
![](https://i-blog.csdnimg.cn/blog_migrate/347f83c8aa563c7a323d654254dee8e5.png)
- 动态显示模块 display
2、计时模块
-
小时计时模块(模24计数) m24
模块功能:实现24小时计数
设计思路:
设计结果:
波形仿真:
- 分、秒计时模块(模60计数)m60
模块功能:实现60分钟和60秒计数
设计思路:
设计结果:
波形仿真:
三、分频模块
模块功能:将实验平台晶体振荡器提供的 50MHz 时钟信号分频,输出 500Hz,1KHz 及 1Hz 三种信号备用
设计思路:
设计结果:
波形仿真:
四、系统顶层
设计思路:
设计结果:(这里已经实现暂停和控制时钟频率)
二、附加功能
1、暂停计数 suspend
模块功能:sw_1控制下计数的暂停
设计结果:
2、补全6,9
如上面的decoder模块,不再重复
3、控制时钟频率(必做)
模块功能:sw_0控制下选择计数频率是1hz还是500hz
设计结果:
4、加杠
模块功能:在不同位值间加上一条横杆表示分割
设计思路:这里将之前的cnt6要改为cnt8,因为现在要去控制8位数据管,要实现8位循环。然后是去选择怎么实现段端只有一个杠,也就是只有QG为高电平。为了后续操作尽量的简单,选择当输入为“1100”时,去处理QB和QF,使得当输入“1100”时,QB和QF恒为低电平,而在其他时刻QB和QF没有影响。这里处理的方法和“补全6,9”基本一致。
ps:这里选择输入“1011”和“1010”和上面处理类似。大家可以自己尝试。
设计结果:由于想尽量减少封装文件,所以这里display文件尽可能多的去实现功能,所以导致整体观感并不完美。
暂停、清零、补全6,9、加杠、秒表、整点报时、闹钟、手动校时、符号cqupt、倒计时、