名稱:辯論賽控制器DE0-CV開發(fā)板verilog答辯計時(代碼在文末下載)
軟件:Quartus II
語言:Verilog
代碼功能:
辯論賽,(雙方起始分數(shù)為10分,這個數(shù)值可以改動)裁判按下開始按鈕,雙方開始答辯,甲方按下按鈕開始答辯,甲方燈亮起,甲方答辯期間(10秒倒計時,這個數(shù)值能夠更改),乙方不能按下按鈕答辯,甲方結(jié)束后,乙方按下按鈕開始回答,乙方燈亮起,乙方答辯期間(10秒倒計時,這個數(shù)值能夠更改),甲方不能按下按鈕答辯,結(jié)束后由裁判判斷,給哪方減分。
本代碼已在DE0-CV開發(fā)板驗證,其他開發(fā)板可以修改管腳適配,開發(fā)板如下:
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
工程文件:
部分代碼展示:
//?辯論賽,(雙方起始分數(shù)為10分,這個數(shù)值可以改動)裁判按下開始按鈕,雙方開始答辯, //?甲方按下按鈕開始答辯,甲方燈亮起,甲方答辯期間(10秒倒計時,這個數(shù)值能夠更改),乙方不能按下按鈕答辯, //?甲方結(jié)束后,乙方按下按鈕開始回答,乙方燈亮起,乙方答辯期間(10秒倒計時,這個數(shù)值能夠更改),甲方不能按下按鈕答辯, //?結(jié)束后由裁判判斷,給哪方減分。 //頂層模塊 module?Debate( input?clk_in,//輸入時鐘 input?rst_n,//復位 input?key_referee,//裁判開始 input?key_sub_A,//甲方減分 input?key_sub_B,//乙方減分 input?SW_A,//甲方開始答辯 input?SW_B,//乙方開始答辯 output?LED_A,//甲方燈 output?LED_B,//乙方燈 output??[7:0]?HEX0,//數(shù)碼管-低亮 output??[7:0]?HEX1,//數(shù)碼管-低亮 output??[7:0]?HEX2,//數(shù)碼管-低亮 output??[7:0]?HEX3,//數(shù)碼管-低亮 output??[7:0]?HEX4,//數(shù)碼管-低亮 output??[7:0]?HEX5?//數(shù)碼管-低亮 ); wire?clk_1Hz; wire?[7:0]?score_A;//甲方分數(shù) wire?[7:0]?score_B;//乙方分數(shù) wire?[7:0]?time_A;//甲方倒計時 wire?[7:0]?time_B;//乙方倒計時 //分頻到1Hz div?i_div( .?clk(clk_in),//時鐘 .?clk_out(clk_1Hz)//分頻到1Hz ); //控制模塊 Debate_ctrl?i_Debate_ctrl( .?clk_in(clk_in),//輸入時鐘 .?clk_1Hz(clk_1Hz),//1Hz使能信號 .?rst_n(rst_n),//復位 .?key_referee(key_referee),//裁判開始 .?key_sub_A(key_sub_A),//甲方減分 .?key_sub_B(key_sub_B),//乙方減分 .?SW_A(SW_A),//甲方開始答辯 .?SW_B(SW_B),//乙方開始答辯 .?score_A(score_A),//甲方分數(shù) .?score_B(score_B),//乙方分數(shù) .?time_A(time_A),//甲方倒計時 .?time_B(time_B),//乙方倒計時 .?LED_A(LED_A),//甲方燈 .?LED_B(LED_B)//乙方燈 ); //數(shù)碼管顯示模塊 display?i_display( .?clk(clk_in), .?score_A(score_A),//甲方分數(shù) .?score_B(score_B),//乙方分數(shù) .?time_A(time_A),//甲方倒計時 .?time_B(time_B),//乙方倒計時 .?HEX0(HEX0),//數(shù)碼管-低亮 .?HEX1(HEX1),//數(shù)碼管-低亮 .?HEX2(HEX2),//數(shù)碼管-低亮 .?HEX3(HEX3),//數(shù)碼管-低亮 .?HEX4(HEX4),//數(shù)碼管-低亮 .?HEX5(HEX5)?//數(shù)碼管-低亮 ); endmodule //控制模塊 module?Debate_ctrl( input?clk_in,//輸入時鐘 input?clk_1Hz,//1Hz使能信號 input?rst_n,//復位 input?key_referee,//裁判開始 input?key_sub_A,//甲方減分 input?key_sub_B,//乙方減分 input?SW_A,//甲方開始答辯 input?SW_B,//乙方開始答辯 output?[7:0]?score_A,//甲方分數(shù) output?[7:0]?score_B,//乙方分數(shù) output?[7:0]?time_A,//甲方倒計時 output?[7:0]?time_B,//乙方倒計時 output?reg?LED_A,//甲方燈 output?reg?LED_B//乙方燈 ); reg?[2:0]?state=3'd0; parameter?s_idle=3'd0; parameter?s_start=3'd1; parameter?s_speak_A=3'd2; parameter?s_end_A=3'd3; parameter?s_speak_B=3'd4; parameter?s_end_B=3'd5; parameter?s_score=3'd6; reg?[7:0]?score_A_buf=8'd10;//甲方初始分數(shù) reg?[7:0]?score_B_buf=8'd10;//乙方初始分數(shù) reg?[7:0]?time_A_buf=8'd10;//甲方初始倒計時 reg?[7:0]?time_B_buf=8'd10;//乙方初始倒計時 always@(posedge?clk_in?or?negedge?rst_n) if(rst_n==0) state<=s_idle;//復位 else case(state) s_idle://初始狀態(tài) if(key_referee==0)//裁判開始 state<=s_start; else state<=s_idle; s_start://開始 if(SW_A==1)//甲方按下按鈕開始答辯 state<=s_speak_A; else state<=s_start; s_speak_A://甲方答辯倒計時 if(time_A_buf==8'd0)//倒計時結(jié)束 state<=s_end_A; else
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=233
閱讀全文