名称:数字秒表/定时器(倒计时)功能verilog代码ego1开发板vivado(代码在文末下载)
软件:VIVADO
语言:Verilog
代码功能:
数字秒表、定时器:
1、具有定时功能、秒表功能,两个功能通过开关切换。
2、秒表功能时,具体有启动、暂停、复位功能。
3、秒表功能 :计时精度10ms (0.01秒)。
4、秒表功能 :数码管显示分、秒、毫秒(10ms)。
5、定时功能:可以通过按键设置时、分、秒。
6、定时功能:设置完时间后,按下开始按键,开始倒计时,直到倒计时为0,输出led提示结束。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:
设计文档:
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
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=325
阅读全文
939