名称:电子拔河比赛游戏机的设计Verilog代码vivado ego1开发板(文末获取)
软件:vivado
语言:Verilog
代码功能:
电子拔河比赛游戏机的设计
时中间的LED亮。比赛时双方通过按扭使中间亮的LED向己方移动,当亮至某 电子拔河游戏机供2~3人玩耍。由一排LED表示拔河的“电子绳”。初态
方最后一个LED时,该方获胜,并记分。
设计要求
(1)比赛开始,由裁判下达比赛“开始”命令后,双方才能输入信号否则电路自锁,输入信号无效 (2)“电子绳”至少由15个LED构成,裁判下达比赛“开始”命令后
位于中间的LED亮。甲乙双方通过按键输入信号,使发亮的LED向自己一方移 动,并能阻止其向对方移动。当自己一方终点LED亮时,表示比赛结束。此时电路自锁,保持当前状态不变,除非由裁判使电路复位。 (3)设计甲乙双方自动记分电路,在每次比赛结束时能自动加分,用数码管显示得分 注:附加功能根据本人能力自行添加(如可以自动记录比赛时间等等)
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
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,//标准时钟,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_1, output [3:0] bit_display_1, output [7:0] seg_display_2, output [3:0] bit_display_2 ); wire [7:0] minute_time;//游戏时间分钟 wire [7:0] second_time;//游戏时间秒 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 . minute_time(minute_time),//游戏时间分钟 . second_time(second_time),//游戏时间秒 . score_1(score_1),//选手1分数 . score_2(score_2)//选手2分数 ); display U_display( . clk_100M(clk_100M),//标准时钟,100MHz . reset_n(reset_n),//复位信号,低有效 . minute_time(minute_time),//游戏时间分钟 . second_time(second_time),//游戏时间秒 . score_1(score_1),//选手1分数 . score_2(score_2),//选手2分数 //数码管显示 . 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
源代码
扫描文章末尾的公众号二维码