My title page contents

投篮VGA游戏设计VHDL代码VIVADO basys3开发板

名称:投篮VGA游戏设计VHDL代码VIVADO  basys3开发板

软件:VIVADO

语言:VHDL

代码功能:

投篮VGA游戏

VGA显示出长条代表小人,圆形球和梯形篮筐

设置:通过4个开关控制垂直速度,4个控制水平速度

按下十字开关中间建,投掷

VGA显示出球的运动过程,抛物线

如果投中篮筐,分数+1

最高5分,到达后重置

投完一次后,更改篮筐位置

返回设置过程,保持开关不变的话,还是原来的轨迹


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

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

演示视频:

设计文档:

设计文档.doc

1、工程文件


2、程序文件


3、程序编译


4、RTL图


5、管脚分配


部分代码展示:

LIBRARY IEEE;
   USE IEEE.std_logic_1164.all;
   USE IEEE.NUMERIC_STD.ALL;
   --use IEEE.std_logic_unsigned.all;
   --use IEEE.std_logic_arith.ALL;
   
--游戏控制
ENTITY game_controller IS
   PORT (
      clk_in,rst      : IN STD_LOGIC;--100MHz
  pixel_clk:OUT STD_LOGIC;--VGA时钟
      sw : IN unsigned(15 DOWNTO 8);--SW移动速度
  btnL,btnR : IN STD_LOGIC;--按键
      hcount   : IN unsigned(10 DOWNTO 0);
      vcount   : IN unsigned(10 DOWNTO 0);
      blank  : IN STD_LOGIC;--空白指示
  vgaRed: OUT STD_LOGIC_VECTOR(3 downto 0);--RGB
  vgaBlue: OUT STD_LOGIC_VECTOR(3 downto 0);--RGB
  vgaGreen: OUT STD_LOGIC_VECTOR(3 downto 0);--RGB
  receive: OUT STD_LOGIC--投中
   );
end game_controller;
ARCHITECTURE Behavioral OF game_controller IS
   signal clk_cnt: unsigned(1 DOWNTO 0) := "00"; 
   signal clk: STD_LOGIC := '0';
   signal new_frame: STD_LOGIC := '0';
   signal left_of_stick    : unsigned(10 DOWNTO 0);
   signal right_of_stick    : unsigned(10 DOWNTO 0);
   signal left_of_ball      : unsigned(10 DOWNTO 0);
   signal right_of_ball      : unsigned(10 DOWNTO 0);
   signal top_of_ball      : unsigned(10 DOWNTO 0);
   signal botton_of_ball      : unsigned(10 DOWNTO 0);
   signal ball_h_move    : unsigned(10 DOWNTO 0);
   signal ball_v_move    : unsigned(10 DOWNTO 0);  
   signal dir_up: STD_LOGIC;
   signal dir_down: STD_LOGIC;
   signal dir_left: STD_LOGIC;
   signal dir_right: STD_LOGIC;
   signal display_stick: STD_LOGIC;
   signal display_ball: STD_LOGIC;
   signal display_man: STD_LOGIC;
   
   signal move_x    : unsigned(4 DOWNTO 0);
   signal move_y    : unsigned(4 DOWNTO 0); 
   signal frame_cnt : unsigned(1 DOWNTO 0); 
begin
   --计数0~3
   process (clk_in)
   begin
      if (rising_edge(clk_in)) then
 clk_cnt <= clk_cnt + "01";--计数
      end if;
   end process;
   
   clk"01") else '0';--25MHz
   pixel_clk"01") else '0';--25MHz
   new_frame<='1' when (vcount = 0) and (hcount = 0) else '0';--一副画面的起始时刻
   --移动方向
   process (clk, rst)
   begin
      if (rst = '1') then--复位
     dir_left<='0';
 dir_right<='0';--右移
 dir_up<='0';--下移
 dir_down<='0';
      elsif (rising_edge(clk)) then
 if(btnL='1')then
dir_left<='0';
dir_right<='1';--右移
dir_up<='1';--上移
dir_down<='0'; 
 elsif (new_frame='1') then
        if (left_of_ball <= 1) then--移动到最左边
 dir_left<='0';
 dir_right= 639) then--移动到最右边
 dir_left<='0';--左移
 dir_right<='0';
end if;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 投篮VGA游戏设计VHDL代码VIVADO basys3开发板

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员