名称:基于FPGA的打地鼠游戏机设计VHDL代码ISE仿真
软件:ISE
语言:VHDL
代码功能:
设计打地鼠游戏机,用8个LED灯表示8个地鼠,用3位LED8段显示得分,8个按键表示打击点。一个start键表示开始游戏,可中途用start键中止游戏。
游戏开始前,得分清零,按start键开始,以间隔一定时间(T1)随机点亮某个LED灯,维持一定的时间(这个时间为T2),如果在T2时间内按了相应的按键,则表示成功打到地鼠,则灭灯并计分,反之不计分。
游戏共分三轮,一轮结束(8次亮灯)后,如果打地鼠超过4次成功,进入下一轮,可以缩短T2的时间进行第2轮,每次得分也可以为2,再同理第3轮,最后游戏结束并显示总分。
随机时间要足够随机,不能让游戏者有预判,start按键考虑去毛刺的功能。
以上设计用TOP DOWN设计流程,完成系统框图设计、RTL设计、综合、功能和时序仿真、物理实现。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序综合
4. RTL图
5. Testbench
6. 仿真图
整体仿真图
分频模块
随机产生模块
按键模块
控制模块
显示模块
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --分频模块 ENTITY fengping IS PORT ( clk_50M : IN STD_LOGIC; clk_div : OUT STD_LOGIC--50M分频为100KHz ); END fengping; ARCHITECTURE behave OF fengping IS SIGNAL count : integer:=0; BEGIN PROCESS (clk_50M) BEGIN IF (clk_50M'EVENT AND clk_50M = '1') THEN IF (count >= 499) THEN--计数到499,500分频 count <= 0; ELSE count <= count + 1; END IF; END IF; END PROCESS; PROCESS (clk_50M) BEGIN IF (clk_50M'EVENT AND clk_50M = '1') THEN IF (count >= 250) THEN--分频为clk_div clk_div <= '0'; ELSE clk_div <= '1'; END IF; END IF; END PROCESS; END behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=780
453