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站视频: