Verilog-HDL高级数字设计实验报告---俄罗斯方块-FPGA实现.docx
上传人:天马****23 上传时间:2024-09-11 格式:DOCX 页数:37 大小:3.1MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

Verilog-HDL高级数字设计实验报告---俄罗斯方块-FPGA实现.docx

Verilog-HDL高级数字设计实验报告---俄罗斯方块-FPGA实现.docx

预览

免费试读已结束,剩余 27 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VerilogHDL高级数字设计实验报告题目:“俄罗斯方块”FPGA实现实验目的通过此次项目,完成以下目的:熟悉XilinxFPGA的架构及开发流程设计一个功能完整的系统,掌握FSM+Datapath的设计方法。实验内容项目介绍本项目主要在FPGA上实现了一个经典小游戏“俄罗斯方块”。本项目基本解决方案是,使用XilinxZynq系列开发板ZedBoard作为平台,实现主控模块,通过VGA接口来控制屏幕进行显示。系统框架整个系统由四部分组成,按键输入处理模块、控制模块、数据路径模块以及VGA显示接口模块。整个系统的结构如下图所示:图1:系统框图下面分别对四个模块进行介绍:按键输入处理模块按键处理模块的主要功能是对输入系统的up,down,left,right四个控制信号进行消抖处理,并对其进行上升沿检测。消抖模块采用上课所提出的结构,采用了一个4位的移位寄存器,先将输入信号延迟4个时钟周期,再对其以一个较低的时钟频率进行采用。消抖模块的结构如下图所示:图2:消抖模块结构示意图为了简化控制系统,在本系统的设计过程中,不考虑长时间按键产生连按效果。因而,需要对按键进行上升沿检测。上升沿检测的基本实现方案是加入一组寄存器,对前一个的按键信号进行暂存,将暂存的值与当前值进行比较,当上一个值为0而当前值为1时,即认为其检测到了一个上升沿。控制模块控制模块采用FSM的方式进行控制。在控制模块中,定义了10个状态:S_idle:上电复位后进入的空状态,当start信号为1时进入S_new状态S_new:用于产生新的俄罗斯方块。S_hold:保持状态。在这个状态中进行计时,当时间到达一定间隔时,转到S_down状态;或者等待输入信号(up,down,left,right)时,转到S_down(按键为down)或者S_move(up,left,right)状态。S_down:判断当前俄罗斯块能否下移一格。如果可以,则转到S_remove_1状态,如果不行,则转到S_shift状态。S_move:判断当前俄罗斯块能够按照按键信号指定的指令进行移动,如果可以,则转到S_shift状态,如果不可以,则转到S_remove_1状态。S_shift:更新俄罗斯方块的坐标信息。返回S_hold。S_remove_1:更新整个屏幕的矩阵信息。转移到S_remove_2状态。S_remove_2:判断是否可以消除,将可以消除的行消除,并将上面的行下移一行。重复此过程,直到没有可消除的行为止。跳转到S_isdie状态S_isdie:判断是否游戏结束。如果结束,则跳转到S_stop状态。如果没有,则跳转到S_new状态,生成新的俄罗斯方块。S_stop:清楚整个屏幕,并跳转到S_idle状态。整个控制过程的ASMD图如下图所示:图3:控制模块ASMD图数据路径数据路径模块主要功能是,根据控制模块给出的信号,对俄罗斯方块当前的逻辑状态进行判断,更新背景矩阵。具体如下:方块:方块分为非活动方块与活动方块。非活动方块为:(1)之前下落的方块;(2)下落后方块消除之后的结果。由背景矩阵表示。活动方块为当前下落中的方块,由活动方块坐标与方块类型表示(后简称方块)。背景矩阵:reg[9:0]R[23:0];背景矩阵R是24行10列的寄存器组,负责保存非活动方块坐标,即R中任一位置,如方块存在,则该位置1,否则为0。活动方块坐标:outputreg[4:0]n,outputreg[3:0]m,n,m分别为当前活动方块的行、列指针,指向方块固定点位置。方块固定点为方块旋转时不变的格点,依据方块种类决定,下文方块模型中详述。方块类型:outputreg[6:0]BLOCK,BLOCK代表方块类型,由7位编码构成。数据交换:Datapath与其余模块的数据交换分为两部分:(1)与control_unit间的状态指令交互;(2)控制merge,间接实现对VGA的控制。方块模型:俄罗斯方块共有7中形状的方块(O,L,J,I,T,Z,S),每种方块有1-4种不同的旋转变形方式。为方便起见,将方块定位A-G,旋转编号为1-4,将方块编码成A_1-G_2的19种,如下图:图中,深色方块是该种方块的固定点。图4:方块模型示意图方块运动:产生:方块产生由一个简单的伪随机过程决定。系统采用一个3位的计数器产生随机数,进入S_new,BLOCK的值被NEW_BLOCK覆盖,方块坐标n<=1;m<=5;同时,根据计数器,NEW_BLOCK的值刷新为A_1,B_1,…,G_1中的一种,作为下一次方块。移动:方块移动分为四种:旋转,下落,向左