《俄罗斯方块》(Tetris, 俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。
游戏介绍
这里就不介绍了,很经典的游戏。
软硬件环境
FPGA板卡
ZEDBOARD(纯逻辑设计,没使用ARM) 其他板卡也可以
VGA显示器
PS2键盘
游戏需要4(上下左右移动) New Game(游戏GG,重新开始)
上下左右键,上是旋转,下是加速下降,左右就是左右移动,N字幕键是重新开始。
这里需要将PS2鼠标或者键盘连接到开发板上,所以制作了一个PMOD扩展小板转接出PS2接口,如下:
原理图 PCB地址:
https://gitee.com/openfpga/FPGAandGames/tree/main/hardware/PMOD_PS2
注意:PS2不一定用5V供电,亲测3.3V也可以。
Vivado
Vivado 2018.3及更高版本
源码简介
整个核心框图如下所示:
FSM如下:
每个模块的源码上都有简介,状态机代码也比较简单(主要控制,初始状态,失败三个状态,详见代码)。
整个工程使用SystemVerilog建模,学习SV的同学也可以看看,尤其针对状态机部分使用typedef enum实现,可以看下和Verilog在状态机建模方面的区别。
开源链接
https://github.com/suisuisi/FPGAandGames/tree/main/TETRIS/fpgatetris
下载后可以直接进行综合,使用JTAG下载到FPGA中,就能看到VGA显示画面如下: