ImageVerifierCode 换一换
格式:DOCX , 页数:66 ,大小:1.33MB ,
资源ID:3081134      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3081134.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新VerilogHDL高级数字设计实验报告俄罗斯方块FPGA实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新VerilogHDL高级数字设计实验报告俄罗斯方块FPGA实现.docx

1、最新VerilogHDL高级数字设计实验报告俄罗斯方块FPGA实现【答案】Cset talk offC. UPDATE D. ALTER TABLEB. 类是实例对象的抽象32. 视图不能单独存在,它必须依赖于_。s=0【答案】Dinput input the first number: to aC. 计算后8条记录的工资和 D. 计算全部记录的工资和B. 查询设计器没有“更新条件”选项卡,但有“查询去向”选项卡Verilog HDL高级数字设计实验报告题目:“俄罗斯方块”FPGA实现实验目的通过此次项目,完成以下目的:1)熟悉Xilinx FPGA的架构及开发流程2)设计一个功能完整的系统,

2、掌握FSM + Datapath的设计方法。实验内容1.项目介绍本项目主要在FPGA上实现了一个经典小游戏“俄罗斯方块”。本项目基本解决方案是,使用Xilinx Zynq系列开发板ZedBoard作为平台,实现主控模块,通过VGA接口来控制屏幕进行显示。2.系统框架整个系统由四部分组成,按键输入处理模块、控制模块、数据路径模块以及VGA显示接口模块。整个系统的结构如下图所示:图1:系统框图下面分别对四个模块进行介绍:1)按键输入处理模块按键处理模块的主要功能是对输入系统的up,down,left,right四个控制信号进行消抖处理,并对其进行上升沿检测。消抖模块采用上课所提出的结构,采用了一个

3、4位的移位寄存器,先将输入信号延迟4个时钟周期,再对其以一个较低的时钟频率进行采用。消抖模块的结构如下图所示:图2:消抖模块结构示意图为了简化控制系统,在本系统的设计过程中,不考虑长时间按键产生连按效果。因而,需要对按键进行上升沿检测。上升沿检测的基本实现方案是加入一组寄存器,对前一个的按键信号进行暂存,将暂存的值与当前值进行比较,当上一个值为0而当前值为1时,即认为其检测到了一个上升沿。2)控制模块控制模块采用FSM的方式进行控制。在控制模块中,定义了10个状态:S_idle:上电复位后进入的空状态,当start信号为1时进入S_new状态S_new:用于产生新的俄罗斯方块。S_hold:保

4、持状态。在这个状态中进行计时,当时间到达一定间隔时,转到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:更新整个屏幕的矩阵信息。转移到

5、S_remove_2状态。S_remove_2:判断是否可以消除,将可以消除的行消除,并将上面的行下移一行。重复此过程,直到没有可消除的行为止。跳转到S_isdie状态S_isdie:判断是否游戏结束。如果结束,则跳转到S_stop状态。如果没有,则跳转到S_new状态,生成新的俄罗斯方块。S_stop:清楚整个屏幕,并跳转到S_idle状态。整个控制过程的ASMD图如下图所示:图3: 控制模块ASMD图3)数据路径数据路径模块主要功能是,根据控制模块给出的信号,对俄罗斯方块当前的逻辑状态进行判断,更新背景矩阵。具体如下:方块:方块分为非活动方块与活动方块。非活动方块为:(1)之前下落的方块;

6、(2)下落后方块消除之后的结果。由背景矩阵表示。活动方块为当前下落中的方块,由活动方块坐标与方块类型表示(后简称方块)。背景矩阵:reg 9:0 R 23:0;背景矩阵R是24行10列的寄存器组,负责保存非活动方块坐标,即R中任一位置,如方块存在,则该位置1,否则为0。活动方块坐标:output reg 4:0 n,output reg 3:0 m,n, m分别为当前活动方块的行、列指针,指向方块固定点位置。方块固定点为方块旋转时不变的格点,依据方块种类决定,下文方块模型中详述。方块类型:output reg 6:0 BLOCK,BLOCK代表方块类型,由7位编码构成。数据交换:Datapat

7、h与其余模块的数据交换分为两部分:(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的值刷

8、新为A_1,B_1,G_1中的一种,作为下一次方块。移动:方块移动分为四种:旋转,下落,向左,向右,由键盘KEYBOARD=UP, DOWN, LEFT, RIGHT控制。移动分两步进行:(1)判断;(2)转换。判断过程包含S_down,S_move。判断分两步:首先,判断变换后方块坐标是否合法,即变换后是否会造成方块越界。然后,判断变换后方块可能占据的新位置是否有背景矩阵方块存在。两步判断通过后返回成功信号,否则失败。因判断代码量较多,仅举一例说明:判断D_1向右运动(MOVE_ABLE初值为0):if (m=8) if (!(Rn-1m+1)|(Rnm+1)|(Rn+1m+1)|(Rn+2

9、m+1)MOVE_ABLE=1; else MOVE_ABLE=0; 转换过程(S_shift)进行方块的移动或变形。根据KEYBOARD,移动时,改变方块坐标;变形时,方块按类别变换,如:A_1A_1;B_1B_2; B_2B_3; B_4B_1;停止与消除:方块停止与消除由两个状态完成:S_remove1,S_remove2。前一状态中,根据BLOCK, n, m,将活动方块位置覆盖至R,变为非活动方块。后一状态中,根据行满状态,进行行的消除与平移,具体如下:显然,俄罗斯方块能影响的最大行数为4,因此,在REMOVE_2中,仅对Rn-1,Rn,Rn+1,Rn+2四行依次进行处理。处理过程为

10、:如果该行(k)满,则由k行开始,至1行结束,逐行向下平移,当前平移位置由计数器REMOVE_2_C控制,当前行消除截止由标志位SIG确认。每行处理完后,将REMOVE_FINISH3:0中相应位置1,REMOVE_FINISH全1时,REMOVE_2完成。死亡判定:R中的0-3行位于屏幕上方,不进行显示,仅有新生成的方块坐标会进入这一区域。因而,当消除完成后,如R3不为空,游戏结束。4)显示部分输出结果通过VGA接口接入显示屏显示。VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专

11、用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。使用Verilog HDL语言对VGA进行控制一般只需控制行扫描信号、列扫描信号和红绿蓝三色信号输出即可。VGA输出可分为四个模块:时钟分频模块、数据组织模块、接口控制模块和顶层模块。以下进行分块描述。时钟模块分频模块对FPGA系统时钟进行分频。由于使用的显示屏参数为640*480*60Hz,其真实屏幕大小为800*525,因此所需时钟频率为800*525*60Hz=25.175MHz,可近似处理为25MHz。FPGA系统时钟为1

12、00M,因此将其四分频即可基本满足显示要求。数据组织模块是将预备输出的数据组织为可以通过VGA接口控制的数据形式,本次设计中因接口已经协调,数据可不经过此模块进行组织,故可忽略该模块。接口控制模块通过VGA接口对显示屏进行控制。VGA的扫描顺序是从左到右,从上到下。例如在640X480的显示模式下,从显示器的左上角开始往右扫描,直到640个像素扫完,再回到最左边,开始第二行的扫描,如此往复,到第480行扫完时即完成一帧图像的显示。这时又回到左上角,开始下一帧图像的扫描。如果每秒能完成60帧,则称屏幕刷新频率为60Hz。宏观上,一帧屏幕由480个行和640个列填充而成,而实际上,一帧屏幕除了显示

13、区,还包含其他未显示部分,作为边框或者用来同步。具体而言,一个完整的行同步信号包含了左边框、显示区、右边框还有返回区四个部分,总共800个像素,其分配如下:图5: VGA行扫描时序同样的,一个完整的垂直同步信号也分为四个区域,总共525个像素,分配如下:图6:VGA场扫描时序模块通过组织输出行扫描信号、列扫描信号和三原色信号对显示屏实现控制。实验结果实验结果图如下:图7:实验结果图实验总结1)完成情况本次项目我们完成了既定目标,即完成一个经典小游戏“俄罗斯方块”的核心功能。在本次实验过程中,我们通过采用分工合作的方式,通过对系统功能的分析,确定解决方案,完成了对一个系统自上而下的设计,并尝试采

14、用控制单元+数据路径这样的方式来处理核心模块。2)不足与改进之处由于时间仓促,加之对俄罗斯方块逻辑复杂度估计不足,到最后展示之前我们才完成了对核心模块的调试。因此,在用户界面上没有做过多的调整。另外,由于在进行模块划分时,一些接口没有事先定义好,导致在最后系统整合时,不得不进行修改与调整,由此而造成了一部分时间的浪费。总的来说,通过这个项目,小组成员对于硬件设计“并行”的特点有了比较直接的认识,同时也在调试的过程中掌握了一些硬件调试常用的方法,也认识到了仿真的重要意义所在。另外就是关于团队协作方面的一个教训,在系统划分时要注意把接口定义好,以免造成不必要的代价。实验代码KeyBoard模块ti

15、mescale 1ns / 1psmodule key( input clk, input rst_n, input UP_KEY, input LEFT_KEY, input RIGHT_KEY, input DOWN_KEY, output reg rotate, output reg left, output reg right, output reg down ); reg 3:0 shift_up; reg 3:0 shift_left; reg 3:0 shift_right; reg 3:0 shift_down; always (posedge clk or negedge rst_n) begin if (!rst_n) shift_up = 0; else shift_up = shift_up2:0, UP_KEY; end always (posedge clk or negedge rst_n) begi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1