
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
可执行文件:下载
——回复可见内容——






回复
打赏帖 | |
---|---|
【Zephyr】使用Zephyr外设初始化过程解析被打赏30分 | |
【S32K146】S32DS watchdog 配置使用被打赏20分 | |
【Zephyr】使用 IAR 调试 Zephyr 镜像被打赏20分 | |
赚取电动螺丝刀+电源电路理论知识分享1被打赏5分 | |
我想要一部加热台+分享常见运算放大器电路的应用被打赏5分 | |
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
我想要一部加热台+常见的MOS管驱动电路被打赏5分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下串口调试printf输出记录被打赏29分 | |
【瑞萨RA2E1开发板】:使用ADC功能实现位移传感器采集方案被打赏20分 |