乒乓球游戏机设计Verilog代码ISE仿真

名称:乒乓球游戏机设计Verilog代码ISE仿真(文末获取)

软件:ISE

语言:Verilog

代码功能:

乒乓球游戏机

项目功能说明

设计一个由两人参赛的乒乓球游戏机,用4个LED排成一条直线,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED一次从左到右,或者从右到左,其移动速度应能调节。当“球”将运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球,若击中,则球向相反方向移动;若未击中,球掉出桌外,则对方得一分。双方各设一个LED表示拥有发球权,每隔两次自动交换发球权,拥有发球权的一方发球才有效。设置计分电路,其中参赛选手各有一个可显示自己当前分数的按钮,当按下个人分数按钮,可用LED灯显示自己分数,当某一方率先达到11分

时,所有LED灯闪烁,表示比赛结束。

  

输入输出的关系

out: clk, rst, in1, in2, scorel, score2

Output: led[3: 0

①clk为系统时钟,在代码中需要进行分频,根据合适的分频系数从而调节乒乓球的运动快慢;rst为异步复位信号,可清除当前的比分;inl和in2分别为两个选手的击球按钮。 scorel和sore2分别为显示各自当前分数的按键,当按下任意一个时,led[3:0]显示相对应选手的分数

②led[3:0]为球运动轨迹信号,同时也可以代替数码管显示选手分数;    

③s1~s4为球运动轨迹寄存器,s0和s5为球掉出桌外的信号, R score1和2为双方当前得分寄存器,turm1和] turn r为移位信号寄存器,nght和righ2为双方的发球权

.注意事项

①显示输出模块中,可把球运动轨迹和双方分数分别存到不同的寄存器中,按下相应的按键显示相应的输出;

②球的移动可通过加减计数器和译码电路实现,或者通过移位信号实现

③设置好发球权,每次得分后,LED[0]或者LED3]应显示下一次的发球权    

仿真程序说明

测试时按照相应的时间设置相应的输入信号inl和in2,看球的运动轨迹和得分及发球权情况。同时内部分数寄存器也可显示当前分数。

乒乓球游戏机要求1.jpg

乒乓球游戏机要求2.jpg

1、工程文件

2、程序文件

3、程序编译

4、RTL图

5、管脚分配

部分代码展示:

`timescale 1ns / 1ps
module pingpang_game(
    input clk,//50MHz
    input rst,//低电平复位
    input In1,//选手1 
    input In2,//选手2
    input Score1,//选手1分数查询
 input Score2,//选手2分数查询  
    output [3:0] led//led,低电平亮,获胜所有LED亮
    );
 
wire button_posedge_1;
wire button_posedge_2;
//按键消抖模块
key_debounce i1_key_debounce(
     . clk(clk),
     . button_in(In1),//输入
  . button_pos(button_posedge_1)//消抖后按键上升沿
);
//按键消抖模块
key_debounce i2_key_debounce(
     . clk(clk),
     . button_in(In2),//输入
  . button_pos(button_posedge_2)//消抖后按键上升沿
);
//分频模块
move_speed i_move_speed(
. clk_in(clk),
. reset_p(button_posedge_1 | button_posedge_2),
. shift_en(shift_en)//移动使能信号
    );
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值