电子拔河比赛游戏机的设计Verilog代码vivado ego1开发板

本文详细描述了一种使用Verilog语言设计的电子拔河比赛游戏机,包括电路结构、输入控制、LED移动逻辑、计分显示和裁判控制功能。设计已在ego1开发板上验证,涉及管脚约束、仿真图和关键模块的代码片段。
摘要由CSDN通过智能技术生成

名称:电子拔河比赛游戏机的设计Verilog代码vivado  ego1开发板(文末获取)

软件:vivado

语言:Verilog

代码功能:

电子拔河比赛游戏机的设计

时中间的LED亮。比赛时双方通过按扭使中间亮的LED向己方移动,当亮至某    电子拔河游戏机供2~3人玩耍。由一排LED表示拔河的“电子绳”。初态

方最后一个LED时,该方获胜,并记分。

设计要求

(1)比赛开始,由裁判下达比赛“开始”命令后,双方才能输入信号否则电路自锁,输入信号无效    (2)“电子绳”至少由15个LED构成,裁判下达比赛“开始”命令后

位于中间的LED亮。甲乙双方通过按键输入信号,使发亮的LED向自己一方移    动,并能阻止其向对方移动。当自己一方终点LED亮时,表示比赛结束。此时电路自锁,保持当前状态不变,除非由裁判使电路复位。    (3)设计甲乙双方自动记分电路,在每次比赛结束时能自动加分,用数码管显示得分    注:附加功能根据本人能力自行添加(如可以自动记录比赛时间等等)

本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:

ego1开发板.png

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
源代码

 扫描文章末尾的公众号二维码

拔河游戏机设计需要使用到FPGA开发板,以及Verilog语言进行编程。下面是一个简单的拔河游戏机设计Verilog代码示例: ```verilog module tugging_game( input clk, //时钟信号 input rst, //复位信号 input player1, //玩家1信号 input player2, //玩家2信号 output reg led //输出LED灯信号 ); reg [7:0] counter; //计数器,用于计算每次按下按钮的时间 reg [1:0] state; //状态机,用于控制游戏状态 always @(posedge clk or posedge rst) begin if(rst) begin //复位信号 counter <= 0; state <= 0; led <= 0; end else begin case(state) 0: begin //初始状态 counter <= 0; led <= 0; if(player1 || player2) begin state <= 1; //进入游戏状态 end end 1: begin //游戏状态 counter <= counter + 1; if(player1 == player2) begin state <= 2; //平局状态 end else if(player1 && !player2) begin state <= 3; //玩家1获胜状态 end else if(!player1 && player2) begin state <= 4; //玩家2获胜状态 end end 2: begin //平局状态 led <= 1; //点亮LED灯 if(counter == 10) begin //等待一段时间后返回初始状态 state <= 0; end end 3: begin //玩家1获胜状态 led <= 2; //点亮LED灯 if(counter == 10) begin //等待一段时间后返回初始状态 state <= 0; end end 4: begin //玩家2获胜状态 led <= 4; //点亮LED灯 if(counter == 10) begin //等待一段时间后返回初始状态 state <= 0; end end endcase end end endmodule ``` 以上代码实现了一个简单的拔河游戏机,使用了状态机控制游戏状态,计数器计算按下按钮的时间,LED灯显示游戏结果。具体实现还需要根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值