2024-03-13日记录:

博客上是我的初稿随手记,后期 贪吃蛇完整教程(手把手)整理如下:

贪吃蛇九:https://mp.weixin.qq.com/s/4qgOI4xP1nzufEQLQpFUHA

贪吃蛇八:https://mp.weixin.qq.com/s/CvHQbjO3KZDDgxz_ohPW1A

贪吃蛇七:https://mp.weixin.qq.com/s/96v8wyQItoolwcWGkFa7hw

贪吃蛇六:https://mp.weixin.qq.com/s/HEQYovUSbaiEDgDyCWD14g

贪吃蛇五:https://mp.weixin.qq.com/s/8Boc8PhwX4bqQRbTTwQuaA

贪吃蛇四:https://mp.weixin.qq.com/s/qEuAx5d1kHWJgiNNiaobKg

贪吃蛇三:https://mp.weixin.qq.com/s/xIe5XdHqoc2vF4A5eH2snA

贪吃蛇二:https://mp.weixin.qq.com/s/4p4HkPJ53kQS4s2-575plQ

贪吃蛇一:https://mp.weixin.qq.com/s/NNGnLUz3ZsDcCyDHNeRuKQ(包含源代码工程)

 

 

贪吃蛇游戏源于1976年,是一款非常经典的游戏了,这里就不过多介绍,直接开始设计吧!

一、准备工作

硬件平台:  友晶科技DE10-Standard开发板

DE1-SOC、DE2-115也可以,所使用到的硬件都差不多,只需要移植的时候修改一下引脚匹配即可

软件平台:Quartus 18.1

其他: 一根VGA线,一台VGA 显示器

 

二、游戏描述

 游戏分四个状态: RESTART、START、PLAY和DIE。

 

RESTART:系统复位以后进入重启状态,在这个状态下先显示贪吃蛇的欢迎界面“欢迎来到贪吃蛇游戏Gluttonous Snake Game on FPGA”,6秒结束后显示游戏难度选择界面,系统等待难度选择的信号(等待开关SW[2:0]任意一个被滑向上)。

 

 

START:游戏有三个难度,当滑动开关选择了其中一个难度后系统进入开始状态,等待按键触发游戏的进行。

 

PLAY:当四个按键中任意按键被按,游戏进入玩的状态,蛇身移动,吃掉食物后蛇身长长一格,直到长到16格不再增长。每次吃的食物个数会被累计。数码管实时显示当前累计的分数。

DIE:当蛇撞自身,或者撞上四周的墙壁或者累计分数达到100分,游戏进入结束状态,这时蛇闪烁3秒,然后VGA显示器显示总分。

 

 

 

 

三、系统框架

系统硬件框架

用到的硬件是这些:按键4个,滑动开关4个,VGA显示器1个,数码管显示3个。

系统模块框架

snake_top.v: 最顶层模块,例化一个个子模块,并完成子模块与子模块之间的连接以及与外部信号的连接。

game_ctrl_unit.v: 游戏状态控制单元,控制游戏的状态的转变和不同状态下的输出。

snake.v:蛇身的运动控制,以及蛇身的增长。

apple_generate.v:通过加法实现食物随机坐标的产生。

VGA_control.v:控制VGA的显示,显示色块,字符和图片。

ROM IP:存储图片内容。

score_ctrl.v:累计游戏过程中的得分,同时将得分转换成BCD码。

seg_display.v:数码管的显示控制。

PLL IP:将系统时钟50M分频出25M。

系统时钟框架

系统参考时钟是50M, 但是VGA显示选择640*480@60HZ,像素时钟是25M,所以其他模块时钟都用25M。

 从系统RTL Viewer图也可以看到50M系统时钟输入PLL 被分频为25M以后传递给系统其他每个模块:

 

四、原理讲解

原理讲解分8个部分进行:

友晶科技FPGA开发板实现贪吃蛇游戏(九)——蛇身控制 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

 友晶科技FPGA开发板实现贪吃蛇游戏(八)——游戏控制之状态机设计 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(七)食物(苹果)的产生 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(六)VGA 驱动模块色块显示 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(五)VGA 驱动模块字符显示 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(四)VGA 驱动模块图片显示 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(三)记分模块 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(二)数码管驱动模块 DE10-STANDARD、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

友晶科技FPGA开发板实现贪吃蛇游戏(一)——整体描述 DE10-Standard、DE1-SOC、DE2-115 - Doreen的FPGA自留地 - 博客园 (cnblogs.com)

五、引脚分配

 

六、视频演示

请参考B站视频:

https://www.bilibili.com/video/BV1A94y1b7wq/?spm_id_from=333.999.0.0&vd_source=01906de38e51683b53d50554fd2a2911