• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

赛车游戏设计VHDL代码Quartus DE1-SOC开发板

09/10 08:28
768
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2410101S005615.doc

共1个文件

名称:赛车游戏设计VHDL代码Quartus  DE1-SOC开发板

软件:Quartus

语言:VHDL

代码功能:

模拟赛车游戏VGA显示器

1、设计一个简易的赛车游戏

2、提供6车道,通过按键控制小车移动

3、小车需要躲避其他车辆,避免碰撞

4、为简化设计,可以使用不同颜色方块表示小车

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

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

DE1-SOC开发板.png

演示视频:

设计文档:

1、 工程文件

2、 程序文件

3、 程序编译

4、 RTL图

5、 管脚分配

部分代码展示:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_unsigned.ALL;
use IEEE.NUMERIC_STD.ALL;
entity game_ctrl is
    Port ( reset : in  STD_LOGIC;
        speed : in  STD_LOGIC; 
  left_key: in STD_LOGIC;
  right_key: in STD_LOGIC;
           clk_vga : in  STD_LOGIC;
  show_en : in STD_LOGIC;
  h_count: in integer;
  v_count: in integer;
  score_display: out STD_LOGIC_VECTOR (7 downto 0);
  red: out STD_LOGIC_VECTOR (2 downto 0);
  green: out STD_LOGIC_VECTOR (2 downto 0);
  blue: out STD_LOGIC_VECTOR (1 downto 0)
  );
end game_ctrl;
architecture Behavioral of game_ctrl is
signal my_car,car1_color,car2_color,car3_color,car4_color,lines_color: STD_LOGIC_VECTOR (0 to 7):="00000000";
signal car1_pos,car2_pos,car3_pos,car4_pos: integer range 24800 to 408799;
signal my_car_left: integer range 0 to 800;
signal automove_time_cnt: integer range 0 to 499;
signal player_time_cnt: integer range 0 to 99999;
signal lines_pos: integer range 24800 to 47799;
signal restart: STD_LOGIC;
signal score: STD_LOGIC_VECTOR (7 downto 0);
signal score_cnt: integer range 0 to 50000000;
signal move_val : integer range 0 to 2;
begin
move_val<= 1 when speed='0' else 2;
process(clk_vga,reset)
begin
if(reset='1' or restart='1') then
lines_pos<=24800;
my_car_left<=429;
car1_pos<=248800;
car2_pos<=24800;
car3_pos<=192800;
car4_pos<=136800;
my_car <= "00000000";
car1_color <= "00000000";
car2_color <= "00000000";
car3_color <= "00000000";
car4_color <= "00000000";
lines_color <= "00000000";
automove_time_cnt <= 0;
player_time_cnt <= 0;
restart<='0';
score<="00000000";
elsif (clk_vga='1' and clk_vga'event) then
lines_pos<=24800;
if(automove_time_cnt=499) then
automove_time_cnt<=0;
if(car1_pos>328800) then
car1_pos<=24800;
score<=score+"00000001";
else car1_pos<=car1_pos+move_val;
end if;
if(car2_pos>328800) then
car2_pos<=24800;
score<=score+"00000001";
else car2_pos<=car2_pos+move_val;
end if;
if(car3_pos>328800) then
car3_pos<=24800;
score<=score+"00000001";
else car3_pos<=car3_pos+move_val;
end if;
if(car4_pos>328800) then
car4_pos<=24800;
score<=score+"00000001";
else car4_pos<=car4_pos+move_val;
end if;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1172

  • 2-2410101S005615.doc
    下载

相关推荐