名稱:Quartus秒表設(shè)計(jì)verilog代碼仿真
軟件:Quartus
語言:Verilog
代碼功能:
設(shè)計(jì)一個(gè)可記錄 60 秒時(shí)長的秒表,具有兩個(gè)控制按鍵 k0 和 k1,基本功能如下:
(1)按下 k0,計(jì)時(shí)開始;再次按下 k0,計(jì)時(shí)暫停;再次按下 k0,計(jì)時(shí)繼續(xù)。
(2)計(jì)時(shí)開始后,按下 k1,顯示暫停,即顯示的數(shù)字凍結(jié),內(nèi)部仍在計(jì)時(shí);再次按下 k1,顯示更新為新的計(jì)時(shí)時(shí)間,仍然凍結(jié),內(nèi)部仍繼續(xù)計(jì)時(shí)。
(3)計(jì)時(shí)暫停時(shí),按下 k1,計(jì)時(shí)復(fù)位清零。
(4)凍結(jié)顯示時(shí),按下 k0,恢復(fù)正常顯示。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench
6. 仿真圖
整體仿真圖
按鍵檢測模塊
分頻模塊
控制模塊
顯示模塊
部分代碼展示:
//設(shè)計(jì)一個(gè)可記錄?60?秒時(shí)長的秒表,具有兩個(gè)控制按鍵?k0?和?k1,基本功能如下: //(1)按下?k0,計(jì)時(shí)開始;再次按下?k0,計(jì)時(shí)暫停;再次按下?k0,計(jì)時(shí)繼續(xù)。 //(2)計(jì)時(shí)開始后,按下?k1,顯示暫停,即顯示的數(shù)字凍結(jié),內(nèi)部仍在計(jì)時(shí);再次按 //下?k1,顯示更新為新的計(jì)時(shí)時(shí)間,仍然凍結(jié),內(nèi)部仍繼續(xù)計(jì)時(shí)。 //(3)計(jì)時(shí)暫停時(shí),按下?k1,計(jì)時(shí)復(fù)位清零。 //(4)凍結(jié)顯示時(shí),按下?k0,恢復(fù)正常顯示 module?Digital_clock( input?clk_in,//有源晶振 input?k0,//啟動(dòng)//暫停 input?k1,//暫停//復(fù)位 output?[5:0]?bit_select,//數(shù)碼管位選,低電平有效 output?[7:0]?seg_select//數(shù)碼管段選,為低電平時(shí),相應(yīng)字段就點(diǎn)亮 ); wire?[7:0]?stopwatch_Millisecond;//10毫秒 wire?[7:0]?stopwatch_second;//秒 wire?[7:0]?stopwatch_minute;//分 wire?k0_n;//啟動(dòng)//暫停 wire?k1_n;//暫停//復(fù)位 wire?clk_100Hz; //按鍵檢測 key_jitter?i0_key_jitter( .?clkin(clk_in), .?key_in(k0),//輸入 .?key_negedge(k0_n)//消抖后按鍵下降沿 ); //按鍵檢測 key_jitter?i1_key_jitter( .?clkin(clk_in), .?key_in(k1),//輸入 .?key_negedge(k1_n)//消抖后按鍵下降沿 ); //分頻模塊,產(chǎn)生100Hz用于秒表計(jì)時(shí) fenping?fenping_Hz( .?clk_in(clk_in), .?clk_100Hz(clk_100Hz)//100Hz--對應(yīng)10ms ); // //秒表控制模塊 stopwatch?i_stopwatch( .?clk_in(clk_in), .?clk_100Hz(clk_100Hz),//100Hz--對應(yīng)10ms .?k0(k0_n),//啟動(dòng)//暫停 .?k1(k1_n),//暫停//復(fù)位 .?stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 .?stopwatch_second(stopwatch_second),//秒 .?stopwatch_minute(stopwatch_minute)//分 ); //數(shù)碼管顯示模塊 display?i_display( .?clk(clk_in), .?stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 .?stopwatch_second(stopwatch_second),//秒 .?stopwatch_minute(stopwatch_minute),//分 .?bit_select(bit_select),//數(shù)碼管位選 .?seg_select(seg_select)//數(shù)碼管段選 ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=395