• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

電子拔河比賽游戲機(jī)的設(shè)計(jì)Verilog代碼vivado ego1開發(fā)板

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-231231101R5E6.doc

共1個(gè)文件

名稱:電子拔河比賽游戲機(jī)的設(shè)計(jì)Verilog代碼vivado? ego1開發(fā)板

軟件:vivado

語言:Verilog

代碼功能:

電子拔河比賽游戲機(jī)的設(shè)計(jì)

電子拔河游戲機(jī)供2~3人玩耍。由一排LED表示拔河的“電子繩”。初態(tài)時(shí)中間的LED亮。比賽時(shí)雙方通過按扭使中間亮的LED向己方移動(dòng),當(dāng)亮至某方最后一個(gè)LED時(shí),該方獲勝,并記分。

設(shè)計(jì)要求

(1)比賽開始,由裁判下達(dá)比賽“開始”命令后,雙方才能輸入信號否則電路自鎖,輸入信號無效。

(2)“電子繩”至少由15個(gè)LED構(gòu)成,裁判下達(dá)比賽“開始”命令后。位于中間的LED亮。甲乙雙方通過按鍵輸入信號,使發(fā)亮的LED向自己一方移動(dòng),并能阻止其向?qū)Ψ揭苿?dòng)。當(dāng)自己一方終點(diǎn)LED亮?xí)r,表示比賽結(jié)束。此時(shí)電路自鎖,保持當(dāng)前狀態(tài)不變,除非由裁判使電路復(fù)位。

(3)設(shè)計(jì)甲乙雙方自動(dòng)記分電路,在每次比賽結(jié)束時(shí)能自動(dòng)加分,用數(shù)碼管顯示得分。

注:附加功能根據(jù)本人能力自行添加(如可以自動(dòng)記錄比賽時(shí)間等等)

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在ego1開發(fā)板驗(yàn)證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

ego1開發(fā)板.png

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳約束

5. Testbench

6. 仿真圖

6.1 整體仿真

6.2 控制模塊仿真

6.3顯示模塊仿真

6.4 按鍵消抖模塊

部分代碼展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?Company:?
//?Engineer:?
//?
//?Create?Date:?2019/05/25?20:04:44
//?Design?Name:?
//?Module?Name:?bahe_game
//?Project?Name:?
//?Target?Devices:?
//?Tool?Versions:?
//?Description:?
//?
//?Dependencies:?
//?
//?Revision:
//?Revision?0.01?-?File?Created
//?Additional?Comments:
//?
//////////////////////////////////////////////////////////////////////////////////
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_1,
output??[3:0]?bit_display_1,??
output??[7:0]?seg_display_2,
output??[3:0]?bit_display_2
????);
wire?[7:0]?minute_time;//游戲時(shí)間分鐘
wire?[7:0]?second_time;//游戲時(shí)間秒
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
.?minute_time(minute_time),//游戲時(shí)間分鐘
.?second_time(second_time),//游戲時(shí)間秒
.?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ù)位信號,低有效?
.?minute_time(minute_time),//游戲時(shí)間分鐘
.?second_time(second_time),//游戲時(shí)間秒
.?score_1(score_1),//選手1分?jǐn)?shù)
.?score_2(score_2),//選手2分?jǐn)?shù)
//數(shù)碼管顯示
.?seg_display_1(seg_display_1),
.?bit_display_1(bit_display_1),??
.?seg_display_2(seg_display_2),
.?bit_display_2(bit_display_2)
);
endmodule

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=461

  • 2-231231101R5E6.doc
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!