
9、数码管、按键、分频综合实验:数字时钟
分频、按键防抖、数码管显示的综合实验。
功能:
按键S1、S2分别对时进行加1、减1操作;S3、S4分别对分进行加10、加1操作;S5、S6分别对秒进行加10、加1操作。
数字时钟分为:
1、分频模块:对50MHZ时钟进行分频,得到1HZ的时钟信号,给计数器提供使能信号。
2、counter_60:模为60的计数器,使能信号一次上升沿计数一次(使能信号需要滤波),计数60次进位。
3、counter_24:counter_60的进位信号的上升沿使能技术一次(也需要滤波)。
4、按键模块:主要是防抖和改变计数器的计数(避免信号竞争没有选择驱动使能信号,而是内部直接对寄存器改变)。
国庆前就更新到这了,视频老王还没上传,下午就出门了,所以估计是上传不了。大家先看图片吧
TOP层源码
module countdown(clk,rst_n,key_in,ledout,disp_reg,disp_bit);
input clk;
input rst_n;
input [5:0] key_in;
output ledout;
output [7:0] disp_reg;
output [7:0] disp_bit;
wire clk_en;
Div_50M CLK_DIV
(
.clk(clk),
.rst(rst_n),
.clk_out(clk_en)
);
wire [3:0] S_H;
wire [3:0] S_L;
wire SecCout;
counter60 Sec_COUNT60
(
.en(clk_en),
.clk(clk),
.rst(rst_n),
.key1(key_in[0]),
.key2(key_in[1]),
.cout(SecCout),
.HighOut(S_H),
.LowOut(S_L)
);
wire [3:0] M_H;
wire [3:0] M_L;
wire MinCout;
counter60 Min_COUNT60
(
.en(SecCout),
.clk(clk),
.rst(rst_n),
.key1(key_in[2]),
.key2(key_in[3]),
.cout(MinCout),
.HighOut(M_H),
.LowOut(M_L)
);
wire [3:0] H_H;
wire [3:0] H_L;
counter24 Hou_COUNT24
(
.en(MinCout),
.clk(clk),
.rst(rst_n),
.key1(key_in[4]),
.key2(key_in[5]),
.cout(ledout),
.HighOut(H_H),
.LowOut(H_L)
);
scan_display DISP
(
.clk(clk),
.rst_n(rst_n),
.disp_1th(S_L),
.disp_2th(S_H),
.disp_3th(M_L),
.disp_4th(M_H),
.disp_5th(H_L),
.disp_6th(H_H),
.disp_reg(disp_reg),
.dis_bit(disp_bit)
);
endmodule
可执行文件:下载
——回复可见内容——






回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |