VGA显示器的弹球游戏DE1-SoC开发板乒乓球小球游戏VHDL代码下载

本文详细描述了如何使用VHDL编程在DE1-SoC开发板上实现一个VGA显示器上的弹球游戏,包括游戏规则、控制功能(如开始计分、按键操作、得分机制)以及关键组件的设计,如VGA控制器、按键同步和数码管显示。
摘要由CSDN通过智能技术生成

名称:VGA显示器的弹球游戏DE1-SoC开发板乒乓球小球游戏VHDL

软件:Quartus II

语言:VHDL

代码功能:

弹球游戏

设计一个弹球游戏,并在VGA显示器上显示

1、可以控制游戏开始,开始时数码管显示0分

2、使用按键控制球拍的运动,当控制球拍接住球时,分数加1

3、弹球触碰屏幕边缘或者球拍时可以反弹

4、可以控制小球的移动速度和球拍的大小

4、当未成功接球时,游戏结束

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

VGA_ball_DE1_SoC.png

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

代码下载:

VGA显示器的弹球游戏DE1-SoC开发板乒乓球小球游戏VHDL(代码在文末下载)软件:Quartus II语言:VHDL代码功能:弹球游戏设计一个弹球游戏,并在VGA显示器上显示1、可以控制游戏开始,开始时数码管显示0分2、使用按键控制球拍的运动,当控制球拍接住球时,分数加13、弹球触碰屏幕边缘或者球拍时可以反弹4、可以控制小球的移动速度和球拍的大小4、当未成功接球时,游戏结束本代码已在D名称:VGA显示器的弹球游戏DE1-SoC开发板乒乓球小球游戏VHDL(代码在文末下载)软件:Quartus II语言:VHDL代码功能:弹球游戏设计一个弹球游戏,并在VGA显示器上显示1、可以控制游戏开始,开始时数码管显示0分2、使用按键控制球拍的运动,当控制球拍接住球时,分数加13、弹球触碰屏幕边缘或者球拍时可以反弹4、可以控制小球的移动速度和球拍的大小4、当未成功接球时,游戏结束本代码已在Dicon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=236

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--顶层模块
ENTITY vga_controller_top IS
   PORT (      
      clk_50M   : IN STD_LOGIC;--时钟
      rst       : IN STD_LOGIC;--复位
      speed_sw  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);--速度控制按键
      size_sw   : IN STD_LOGIC_VECTOR(1 DOWNTO 0);--大小控制按键
      btn_up    : IN STD_LOGIC;--上下按键
      btn_down  : IN STD_LOGIC;--上下按键
      hsync     : OUT STD_LOGIC;--行场同步信号
      vsync     : OUT STD_LOGIC;--行场同步信号
VGA_CLK       : OUT STD_LOGIC;--vga时钟
VGA_BLANK_N   : OUT STD_LOGIC;
HEX       : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管
      rgb       : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)--VGA三色数据
   );
END vga_controller_top;
ARCHITECTURE behave OF vga_controller_top IS
--复位按键同步模块
   COMPONENT aiso_rst IS
      PORT (
         clk       : IN STD_LOGIC;
         reset     : IN STD_LOGIC;
         reset_s   : OUT STD_LOGIC
      );
   END COMPONENT;
   --VGA同步模块
   COMPONENT vga_sync IS
      PORT (
         clk       : IN STD_LOGIC;
         rst       : IN STD_LOGIC;
VGA_CLK       : OUT STD_LOGIC;
VGA_BLANK_N   : OUT STD_LOGIC;
         hsync     : OUT STD_LOGIC;
         vsync     : OUT STD_LOGIC;
         pixel_x   : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
         pixel_y   : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
         video_on  : OUT STD_LOGIC
      );
   END COMPONENT;
    --按键同步模块  
   COMPONENT debounce IS
      PORT (
         clk       : IN STD_LOGIC;
         reset     : IN STD_LOGIC;
         sw        : IN STD_LOGIC;
         db        : OUT STD_LOGIC
      );
   END COMPONENT;
   --产生墙、球和球拍
   COMPONENT graphic_generator IS
      PORT (
         clk       : IN STD_LOGIC;
         rst       : IN STD_LOGIC;
         speed_sw  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
         size_sw   : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
         btn       : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
         pixel_x   : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
         pixel_y   : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
         video_on  : IN STD_LOGIC;
score     : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         rgb       : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)
      );
   END COMPONENT;
--数码管模块
COMPONENT display is
  PORT(
 score:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
       HEX:out STD_LOGIC_VECTOR(6 DOWNTO 0)
 );
end COMPONENT;
   
SIGNAL clk         : STD_LOGIC:='0';
   SIGNAL video_on    : STD_LOGIC;
   SIGNAL rst_s       : STD_LOGIC;
   SIGNAL pixel_x     : STD_LOGIC_VECTOR(9 DOWNTO 0);
   SIGNAL pixel_y     : STD_LOGIC_VECTOR(9 DOWNTO 0);
   SIGNAL db_btn_up   : STD_LOGIC;
   SIGNAL db_btn_down : STD_LOGIC;
   SIGNAL btn_up_dowm : STD_LOGIC_VECTOR(1 DOWNTO 0);
   SIGNAL score       : STD_LOGIC_VECTOR(3 DOWNTO 0);
   -- Declare intermediate signals for referenced outputs
   SIGNAL hsync_buf : STD_LOGIC;
   SIGNAL vsync_buf : STD_LOGIC;
   SIGNAL rgb_buf   : STD_LOGIC_VECTOR(11 DOWNTO 0);
BEGIN
   -- Drive referenced outputs
   hsync <= hsync_buf;
   vsync <= vsync_buf;
   rgb <= rgb_buf;
   
clk <= clk_50M;
   --复位按键同步模块
   u0 : aiso_rst
      PORT MAP (
         clk      => clk,
         reset    => rst,
         reset_s  => rst_s
      );
 
    --VGA同步模块
   u1 : vga_sync
      PORT MAP (
         clk       => clk,
         rst       => rst_s,
VGA_CLK   => VGA_CLK,
VGA_BLANK_N => VGA_BLANK_N,
         hsync     => hsync_buf,
         vsync     => vsync_buf,
         pixel_x   => pixel_x,
         pixel_y   => pixel_y,
         video_on  => video_on
      );
   
   
    --按键同步模块 
   u2 : debounce
      PORT MAP (
         clk    => clk,
         reset  => rst_s,
         sw     => btn_up,
         db     => db_btn_up
      );
   
   
    --按键同步模块 
   u3 : debounce
      PORT MAP (
         clk    => clk,
         reset  => rst_s,
         sw     => btn_down,
         db     => db_btn_down
      );
   
   btn_up_dowm <= (db_btn_down & db_btn_up);
 --产生墙、球和球拍
   u4 : graphic_generator
      PORT MAP (
         clk       => clk,
         rst       => rst_s,
         btn       => btn_up_dowm,
         pixel_x   => pixel_x,
         pixel_y   => pixel_y,
         
         speed_sw  => speed_sw,
         size_sw   => size_sw,
         video_on  => video_on,
score     => score,--游戏分数
         rgb       => rgb_buf
      );
u5: display
  PORT MAP(
 score => score,--游戏分数
       HEX => HEX
 );
END behave;

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

复位按键同步模块

VGA同步模块

按键同步模块

产生墙、球和球拍模块

数码管模块

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值