基于FPGA的贪吃蛇游戏
基于FPGA的贪吃蛇游戏
软件环境:Quartus Prime 17.1 ,notepad++,gvim,modelsim-SE,TimeGen3
硬件环境:DE2-115(Intel FPGA Cyclone IV,EP4CE115F29C7N)
(板子不一样的童鞋,要注意修改芯片型号和绑定引脚,修改完后,先别急着修改程序,先重新编译并下载,看看有没有效果,不出意外的话是可以直接跑出游戏的,看到实验现象了,再自己去优化修改)
本项目代码较多,所以就从大的方向上说一下,具体的看我的源码,然后自己跑一下就可以,移植还是比较简单的。
图1.系统的结构图
在顶层模块中一共例化了7个模块,他们功能分别如下:
apple_generate.v 主要是用来产生贪吃蛇食物,以及判断小蛇有没有吃到苹果,其中苹果的随机产生是利用加法计数器实现的,利用了每次吃苹果的时间不同,从而会得到不同的苹果坐标。
game_ctrl.v这个主要是控制游戏的状态(START,PLAY,END),每种状态都有他们自己的一套vga显示,处在什么状态,就把相应的vga输出到物理的vga控制端口。
ir_decoder.v 这个是用来红外解码的,可以看我的另外一篇博客,自己找一下。
pll_clk.v这个是pll ip核,用来产生25MHz时钟。
smg.v 这个是控制数码管的,显示蛇的长度。
snake_ctrl.v 这个是用来控制蛇的运动,以及产生判断是否撞墙,撞身体的标志信号,以及扫描蛇身,产生object信号,给vga_play.v模块用于显示蛇身。
vga_play.v 这个是用来显示处在PLAY状态时的图像 (vga的可以参考我另外一篇博客,自己找一下,还有就是程序里出现的clk_25m,clk_50m,其中的m是MHz的意思,不是ms.)
贪吃蛇速度演示视频如下:
福利:
由于最近有很多同学对基于FPGA的贪吃蛇游戏很感兴趣,趁着最近有时间,特将之前贪吃蛇游戏重新设计一遍,并给出详细的设计步骤,方便大家学习!一共分2期,本期教程主要解决VGA显示图片问题,主要教大家如何写VGA驱动,如何用C语言生成mif文件。本教程还是需要有一定基础的,至少会绑定引脚,会使用软件产生pll、rom等常用的ip。 第一期免费教程链接:
第二期教程:
(1)长按下面的二维码进行付款
