基于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)长按下面的二维码进行付款

经验分享 程序员 微信小程序 职场和发展