名稱:籃球比賽24秒倒計(jì)時(shí)器basys3開(kāi)發(fā)板verilog代碼(代碼在文末下載)
軟件:VIVADO
語(yǔ)言:Verilog
代碼功能:
籃球計(jì)時(shí)器
1、籃球24秒倒計(jì)時(shí)器,按鍵啟動(dòng)倒計(jì)時(shí)。
2、倒計(jì)時(shí)可以通過(guò)按鍵控制暫停、繼續(xù)。
3、倒計(jì)時(shí)結(jié)束后LED燈閃爍報(bào)警。
4、數(shù)碼管顯示倒計(jì)時(shí)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Basys3開(kāi)發(fā)板驗(yàn)證,開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 管腳約束文件
4. 程序編譯
5. RTL圖
6. Testbench
7. 仿真圖
整體仿真圖
分頻模塊仿真
倒計(jì)時(shí)模塊仿真
顯示模塊仿真
部分代碼展示:
//倒計(jì)時(shí)模塊 module?jishi( input?clk_100M, input?clk_1Hz,//1Hz信號(hào) input?reset_p,//復(fù)位清零 input?start,//啟動(dòng)、繼續(xù) input?stop,//暫停 output?reg?LED,//閃爍報(bào)警 output?[7:0]?second_time//秒 ); reg?[7:0]?second=8'd24;//秒 parameter?s_idle=2'd0;//空閑狀態(tài) parameter?s_down_cnt=2'd1;//倒計(jì)時(shí)狀態(tài) parameter?s_stop=2'd2;//暫停狀態(tài) parameter?s_end=2'd3;//結(jié)束狀態(tài) reg?[1:0]?state=s_idle;//默認(rèn)正常計(jì)時(shí)狀態(tài) always@(posedge?clk_100M?or?posedge?reset_p) if(reset_p) state<=s_idle;//空閑狀態(tài) else case(state) s_idle://空閑狀態(tài) if(start)//啟動(dòng)、繼續(xù)按鍵按下 state<=s_down_cnt; else state<=s_idle; s_down_cnt://倒計(jì)時(shí)狀態(tài) if(second==8'd0) state<=s_end; else?if(stop)//暫停鍵按下,進(jìn)入暫停狀態(tài) state<=s_stop; else state<=s_down_cnt; s_stop://暫停狀態(tài) if(start)//啟動(dòng)、繼續(xù)按鍵按下 state<=s_down_cnt; else state<=s_stop; s_end://結(jié)束 state<=s_end; default:; endcase //產(chǎn)生2Hz閃爍時(shí)鐘 reg?clk_2Hz=0; reg?[31:0]?time_count=32'd0; ????always@(posedge?clk_100M) ????????if(time_count==32'd25000000)begin//100Mhz計(jì)數(shù)25000000 ????????????time_count<=32'd0; ????????????clk_2Hz<=~clk_2Hz;//輸出2Hz ????????????end ????????else?begin ????????????time_count<=time_count+32'd1;//計(jì)數(shù) ????????????clk_2Hz<=clk_2Hz;//輸出2Hz ????????????end always@(posedge?clk_100M?or?posedge?reset_p) if(reset_p) second<=8'd24;//復(fù)位到24秒 else if(state==s_down_cnt?&&?clk_1Hz)//倒計(jì)時(shí)狀態(tài) if(second==8'd0) second<=8'd0; else second<=second-8'd1;//倒計(jì)時(shí) else second<=second; always@(posedge?clk_100M?or?posedge?reset_p) if(reset_p) LED<=0;//復(fù)位 else if(state==s_end)////結(jié)束 LED<=clk_2Hz;//閃爍 else ????LED<=0; //輸出秒 assign?second_time=second; endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=286