名称:小鸟游戏设计VHDL代码Quartus DE1-SOC开发板
软件:Quartus
语言:VHDL
代码功能:
通过按键可以让小鸟飞起来,松开按键小鸟会自动降落,若不断点击的话,小鸟会越飞越高,所以控制飞行时要做到起伏有致才能让小鸟飞得平稳。前方会无规律的长出管道,若小鸟触碰管道则游戏结束。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE1-SOC开发板验证,DE1-SOC开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
整体仿真图
分频模块
游戏控制模块
游戏绘制模块
Lsfr随机数模块
数码管显示模块
上板效果
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY bird_game IS PORT ( clk : IN STD_LOGIC; key0 : IN STD_LOGIC;--up key key1 : IN STD_LOGIC;--down key key2 : IN STD_LOGIC;--start key3 : IN STD_LOGIC;--retry h_sync : OUT STD_LOGIC; v_sync : OUT STD_LOGIC; VGA_CLK : OUT STD_LOGIC; VGA_BLANK_N : OUT STD_LOGIC; blue : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); green : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); red : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); hex : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END bird_game; ARCHITECTURE rtl OF bird_game IS COMPONENT game_draw PORT(up_key : IN STD_LOGIC; down_key : IN STD_LOGIC; Clock : IN STD_LOGIC; GAME_RESET : IN STD_LOGIC; Random : IN STD_LOGIC_VECTOR(9 DOWNTO 0); State : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Horiz_sync : OUT STD_LOGIC; Vert_sync : OUT STD_LOGIC; VGA_CLK : OUT STD_LOGIC; VGA_BLANK_N : OUT STD_LOGIC; Blue : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); energy : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); Green : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); life : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); pixel_column_out : OUT STD_LOGIC_VECTOR(9 DOWNTO 0); pixel_row_out : OUT STD_LOGIC_VECTOR(9 DOWNTO 0); Red : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END COMPONENT; COMPONENT clk_div PORT(clk_in : IN STD_LOGIC; clk_out : OUT STD_LOGIC ); END COMPONENT; COMPONENT sevenseg_decoder PORT(digit : IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED_out : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT; COMPONENT lsfr PORT(CLOCK : IN STD_LOGIC; RANDOM : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; COMPONENT game_ctrl PORT(CLOCK : IN STD_LOGIC; start_key : IN STD_LOGIC; retry_key : IN STD_LOGIC; RESET : IN STD_LOGIC; LIFE : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Game_RESET : OUT STD_LOGIC; score: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); STATE_OUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END COMPONENT; SIGNALclkin : STD_LOGIC; SIGNALenergy : STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNALGAME_RESET : STD_LOGIC; SIGNALlife : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNALpix_col_out : STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNALpix_row_out : STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNALrandom : STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNALstate_out : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNALreset_val : STD_LOGIC; SIGNALup_key_n : STD_LOGIC; SIGNALdown_key_n : STD_LOGIC; SIGNAL score: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN clk_div_inst : clk_div PORT MAP(clk_in => clk, clk_out => clkin); reset_val <= '0'; game_draw_inst : game_draw PORT MAP(up_key => key0, down_key => key1, Clock => clkin, GAME_RESET => GAME_RESET, Random => random, State => state_out, VGA_CLK =>VGA_CLK, VGA_BLANK_N =>VGA_BLANK_N, Horiz_sync => h_sync, Vert_sync => v_sync, Blue => blue, Green => green, life => life, Red => red);
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1170
阅读全文
625