本项目采用FPGA实现俄罗斯方块功能,主要支持7种形状子块,4种处理动作(左移、右移、旋转、快速下落)。
| 文件名 | 功能描述 |
|---|---|
| top.v | 本项目的顶层模块,实例化了pll时钟模块(生成5MHz时钟)和tetris_top模块 |
| tetris_top.v | 包含hdmi_output和tetris_array两个模块 |
| tetris_array.v | 负责计算当前像素点的颜色 |
| tetris_hdmi.v | 逐行扫描,并输出每个像素点的RGB(8b*3) |
-
将显示器的480292划分为2020的子块,使用array_bitmap[10][20]数组表示子块是否需要填充黑色(白色为空),解决480*292像素点存储在SRAM中占用大量存储资源的问题;
-
使用arrayBlock_bitmap[10][20]数组表示下落形状在屏幕中的位置,方便形状平移、旋转操作;
-
使用arrayBlock_rotate_bitmap[10][20]数组进行实时计算下落形状所需执行的处理动作(左移、右移、旋转、快速下落),防止使用arrayBlock_bitmap[10][20]数组直接进行计算产生屏幕闪烁的情况。值得注意的是,array_bitmap[10][20]和arrayBlock_bitmap[10][20]会进行实时显示,而arrayBlock_rotate_bitmap[10][20]数组则只进行计算,计算完成后赋值给arrayBlock_bitmap[10][20];