名稱:VIVADO電子拔河比賽游戲機(jī)verilog代碼Nexys4開發(fā)板
軟件:VIVADO
語言:Verilog
代碼功能:
電子拔河比賽游戲機(jī)的設(shè)計(jì):
電子拔河游戲機(jī)供2~3人玩耍。由一排LED表示拔河的“電子繩”。初態(tài)時(shí)中間的LED亮。比賽時(shí)雙方通過按扭使中間亮的LED向己方移動,當(dāng)亮至某方最后一個(gè)LED時(shí),該方獲勝,并記分。
設(shè)計(jì)要求:
(1)比賽開始,由裁判下達(dá)比賽“開始”命令后,雙方才能輸入信號否則電路自鎖,輸入信號無效。
(2)“電子繩”至少由15個(gè)LED構(gòu)成,裁判下達(dá)比賽“開始”命令后,位于中間的LED亮。甲乙雙方通過按鍵輸入信號,使發(fā)亮的LED向自己一方移動,并能阻止其向?qū)Ψ揭苿?。?dāng)自己一方終點(diǎn)LED亮?xí)r,表示比賽結(jié)束。此時(shí)電路自鎖,保持當(dāng)前狀態(tài)不變,除非由裁判使電路復(fù)位。
(3)設(shè)計(jì)甲乙雙方自動記分電路,在每次比賽結(jié)束時(shí)能自動加分,用數(shù)碼管顯示得分。
注:附加功能根據(jù)本人能力自行添加(如可以自動記錄比賽時(shí)間等等)
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Nexys4開發(fā)板驗(yàn)證,Nexys4開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
Testbench
仿真圖
部分代碼展示:
`timescale?1ns?/?1ps //拔河游戲 module?bahe_game( input?clk_100M,//標(biāo)準(zhǔn)時(shí)鐘,100MHz input?reset_n,//復(fù)位信號,低有效? input?restart,//裁判控制重新開始 input?player_1_key,//選手1 input?player_2_key,//選手2 output?[14:0]?led,//15個(gè)led //數(shù)碼管顯示 output??[7:0]?seg_display, output??[7:0]?bit_display ????); wire?[7:0]?score_1;//選手1分?jǐn)?shù) wire?[7:0]?score_2;//選手2分?jǐn)?shù) wire?player_1; wire?player_2; key_debounce?U1_key_debounce( ?????.?clk(clk_100M), ?????.?button_in(player_1_key),//輸入 ?.?button_posedge(player_1)//消抖后按鍵上升沿 ); key_debounce?U2_key_debounce( ?????.?clk(clk_100M), ?????.?button_in(player_2_key),//輸入 ?.?button_posedge(player_2)//消抖后按鍵上升沿 ); bahe_ctrl?U_bahe_ctrl( .?clk_100M(clk_100M),//標(biāo)準(zhǔn)時(shí)鐘,100MHz .?reset_n(reset_n),//復(fù)位信號,低有效? .?restart(restart),//裁判控制重新開始 .?player_1(player_1),//選手1 .?player_2(player_2),//選手2 .?led(led),//15個(gè)led .?score_1(score_1),//選手1分?jǐn)?shù) .?score_2(score_2)//選手2分?jǐn)?shù) ); display?U_display( .?clk_100M(clk_100M),//標(biāo)準(zhǔn)時(shí)鐘,100MHz .?reset_n(reset_n),//復(fù)位信號,低有效? .?score_1(score_1),//選手1分?jǐn)?shù) .?score_2(score_2),//選手2分?jǐn)?shù) //數(shù)碼管顯示 .?seg_display(seg_display), .?bit_display(bit_display) ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=370