软件环境:Quartus II 13.1 & Modelsim Starter Edition 13.1 & notepad++ & TimeGen 3.1 & ImageShow(生成图片的mif文件)
硬件环境:黑金AX309开发板 ,联想VGA显示器

1.模块划分

总体设计思路采用Top2down设计,首先是系统top模块,再往下按照功能的不同分为5个:

  • 蛇身控制模块snake_ctrl
  • 按键控制模块key
  • 苹果生成模块generate_apple
  • VGA显示&游戏状态模块game_show
  • 系统时钟模块pll_clk
    如下图RTL示意图
    基于FPGA的贪吃蛇游戏设计(1)整体架构设计
    其中重难点模块是蛇身控制模块(5颗星)、VGA显示&状态模块(4颗星)、苹果生成模块(3颗星)

2.学习脉络总结

在家自学FPGA三个月,学习脉络大体如下:

  • 复习了本科的数电、集成电路设计原理知识
  • 刷完一本语法,学习了计算机组成原理
  • 硬件采买(Spartan 6 黑金AX309)及datasheet研读,软件下载安装及使用学习(ISE、Quartus II、Modelsim、Markdown、Linux系统操作、TimeGen)(特别耗时…)
  • 开始疯狂刷各大网站论坛的教程,几乎刷完了特权同学、正点原子、小梅哥、开源骚客等等不同方面的教程和代码例程。找教材、撸代码、跑仿真、上板调试,从按键消抖、时钟分频、数码管显示这样的基础例程开始一点一点积攒模块经验
  • 慢慢啃下了VGA驱动、RA/ROM/PLL等ip调用、UART模块、PS2键盘驱动、IIC总线驱动、SDRAM驱动
  • 最后找了一些小项目的教程来练手积攒 实战经验,如车牌识别、贪吃蛇,最后也都磕磕绊绊的完成了

完成这些小项目之后,深感在时序设计方面实战经验的严重匮乏,往往很多bug都是时序对齐出了问题,后面打算研究小梅哥的《小梅哥FPGA时序约束从遥望到领悟》,加深一下理解和丰富下实战经验

分类:

技术点:

相关文章: