名稱:簡單秒表設(shè)計仿真(代碼在文末付費下載)
軟件:Quartus
語言:Verilog
代碼功能:
秒表顯示最低計時為10ms,最大為59:99,超出返回00:00,具有復(fù)位、啟動、暫停三個按鍵,四個數(shù)碼管分別顯示4個時間數(shù)字。
演示視頻:
FPGA代碼資源下載網(wǎng):hdlcode.com
部分代碼展示
module?stopwatch( input?clk,//100Hz--對應(yīng)10ms input?start_key,//啟動 input?stop_key,//暫停 input?reset_key,//復(fù)位 output?reg?[7:0]?display0,//輸出數(shù)碼管顯示 output?reg?[7:0]?display1,//輸出數(shù)碼管顯示 output?reg?[7:0]?display2,//輸出數(shù)碼管顯示 output?reg?[7:0]?display3//輸出數(shù)碼管顯示 ); parameter?idle_state=3'd0; parameter?cnt_time_state=3'd1; parameter?hold_time_state=3'd2; parameter?reset_time_state=3'd3; reg?[2:0]?state=3'd0; //計時狀態(tài)機 always@(posedge?clk) if(reset_key) state<=reset_time_state;//復(fù)位狀態(tài) else case(state) reset_time_state://復(fù)位狀態(tài) state<=idle_state; idle_state://空閑狀態(tài) if(start_key) state<=cnt_time_state; else state<=idle_state; cnt_time_state://計時狀態(tài) if(stop_key) state<=hold_time_state; else state<=cnt_time_state; hold_time_state://暫停狀態(tài) if(start_key) state<=cnt_time_state; else state<=hold_time_state; default:; endcase reg?[7:0]?Millisecond_cnt=8'd0;//10毫秒 reg?[7:0]?second_cnt=8'd0;//秒 always@(posedge?clk) if(state==reset_time_state)//復(fù)位狀態(tài) second_cnt<=8'd0; else if(state==cnt_time_state)//計時狀態(tài) if(Millisecond_cnt==8'd99)//990ms時向前記1秒 if(second_cnt<8'd59) second_cnt<=second_cnt+8'd1;//計時到990ms,下一次就到1秒了
設(shè)計文檔:
1.工程文件
2.程序代碼
3.程序運行
4.Testbench
5.仿真圖
秒表顯示最低計時為10ms,最大為59:99,超出返回00:00
具有復(fù)位、啟動、暫停三個按鍵
四個數(shù)碼管分別顯示4個時間數(shù)字。
1、整體仿真圖
2、復(fù)位功能
3、啟動按鍵
4、暫停按鍵
5、10ms毫秒計時
6、秒計時
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=200
閱讀全文