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