名稱:數(shù)字秒表/定時器(倒計(jì)時)功能verilog代碼ego1開發(fā)板vivado(代碼在文末下載)
軟件:VIVADO
語言:Verilog
代碼功能:
數(shù)字秒表、定時器:
1、具有定時功能、秒表功能,兩個功能通過開關(guān)切換。
2、秒表功能時,具體有啟動、暫停、復(fù)位功能。
3、秒表功能 :計(jì)時精度10ms (0.01秒)。
4、秒表功能 :數(shù)碼管顯示分、秒、毫秒(10ms)。
5、定時功能:可以通過按鍵設(shè)置時、分、秒。
6、定時功能:設(shè)置完時間后,按下開始按鍵,開始倒計(jì)時,直到倒計(jì)時為0,輸出led提示結(jié)束。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳分配
5. RTL圖
6. modelsim仿真
整體仿真圖
分頻模塊
按鍵消抖模塊
秒表控制模塊
顯示譯碼模塊
部分代碼展示:
module?Digital_clock( input?clk_in, input?mode_SW,//模式控制開關(guān) input?key_1,//跑表啟動,暫停 input?key_2,//跑表復(fù)位 input?set_time_key_in,//設(shè)置時間 input?confirm_key_in,//確認(rèn) input?change_time_key_in,//設(shè)置時分秒 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;//設(shè)置時間 wire?confirm_key;//確認(rèn) wire?change_time_key;//設(shè)置時分秒 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--對應(yīng)10ms .?start_key(key_1_negedge),//啟動//暫停 .?reset_key(key_2_negedge),//復(fù)位 .?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),//模式控制開關(guān) .?set_time_key(set_time_key),//設(shè)置時間 .?confirm_key(confirm_key),//確認(rèn) .?change_time_key(change_time_key),//設(shè)置時分秒 .?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
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=325