名称:基于8位LED灯的打地鼠游戏设计VHDL代码Basys2开发板(代码在文末下载)
软件:ISE
语言:VHDL
代码功能:
两种地鼠的产生方式:
①用8位LED灯对应8个地洞,用4×4矩阵键盘中的1~8键对应打的动作。
②用4位LED灯指示0001至111对应15个地洞,用4×4矩阵键盘中的15个按键对应打的动作。
功能:
①按“开始”键进入游戏状态,每轮游戏计时20秒。每隔一定时间随机出现一只地鼠,此时如果没有及时按下按键或者虽然有键按下但是与地鼠出现的位置不致,表示没有打中。
如果按键值与地鼠出现的位置一致,表示打中了,打中一只加1分。数码管显示得分。
②游戏结束后再按“开始”键,得分清零,开始新游戏。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys2开发板验证,开发板如下,其他开发板可以修改管脚适配:
工程文件:
程序文件:
程序编译:
管脚分配:
RTL图:
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dadishu IS PORT ( clk_50M : IN STD_LOGIC; reset : IN STD_LOGIC; L_row : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--矩阵键盘列 H_col : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--矩阵键盘行 start : IN STD_LOGIC;--开始 LED : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--led bit_select : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END dadishu; ARCHITECTURE behave OF dadishu IS --分频模块 COMPONENT fengping IS PORT ( clk_50M : IN STD_LOGIC; clk_div : OUT STD_LOGIC--50M分频为100KHz ); END COMPONENT; --控制模块 COMPONENT control IS PORT ( clk_div : IN STD_LOGIC; start : IN STD_LOGIC; LED : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); key_num : IN STD_LOGIC_VECTOR(3 DOWNTO 0); random_num : IN STD_LOGIC_VECTOR(3 DOWNTO 0); score : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; --随机数产生模块 COMPONENT LFSR IS PORT ( clk : IN STD_LOGIC; reset_p : IN STD_LOGIC; random_num : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END COMPONENT; --按键模块 COMPONENT keyboard IS PORT ( clk_div : IN STD_LOGIC;--100KHZ reset : IN STD_LOGIC;--复位 L_row : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--行 H_col : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--列 key_number : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--按键键值 ); END COMPONENT; --显示模块 COMPONENT display IS PORT ( clk : IN STD_LOGIC; score : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--分数 bit_select : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END COMPONENT; SIGNAL clk_div : STD_LOGIC; SIGNAL random_num : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL key_num : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL score : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN --调用分频模块 i_fengping : fengping PORT MAP ( clk_50m => clk_50M, clk_div => clk_div ); --调用随机数模块 i_LFSR : LFSR PORT MAP ( clk => clk_div, reset_p => reset, random_num => random_num ); --调用控制模块 i_control : control PORT MAP ( clk_div => clk_div, start => start, LED => LED, key_num => key_num, random_num => random_num, score => score ); --调用按键模块 i_keyboard : keyboard PORT MAP ( clk_div => clk_div, reset => reset, l_row => L_row, h_col => H_col, key_number => key_num ); --调用显示模块 i_display : display PORT MAP ( clk => clk_div, score => score, bit_select => bit_select, seg_select => seg_select ); END behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=282
892