电子拔河游戏机VGA显示设计Verilog代码Quartus DE1-SOC开发板

名称:电子拔河游戏机VGA显示设计Verilog代码Quartus  DE1-SOC开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

电子拔河游戏机VGA显示

电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负

基本要求

1、设计一个能进行拔河游戏的VGA显示游戏。

2、电路使用15个拔河显示块,开机后只有中间一个发亮,此即拔河的中心点。

3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。

4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。

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

DE1-SOC开发板.png

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. Testbench(测试台)

7. 仿真图

整体仿真图

按键消抖模块

VGA时序控制模块

图形控制模块

拔河控制模块

数码管显示模块

部分代码展示:

`timescale 1ns / 1ps
module bahe_game(
input clk_in,//标准时钟
input reset_n,//复位信号,低有效 
input restart,//裁判控制重新开始
input player_1_key,//选手1
input player_2_key,//选手2
output        hsync,//VGA水平同步信号
output        vsync,//VGA垂直同步信号
output        VGA_CLK,//VGA控制时钟
output        VGA_BLANK_N,//VGA控制有效信号
output [11:0] rgb,//RGB信号
output [14:0] led,//15个led
//数码管显示
output  [7:0] HEX0,
output  [7:0] HEX2
    );
wire [3:0] score_1;//选手1分数
wire [3:0] score_2;//选手2分数
wire [9:0] pixel_x;
wire [9:0] pixel_y;
wire      video_on;
wire player_1;
wire player_2;
//按键消抖模块
key_debounce U1_key_debounce(
     . clk(clk_in),
     . button_in(player_1_key),//输入
 . button_posedge(player_1)//消抖后按键上升沿
);
//按键消抖模块
key_debounce U2_key_debounce(
     . clk(clk_in),
     . button_in(player_2_key),//输入
 . button_posedge(player_2)//消抖后按键上升沿
);
//VGA时序控制模块
vga_sync u1(
.clk(clk_in), 
.rst(~reset_n), 
.VGA_CLK(VGA_CLK), 
.VGA_BLANK_N(VGA_BLANK_N), 
.hsync(hsync), 
.vsync(vsync), 
.pixel_x(pixel_x), 
.pixel_y(pixel_y), 
.video_on(video_on)
);
//图形控制模块
graphic_generator i_graphic_generator(
.clk(clk_in), 
.rst(~reset_n), 
.restart(restart),
.player_1(player_1),
.player_2(player_2), 
.pixel_x(pixel_x), 
.pixel_y(pixel_y), 
.video_on(video_on), 
.rgb(rgb)
);
//拔河控制模块
bahe_ctrl U_bahe_ctrl(
. clk_in(clk_in),//标准时钟
. 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_in(clk_in),//标准时钟
. score_1(score_1),//选手1分数
. score_2(score_2),//选手2分数
//数码管显示
. HEX0(HEX0),
. HEX2(HEX2)
);
endmodule
源代码

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

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值