名稱:象棋游戲倒計(jì)時(shí)器設(shè)計(jì)Verilog代碼vivado? ego1開發(fā)板
軟件:vivado
語言:Verilog
代碼功能:
象棋游戲倒計(jì)時(shí)器設(shè)計(jì)
1、具有2個(gè)選手控制按鍵,選手1,按下按鍵選手2的時(shí)間開始倒計(jì)時(shí);
2、選手2,按下控制按鍵選手1的時(shí)間開始倒計(jì)時(shí);
3、若對(duì)方倒計(jì)時(shí)結(jié)束,則贏得比賽;
4、設(shè)置獲勝指示燈,有超時(shí)提醒;
5、數(shù)碼管顯示2個(gè)選手倒計(jì)時(shí)分鐘、秒鐘。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在?ego1開發(fā)板驗(yàn)證,?ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳約束
5. Testbench
6. 仿真圖
6.1 整體仿真
6.2 控制模塊仿真
6.3顯示模塊仿真
部分代碼展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2019/05/25?14:21:45 //?Design?Name:? //?Module?Name:?game_timmer //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// module?game_timmer( ????input?clk_100M,//100M時(shí)鐘 ????input?reset_n,//復(fù)位按鍵 ????input?suspend_SW,//暫停開關(guān) ????input?player_1,//選手1 ????input?player_2,//選手2 ????output??win_1_led,//選手1勝指示燈 ????output??win_2_led,//選手2勝指示燈 ????output??alarm_led,//超時(shí)提示 ????//數(shù)碼管顯示 ????output????????[7:0]?seg_select_1,//高電平點(diǎn)亮,高電平選通???? ????output????????[3:0]?bit_select_1,//高電平點(diǎn)亮,高電平選通???? ????output????????[7:0]?seg_select_2,//高電平點(diǎn)亮,高電平選通???? ????output????????[3:0]?bit_select_2//高電平點(diǎn)亮,高電平選通???? ????); ???? wire?[7:0]?minute_time_1;//選手1剩余時(shí)間分鐘 wire?[7:0]?minute_time_2;//選手2剩余時(shí)間分鐘 wire?[7:0]?second_time_1;//選手1剩余時(shí)間秒 wire?[7:0]?second_time_2;//選手2剩余時(shí)間秒 wire?ctrl_clk; assign?ctrl_clk=clk_100M?&?suspend_SW;//suspend_SW控制暫停 time_ctrl?U_time_ctrl( .?clk_100M(ctrl_clk),//100M時(shí)鐘 .?reset_n(reset_n),//復(fù)位按鍵 .?player_1(player_1),//選手1,按下高電平 .?player_2(player_2),//選手2,按下高電平 .?win_1_led(win_1_led),//選手1勝指示燈 .?win_2_led(win_2_led),//選手2勝指示燈 .?alarm_led(alarm_led),//超時(shí)提示 .?minute_time_1(minute_time_1),//選手1剩余時(shí)間分鐘 .?minute_time_2(minute_time_2),//選手2剩余時(shí)間分鐘 .?second_time_1(second_time_1),//選手1剩余時(shí)間秒 .?second_time_2(second_time_2)//選手2剩余時(shí)間秒 ????); display?U_display( .?clk(clk_100M),//標(biāo)準(zhǔn)時(shí)鐘,100MHz .?reset(reset_n),//復(fù)位信號(hào),低有效? .?minute_time_1(minute_time_1),//選手1剩余時(shí)間分鐘 .?minute_time_2(minute_time_2),//選手2剩余時(shí)間分鐘 .?second_time_1(second_time_1),//選手1剩余時(shí)間秒 .?second_time_2(second_time_2),//選手2剩余時(shí)間秒 .?seg_select_1(seg_select_1), .?bit_select_1(bit_select_1), ??? .?seg_select_2(seg_select_2), .?bit_select_2(bit_select_2)//高電平點(diǎn)亮,高電平選通 ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=455