数字秒表/定时器(倒计时)功能verilog代码ego1开发板vivado

名称:数字秒表/定时器(倒计时)功能verilog代码ego1开发板vivado

软件:VIVADO

语言:Verilog

代码功能:

数字秒表、定时器

1、具有定时功能、秒表功能,两个功能通过开关切换

2、秒表功能时,具体有启动、暂停、复位功能

3、秒表功能 :计时精度10ms (0.01秒)

4、秒表功能 :数码管显示分、秒、毫秒(10ms)

5、定时功能:可以通过按键设置时、分、秒

6、定时功能:设置完时间后,按下开始按键,开始倒计时,直到倒计时为0,输出led提示结束

本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:

ego1开发板.png

代码下载:数字秒表/定时器(倒计时)功能verilog代码ego1开发板vivado名称:数字秒表/定时器(倒计时)功能verilog代码ego1开发板vivado(代码在文末下载)软件:VIVADO语言:Verilog代码功能:数字秒表、定时器1、具有定时功能、秒表功能,两个功能通过开关切换2、秒表功能时,具体有启动、暂停、复位功能3、秒表功能 :计时精度10ms (0.01秒)4、秒表功能 :数码管显示分、秒、毫秒(10ms)5、定时功能:可以通过按键设置时、分、秒6、定时功icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=325

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. RTL图

6. modelsim仿真

整体仿真图

分频模块

按键消抖模块

秒表控制模块

显示译码模块

部分代码展示:

module Digital_clock(
input clk_in,
input mode_SW,//模式控制开关
input key_1,//跑表启动,暂停
input key_2,//跑表复位
input set_time_key_in,//设置时间
input confirm_key_in,//确认
input change_time_key_in,//设置时分秒
output LED,
output  [7:0] dig_led_1,
output  [3:0] wei_led_1,
output  [7:0] dig_led_2,
output  [3:0] wei_led_2
);
wire [7:0] stopwatch_Millisecond;//10毫秒
wire [7:0] stopwatch_second;//秒
wire [7:0] stopwatch_minute;//分
wire key_1_negedge;
wire key_2_negedge;
wire clk_1Hz;
wire clk_100Hz;
wire set_time_key;//设置时间
wire confirm_key;//确认
wire change_time_key;//设置时分秒
wire [7:0] countdown_hour_time;//时
wire [7:0] countdown_minute_time;//分
wire [7:0] countdown_second_time;//秒
//分频模块
fenping fenping_Hz(
. clk_in(clk_in),
. clk_1Hz(clk_1Hz),
. clk_100Hz(clk_100Hz)//分频到100Hz
);
//按键1消抖模块
key_jitter key_1_jitter(
. clkin(clk_in),     
. key_in(key_1),
. key_posedge(key_1_negedge)
);
//按键2消抖模块
key_jitter key_2_jitter(
. clkin(clk_in),     
. key_in(key_2),
. key_posedge(key_2_negedge)
);
//按键消抖模块
key_jitter key_3_jitter(
. clkin(clk_in),     
. key_in(set_time_key_in),
. key_posedge(set_time_key)
);
//按键消抖模块
key_jitter key_4_jitter(
. clkin(clk_in),     
. key_in(confirm_key_in),
. key_posedge(confirm_key)
);
//按键消抖模块
key_jitter key_5_jitter(
. clkin(clk_in),     
. key_in(change_time_key_in),
. key_posedge(change_time_key)
);
//秒表控制模块
stopwatch i_stopwatch(
. clk_in(clk_in),
. clk_100Hz(clk_100Hz),//100Hz--对应10ms
. start_key(key_1_negedge),//启动//暂停
. reset_key(key_2_negedge),//复位
. stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒
. stopwatch_second(stopwatch_second),//秒
. stopwatch_minute(stopwatch_minute)//分
);
//定时模块
timing i_timing(
. clk_in(clk_in),
. clk_1Hz(clk_1Hz),//1Hz
. mode_SW(mode_SW),//模式控制开关
. set_time_key(set_time_key),//设置时间
. confirm_key(confirm_key),//确认
. change_time_key(change_time_key),//设置时分秒
. LED(LED),
. countdown_hour_time(countdown_hour_time),//时
. countdown_minute_time(countdown_minute_time),//分
. countdown_second_time(countdown_second_time)//秒
);
//显示模块
display i_display(
. clk(clk_in),
. watch_minute(stopwatch_minute),//分
. watch_second(stopwatch_second),//秒
. watch_milsecond(stopwatch_Millisecond),//10毫秒
. countdown_hour_time(countdown_hour_time),//时
. countdown_minute_time(countdown_minute_time),//分
. countdown_second_time(countdown_second_time),//秒
. dig_led_1(dig_led_1),
. wei_led_1(wei_led_1),
. dig_led_2(dig_led_2),
. wei_led_2(wei_led_2)
);
endmodule

猜你喜欢

转载自blog.csdn.net/diaojiangxue/article/details/134796308
今日推荐