实验四 基于FPGA的数字电子钟设计
实验任务:基于FPGA实验平台完成数字电子钟的设计与调试;
基本功能:能实现秒、分钟、小时的计数,计数结果清晰稳定的显示在6位数码管上。
模块设计
一、经过实验一到三,我们已经设计完成了以下模块的设计(如果有不明白的同学可以看看我专栏的前面的三篇文章哦)
1、模100计数器m100
2、分频器fre_div
3、decoder模块(补段后的)
4、dig_select模块
5、模六计数器cnt6
6、sec_select模块
二、这次实验是要实现数字电子钟的走时功能和加速功能(方便看进位情况)所以还要设计以下的模块。
1、fre_div模块需要改动一下输出1Hz、500Hz、1000Hz、和5000Hz的频率
2、此外还需要模24和模60计数器来表示小时、分钟和秒的进位
模60计数器(co是进位端)
模24计数器
两个计数器都是使用模100计数器改装,到24和60的时候清零得来。
后面清零时的D触发器是为了消除实际电路中的竞争冒险现象。
3、为了控制时钟的速度我们还需要一个spead_select模块
spead_select模块
这个模块用一个swich开关来控制时钟频率,我这里只连了两个,其实可以连更多。
整体设计
下面将上面的所有模块按功能连接起来
fre_div分频器将50MHz的信号转换为四种频率输出
500Hz提供给cnt6和dig_select模块,相当于屏幕刷新率,使6个数码管同时显示
1Hz秒信号先通过速度选择模块,再到模60一号(秒),模60二号(分)和模24计数器(时)
模60一号计满60个时钟信号,进一位给模60二号,相当于过了一分钟,模60二号计满60个相当于过了一小时,模24计数器计满24个进位相当于过了24个小时。
中间的非门是为了使计数器同步清零而加的
最后再将三个计数器的输出数字接到sec_select,使数码管输出相应的数字。
其他的连接和实验三是一样的。