名称:VIVADO电子拔河比赛游戏机verilog代码Nexys4开发板
软件:VIVADO
语言:Verilog
代码功能:
电子拔河比赛游戏机的设计:
电子拔河游戏机供2~3人玩耍。由一排LED表示拔河的“电子绳”。初态时中间的LED亮。比赛时双方通过按扭使中间亮的LED向己方移动,当亮至某方最后一个LED时,该方获胜,并记分。
设计要求:
(1)比赛开始,由裁判下达比赛“开始”命令后,双方才能输入信号否则电路自锁,输入信号无效。
(2)“电子绳”至少由15个LED构成,裁判下达比赛“开始”命令后,位于中间的LED亮。甲乙双方通过按键输入信号,使发亮的LED向自己一方移动,并能阻止其向对方移动。当自己一方终点LED亮时,表示比赛结束。此时电路自锁,保持当前状态不变,除非由裁判使电路复位。
(3)设计甲乙双方自动记分电路,在每次比赛结束时能自动加分,用数码管显示得分。
注:附加功能根据本人能力自行添加(如可以自动记录比赛时间等等)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Nexys4开发板验证,Nexys4开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
Testbench
仿真图
部分代码展示:
`timescale?1ns?/?1ps //拔河游戏 module?bahe_game( input?clk_100M,//标准时钟,100MHz input?reset_n,//复位信号,低有效? input?restart,//裁判控制重新开始 input?player_1_key,//选手1 input?player_2_key,//选手2 output?[14:0]?led,//15个led //数码管显示 output??[7:0]?seg_display, output??[7:0]?bit_display ????); wire?[7:0]?score_1;//选手1分数 wire?[7:0]?score_2;//选手2分数 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),//标准时钟,100MHz .?reset_n(reset_n),//复位信号,低有效? .?restart(restart),//裁判控制重新开始 .?player_1(player_1),//选手1 .?player_2(player_2),//选手2 .?led(led),//15个led .?score_1(score_1),//选手1分数 .?score_2(score_2)//选手2分数 ); display?U_display( .?clk_100M(clk_100M),//标准时钟,100MHz .?reset_n(reset_n),//复位信号,低有效? .?score_1(score_1),//选手1分数 .?score_2(score_2),//选手2分数 //数码管显示 .?seg_display(seg_display), .?bit_display(bit_display) ); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=370
								
								
								
638