基于FPGA的俄罗斯方块游戏设计毕业论文打印版.docx
- 文档编号:27339435
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:56
- 大小:574.10KB
基于FPGA的俄罗斯方块游戏设计毕业论文打印版.docx
《基于FPGA的俄罗斯方块游戏设计毕业论文打印版.docx》由会员分享,可在线阅读,更多相关《基于FPGA的俄罗斯方块游戏设计毕业论文打印版.docx(56页珍藏版)》请在冰豆网上搜索。
基于FPGA的俄罗斯方块游戏设计毕业论文打印版
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于
1、保密□,在年解密后适用本授权书。
2、不保密□。
(请在以上相应方框内打“√”)
作者签名:
年月日
导师签名:
年月日
基于FPGA的俄罗斯方块游戏设计
摘要:
俄罗斯方块游戏是一款风靡全球的游戏,它的基本规则是旋转、移动、下落和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并消除得分。
本设计是用FPGA开发板实现俄罗斯方块,具体是在显示器上显示10×20的点阵以及外围方框。
点阵表示方块,方框表示方块的活动范围。
关键词:
俄罗斯方块VGAFPGA串口通信
Abstract:
Tetrisisapopulargamearoundtheworld,it’sbasicruleistorotate,moveandplaceallsortsofboxeswhichthegameautomaticallyoutput,makingthemarrangedincompleteoneormorelinestogettherelevantscore.ThedesignintroducesaTetrisgamethroughFPGAprogramming,the10×20dotmatrixandexternalboxesareshownonthedisplay.Thedotmatrixrepresentbox,andtheboxesrepresentthescopeofactivitiesofthebox.
Keywords:
TetrisVGAFPGASerialport
前言:
在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。
但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。
知道今天,在中国从事游戏设计的人任然很少,但是游戏行业的发展之快,远超家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。
俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,随机产生不同的七种类型方块,根据时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作。
然后程序根据这七种方块对叠成各种不同的模型。
俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏,深受广大玩家喜爱。
这个游戏有的简单,有的复杂,但其根本原理是一样的,都是对运动的方块组合,来训练玩家的反应能力。
谈到游戏软件,大多数人都认为其神妙莫测,高不莫及。
而一般游戏软件也确实具有很高的技术难度,随着开发工具及软件开发方法学的不断发展,动手开发游戏也不是十分困难的。
俄罗斯方块游戏是一种古老而有趣的游戏,游戏软件不计其数,网上就有关于实现的复杂算法和设计,其难度让一般初学者望而却步。
本文利用FPGA硬件描述语言VHDL进行游戏的开发和实现。
1绪论
1.1游戏的历史
游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。
1.1.1追根溯源
真正的电子游戏机产生于20世纪70年代。
1971年,麻省理工学院的学生NolanBushnell设计了世界上的第一个业务用游戏机(俗名街机),叫做《电脑空间》。
这台游戏机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,不过由于市场因素这款游戏以失败告终。
但是最后他在电子游戏的发展上取得了非凡的成就。
上面介绍的是专用机游戏的历史,而最早的电脑游戏可以追溯到1972年,一个叫Crowther的工程师用当时最流行的主机――DEC公司的PDP-10编写一段简单的FORTRAN程序。
在这个程序里,Crowther设计了一张地图,地图上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。
这个程序被公认为是最早的电脑游戏程序。
1989年,BroderBund公司的设计师乔丹.麦克纳根据阿拉伯民族的古老传说《一千零一夜》在Apple平台上制作了一部动作冒险相结合的电脑游戏――波斯王子。
这个游戏获得了第一作,它代表了当时电脑技术的最高水平。
1986年,任天堂公司发售了一款真正的游戏巨作――超级马里奥。
20世纪80年代IBMPC兼容机的出现打破了Apple公司的垄断地位。
到了20世纪90年代,游戏业才真正成熟起来,成为了一种产业。
由于PC机价格非常低而且硬件速度越来越快,游戏逐渐成为人们生活中不可缺少的一部分。
游戏产业也逐渐发展成熟。
1.1.2图形硬件的革命
图形硬件的飞速发展是近些年来的事情,部分原因是来自工业方面的压力,例如在军事和医疗方面对于实时图形的需求很强烈,而交互娱乐产业也极大的推动了图形硬件的发展。
技术上的因素同样也推动着图形硬件的发展,许多图形算法可以很容易地表达为并行方式,这样硬件执行的效率变得很高。
摩乐定律也起了作用,越来越多的晶体管可以集成到一块单独的芯片上。
在所谓的GPU(图形处理器)概念出现以前,特殊的图形硬件只出现在诸如SGI和E&S系统里面,这些硬件价格太昂贵,不过这些公司提供了第一代基于硬件的顶点变换和纹理映射的解决方案。
1.2游戏的意义与内涵
游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。
因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。
1.3游戏的组成因素
“游戏”,最简单的定义,就是一种供人们娱乐休闲的快乐元素。
从更专业的角度形容,“游戏”是具有特定行为模式、规则条件、身心娱乐及输赢的一种行为表现。
这种行为表现具备以下4个要素。
行为模式:
“游戏”最简单的要素就是游戏有特定的流程模式,这种流程模式贯穿于整个游戏的行为,用户必须依照它的模式流程来执行。
倘若一种游戏没有了特定的行为模式,那么就没有执行的行为;在没有执行的行为之后,这个游戏也玩不下去了。
举个例子来说,如果猜拳游戏没有了剪刀、石头、布等行为模式,那么这还能叫做“猜拳游戏”吗?
所以不管游戏的流程有多么复杂还是多么简单,一定要有特定的行为模式。
条件规则:
当游戏有了一定的行为模式后,接着就必须制定出一系列的条件规则。
简单来说,这些游戏的条件规则就是大家必须去遵守的游戏行为守则,只要是大家一致以为的游戏行为,在游戏中,玩家就必须遵守它,如果不遵守这种游戏行为,那么就失去了公平性。
如同一种简单的球赛,打球的英文解释可以用PLAYGAME来加以说明,按照英文字面上的解释,它就是执行游戏的行为,而球赛必须有一定的条件规则,并且参与者都要必须去遵守它,不能遵守它就叫作“犯规”。
所以不管是什么游戏,它都会具备一组规则条件,在游戏进行的时候才会有足够的公平性。
一般而言,游戏又可以分为动态和静态两种形态。
动态的游戏必须配合肢体动作,如猜拳游戏;而静态游戏则是较偏向思考的行为,如同纸上游戏。
然而不管是动态或是静态游戏,只要具备上述4项组成要素,都可以将它称为“游戏”。
2游戏的可行性分析
2.1设计目的
综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。
2.2可行性研究前提
基本需求:
系统开发的总体任务是实现游戏的可操作性、美观性、及时性。
开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。
主要实现FPGA的VHDL程序开发,对游戏中的图形图像进行键盘控制。
游戏者可以通过上下左右键来对游戏进行操作。
主要开发目标:
采用结构化设计方法,开发出一个可操作性、美观性、及时性的游戏,实现FPGA的VHDL程序开发,并通过此次软件开发过程全面提高自身的综合素质。
评价尺度:
由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。
2.3可行性分析
管理可行性:
该游戏软件为首次开发,目的只为提高工作自身素质和检查自学VHDL的效果,用QuartusⅡ11.0软件编写,所有功能均根据基本需求所做。
便于管理,所以在这方面是可以实现的。
技术可行性:
可用与本游戏的编程语言有VB,Java,Delphi,VHDL等,考虑到用于编写程序的困难度,和对语言的了解程度,选择硬件描述语言VHDL作为编程语言。
需要对变量定义、变量初始化、界面初始化、游戏初始化、然后进入游戏、处理游戏过程中的各种操作。
2.4结论意见
综上所述,本游戏软件的技术成熟、完备。
各方面均无重大问题,因此本游戏软件可开始着手编写。
3需求分析
3.1引言
对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。
3.2游戏需求
随机给出不同的形状(田字形、长条形、Z字形、反Z形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉。
游戏功能要求如下:
游戏界面需求:
简单良好的用户界面,在显示频上显示游戏方框区间,游戏界面,考虑到自己的能力有限,目前只打算完成简单的游戏试玩。
游戏形状(方块)需求:
良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为顺指针。
键盘处理事件:
方块下落时,可通过键盘方向键(J、K、L键)对该方块进行旋转、向左、向右移动。
显示需求:
当不同的方块填满一行时可以消行,剩余方块向下移动。
4设计分析
4.1系统方案设计支持
4.1.1开发环境
本次设计使用的软件是Altera公司生产的QuartusⅡ软件。
它是Altera公司的综合性PLD开发软件,可以完成从设计输入到硬件配置的完整PLD设计流程。
4.1.2编程语言
本次设计使用的编程语言是硬件编程语言VHDL,主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
4.1.3硬件平台
本次设计使用的核心器件是AlteraCycloneⅡEP2C35F484C8
4.2系统实现框图
本游戏有通过FPGA实现的,主要通过键盘送入数据,通过PS/2接口送入到FPGA中,然后通过FPGA程序控制,通过VGA接口输出到VGA显示频上,所以我的设计方案如图4.2.1所示:
图4.2.1设计框图
设计方案介绍:
由于VGA是有640×480的显示矩阵显示,所以我们将俄罗斯方块分成20×10的矩阵,每一个矩阵代表一个方块,每一个方块一起显示,如图4.2.2所示:
图4.2.2方块显示图
这样当有一个地方有方块时,就会有将矩阵对应的地方显示,其他没有方块的地方就不显示。
4.3模块实现
4.3.1实验电路图
图4.3.1实验电路图
上图给出了系统的连接组成关系:
1)PS/2模块:
键盘接收模块,读取键盘发送的扫描码
2)maichong模块:
分频得到1S电子时钟,控制游戏时间
3)Jiankong模块:
游戏控制模块,程序主控单元,通过状态机控制
4)rand模块:
随机产生0-14共15个随机整数,分别代表15种方块的形状
5)fun1模块:
产生VS、HS两路垂直扫描信号和水平扫描信号
4.3.2随机产生模块
随机数模块用于产生0-14共15个随机整数,分别代表15种方块的形状。
它的产生机理是参考了信道编码中的线性反馈移位寄存器(LFSR),所产生的其实是一列伪随机数。
具体原理如下:
在游戏里,我们需要的是一个更大的随机数,这次我们用了一个16bit的伪随机数。
通过查找资料,我们找到不同bit的本原多项式如图4.3.4所示:
图4.3.4伪随机序列图
根据16bit的本原多项式可以画出它的电路原理图4.3.5如下:
图4.3.516bit的电路原理图
之后再将产生的16bit二进制数化成十进制,并对15取余,则可以得到一列0-14的伪随机数列。
图4.3.6伪随机序列图形生产图
1)每次执行首先为随机数产生一个不同的初值
2)随机选取一个图形
3)当前图形在4×4网格中的位置信息
4)改变图形形状
定义一个4x4方阵,共16个小格。
用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示:
图4.3.7随机序列生产的7种方块图形
4.3.3PS/2键控模块
键盘作为嵌入式系统的一种最常用人机接口设备,在嵌入式系统中有着相当广泛的应用。
但开发者一般均采用自行设计的简易矩阵键盘,这类键盘仅仅是按行、列排列起来的矩阵开关,往往需要单独设计并制作,通用性不强。
当需要较多的按键时,则会占用较多的I/O端口,在软件上则要进行上电复位按键扫描及通信处理,而且还要加上按键的去抖动处理,增大了系统的软硬件开销。
而PS/2键盘,内嵌自动去除按键抖动的设计,自动地识别键的按下与释放,软硬件可发简便,价格便宜,稳定可靠,将PS/2键盘作为嵌入式系统的输入设备已经成为可行的方案。
而目前关于PS/2键盘控制的应用大部分采用单片机控制,与单片机相比,FPGA具有比单片机更加灵活,集成度更高,容易移植等特点。
1、PS/2物理特性
PS/2设备接口用于许多现代的鼠标和键盘,它最初由IBM开发,最常见的为6脚mini-DIN,其引脚结构和外形如图4.3.8所示。
图4.3.8PS/2接口图
PS/2设备有主从之分,现在广泛使用的PS/2键盘鼠标均工作在从设备方式下。
PS/2接口的时钟与数据线都是集电极开路结构,必须外接上拉电阻,一般上拉电阻设置在主设备中,主从设备之间的数据通信采用双向同步方式传输,时钟信号一般由从设备产生。
2、数据包的结构
键盘的状态每改变一次,键盘至少会发出三个字节的数据包,在有键按下时会向主机发送该键的通码(MakeCode),当键释放时发送断码(BreakCode)。
例如:
键“A”的通码为0x1C,因此当要传送键“A”时,键盘发送的数据包的代码是:
0x1C,0xF0,0x1C。
3、接口的时序逻辑
PS/2协议是一种双向半双工串行通信协议,时钟信号由键盘产生,最大时钟频率为33kHz,推荐频率在15kHz。
通信两端通过Clock同步,通过Data交换数据,任何一方如果想禁止另一方通信时,只需将Clock拉到低电平。
其传输时序根据传输的方向不同分为发送和接收两个不同时序逻辑,图4.3.9是从键盘到主机的时序图。
图4.3.9键盘到主机的时序图
其中:
Start:
起始位,总为‘0’(低电平)
Data0~Data7:
8位数据位(低位在前,高位在后)
Parity:
奇偶校验位(为奇校验)
Stop:
停止位,总为‘1’(高电平)
当键盘要向主机通信时,键盘总是首先检查时钟线是否为高电平,如果不是则表明是主机正在通信,必须缓冲要发送的数据直到重新获得总线的控制权(键盘有16个字节的缓冲区),即等到时钟线是高电平才能发送数据。
而且从键盘到主机的数据只能在时钟的下降沿时才能被读取。
当主机到键盘进行通信时,主机会首先把时钟线和数据线设置为“请求发送”状态。
具体方式为:
首先下拉时钟线至少100μs来抑制通信,然后下拉数据线“请求发送”,最后释放时钟。
在此过程中,键盘在不超过10μs的间隔内就会检查这个状态。
当键盘检查到这个状态时,就开始产生时钟。
和键盘发送的数据读取方式不一样,主机发送的数据必须在时钟的上升沿读取。
4、程序设计过程
0
1
0
1
图4.3.10PS/2程序设计过程
4.3.4VGA显示模块
当前显示器越来越廉价,如果用显示器作为嵌入式设备的显示终端,不管从显示效果和成本上,都比常用的单色液晶、低分辨率彩色液晶等都有优势。
VGA显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备,FPGA以其结构的优势可以使用很少的资源产生VGA的各种控制信号。
因此我们采用基于FPGA的VGA显示系统,实现真彩色显示。
1、VGA显示概述
CRT显示器作为一种通用型显示设备,如今已广泛应用于我们的工作和生活中。
与嵌入式系统中常用的显示器件相比,它具有显示面积大、色彩丰富、承载信息量大、接口简单等优点,如果将其应用到嵌入式系统中,可以显著提升产品的视觉效果。
如今随着液晶显示器的出现,越来越多的数字产品开始使用液晶作为显示终端。
但基于VGA标准的显示器仍是目前普及率最高的显示器。
若驱动此类显示器,需要很高的扫面频率,以及极短的处理时间,正是由于这些特点,所以可以用FPGA来实现对VGA显示器的驱动。
本次专业课程设计即选用FPGA来实现VGA的显示。
随着FPGA的不断发展及其价格的不断下降,FPGA的可编程逻辑设计的应用优势逐渐显现出来。
现在,越来越多的嵌入式系统选择了基于FPGA的设计方案。
在基于FPGA的大规模嵌入式系统设计中,为实现VGA显示功能,既可以使用专用的VGA接口芯片如SPX7111A等,也可以设计和使用基于FPGA的VGA接口软核。
虽然使用VGA专用芯片具有更稳定的VGA时序和更多的显示模式可供选择等优点,但设计和使用VGA接口软核更具有以下优势:
(1)使用芯片更少,节省板上资源,减小布线难度;
(2)当进行高速数据传输时,具有更小的高频噪声干扰;(3)FPGA(现场可编程门阵列)设计VGA接口可以将要显示的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
2、VGA显示接口
VGA接口负责向显示器输出相应的显示信号。
VGA接口是一种D型接口,上面共有15个针孔,非对称地分成3排,每排5个,其排列及接口定义如图4.3.11所示。
图4.3.11VGA接口图
VGA接口为显示器提供两类信号,一类是数据信号,一类是控制信号。
数据信号包括红(red)、绿(green)、蓝(blue)三种信号,简称RGB信号,控制信号包括水平同步信号和垂直同步信号。
如果能从FPGA发出这5个信号到VGA接口,就可以实现对VGA的控制。
输出不同分辨率时,水平同步信号和垂直同步信号的频率也不同。
图4.3.12是在部分分辨率条件下使用的相应频率
分辨率
垂直同步信号频率HZ
水平同步信号频率HZ
图像时钟频率MHZ
640*480
75.000
37.500
31.500
800*600
75.000
46.875
49.500
图4.3.12VGA部分分辨率条件下使用的相应频率
3、VGA显示原理
VGA显示图像原理:
常见的彩色显示器,一般由CRT(阴极射线管)构成。
彩色是有R,G.B(红:
RED,绿:
GREEN,蓝:
BLUE)三基色组成。
显示是用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有银光粉的荧光屏幕上,产生R,G,B三基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步,扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
图4.3.13行场扫描时序图
图4.3.14行扫描时序要求(单位:
像素)
4、VGA硬件实现
VGA的图形模式分为3类:
CGA、EGA兼容的图形模式;标准的VGA图形模式;VGA扩展图形模式。
后两种图形模式统称为VGA图形模式。
本研究基于标准VGA模式来实现。
常见的彩色显示器一般由CRT(阴极射线管)构成,每一个像素的色彩由红、绿、蓝三基色构成。
显示时采用的是逐行扫描的方式。
VGA显示模块产生的由水平同步信号和垂直同步信号控制阴极射线管中的电子枪产生电子束,轰击涂有荧光粉的屏幕,产生红、绿、蓝三基色,于显示屏上合成一个彩色像素点。
图4.3.16表示的是VGA显示模块与CRT显示器的控制框图。
图4.3.16VGA显示模块与CRT显示器的控制框图
电子束扫描一幅屏幕图像上的各个点的过程称为屏幕扫描。
现在显示器都是通过光栅扫描方式来进行屏幕扫描。
在光栅扫描方式下,电子束按照固定的路径扫过整个屏幕,在扫描过程中通过电子束的通断强弱来控制电子束所经过的每个点是否显示或显示的颜色。
电子枪在VGA显示模块产生的行同步、场同步等控制信号的作用下进行包括水平扫描、水平回扫、垂直扫描、垂直回扫等过程。
光栅扫描的路径通常为:
从上到下扫过每一行,在每一行中从左到右地进行扫描。
其过程如下:
电子束从屏幕左上角开始向右扫,当到达屏幕的右边缘时,电子束关闭(水平消隐),并快速返回屏幕左边缘(水平回扫),然后在下一条扫描线上开始新的一次水平扫描。
一旦所有的水平扫描均告完成,电子束在屏幕的右下角结束并关闭(垂直消隐),然后迅速返回到屏幕的左上角(垂直回扫),开始下一次光栅扫描。
图4.3.17VGA与FPGA引脚连接
5、VGA算法流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 俄罗斯方块 游戏 设计 毕业论文 打印