两款基于FPGA的俄罗斯方块游戏机的制作方法

文档序号:18461097发布日期:2019-08-17 02:02阅读:2355来源:国知局
两款基于FPGA的俄罗斯方块游戏机的制作方法

本发明为便携式fpga实验教学设备——俄罗斯方块游戏机,涉及vhdl硬件描述语言与fpga(fieldprogrammablegatearray,现场可编程门阵列)应用设计。



背景技术:

俄罗斯方块(tetris)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年发明的休闲游戏,共有七种基本方块,分别以s、z、o、l、t、j、i这七个字母形状命名,游戏的基本规则是移动、旋转和摆放随机生成的各种基本形状的方块,使之排列成完整的一行或多行并且消除它,得分。

俄罗斯方块是最经典的游戏之一,有超过50种语言的版本,拥有9项吉尼斯世界纪录,包括通过手提电话下载次数最多的游戏、被移植次数最多的游戏、在最多平台上运行的视频游戏,等等。它运行在几十种游戏平台上,从掌机、街机、家用机、个人电脑,到手机和pda。现在大部分俄罗斯方块游戏的开发主要集中在基于pc机的windows平台、手机平台和单片机。

基于fpga的俄罗斯方块游戏只限于ps/2键盘输入、vga显示的版本,没有点阵显示的版本。

俄罗斯方块游戏只需要六个游戏操作键,用ps/2键盘作为输入有些大材小用。vga显示器是体积比较大的外设,它限制了游戏场所只能固定在某个的地方。



技术实现要素:

1.要解决的技术问题

针对现有基于fpga的俄罗斯方块游戏机设备中存在的资源浪费、体积大、实验环境受限等缺点,本发明提供了一款便携式游戏机,用6键游戏键盘作为操作键,用16×8点阵显示模块作为游戏显示界面,用lcd1602液晶屏或4位七段数码管作为得分显示界面。

2.技术方案

本发明设计制作了俄罗斯方块游戏机的硬件电路,如图1所示,主要硬件组成部分包括:spartan3efpga芯片、50mhz晶振、复位按钮、6键游戏键盘、16×8点阵显示模块、lcd1602液晶屏(或4位七段数码管)。其中16×8点阵显示模块采用两种方案,①由两片74hc138与一片74hc595驱动,②由max7219驱动的8×8点阵模块级联而成。

在软件编程方面,采用自顶向下的设计方法、模块化设计思想,编写了vhdl程序。第一种设计方案如图2所示,包括如下七个功能模块:时钟分频、6键游戏键盘按键检测、俄罗斯方块游戏控制1、双端ram存储器、16×8点阵显示控制1(74hc138与74hc595驱动)、得分计数、4位七段数码管显示控制。第二种设计方案如图3所示,包括如下八个功能模块:时钟分频、6键游戏键盘按键检测、俄罗斯方块游戏控制2、两个双端ram存储器、16×8点阵显示控制2(max7219驱动)、得分计数、lcd1602液晶显示控制。

用vhdl语言编程实现了以上各功能模块;用顶层文件将它们连接起来,完成了软硬件设计、仿真、综合、下载与测试,达到了预期效果。

3.有益效果

相较于现有俄罗斯方块游戏的功能实现,本发明的优点在于:

(1)与ps/2键盘输入、vga显示的硬件电路相比,本发明采用6键游戏键盘作为操作键,采用16×8点阵显示模块作为游戏显示界面,制作的硬件电路为便携式的,不受游戏场所的限制。

(2)两种16×8点阵显示模块经济实用、占用fpga引脚资源少。

(3)本设备用于实验教学目的,便携式游戏机有利于学生利用课余时间积极主动地对vhdl语言及fpga应用设计进行深入研究,而不仅仅局限于课堂上的有限时间内。

(4)本发明搭建了基于fpga的俄罗斯方块游戏的硬件平台,用vhdl语言软件编程实现了对外设和游戏算法、游戏功能的控制。将理解外设的工作原理、学习vhdl编程语言与俄罗斯方块游戏设计的工程实际相结合,寓教于乐。

附图说明

图1指出了俄罗斯方块游戏机所用主控芯片(spartan3efpga)及输入、输出外设。

图2给出了第一种设计方案在软件编程中的各功能模块及相互连接关系。显示部分采用的是由74hc138与74hc595驱动的16×8点阵模块和4位七段数码管。

图3给出了第二种设计方案在软件编程中的各功能模块及相互连接关系。显示部分采用的是由max7219驱动的16×8点阵模块和lcd1602液晶屏。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例对本发明进行详细描述。

实施例1

在如图1所示的硬件电路中,6个游戏操作键分别控制俄罗斯方块的左移(ml)、右移(mr)、旋转(rot)、加速下落(af)、开始新游戏(start)、退出游戏(exit)。16×8点阵模块用于显示俄罗斯方块游戏的初始界面“go与→”和游戏界面。4位七段数码管用于显示初始界面“on”和得分界面(得分记录与当前得分)。lcd1602液晶屏用于显示俄罗斯方块游戏的按键功能界面(第一行显示“ml←rotmr→”、第二行显示“startaf!exit”)和得分界面(第一行显示“yourscore:玩家的当前得分”、第二行显示“topscore:得分纪录”)。

实施例2

在如图2所示的功能模块连接关系图中,各模块实现的功能如下:(1)时钟分频模块为其他模块提供所需的时钟频率。(2)6键游戏键盘按键检测模块用于检测按键,将键值输出用于控制俄罗斯方块游戏功能。(3)俄罗斯方块游戏控制1模块是游戏算法的核心模块,采用有限状态机的方式实现,包括15种状态:等待开始键、清屏、产生新块、显示新块、延时等待操作键、测试能否左移、左移、测试能否右移、右移、测试能否旋转、旋转、测试能否下移、下移、判断游戏是否结束、消行。(4)得分计数模块受复位按钮和俄罗斯方块游戏控制1模块的4个信号(cntline消行、gameover游戏结束、newgame开始新游戏、exitgame退出游戏)的控制。若按复位按钮,得分yourscore清零,最高记录topscore清零;若按“start”键(即newgame有变化),则开始新游戏,yourscore清零;若cntline有变化,说明有消行,每消一行加1分,yourscore自加1计数,逢十进一;若gameover有变化,说明此轮游戏结束了,如果yourscore大于topscore,则更新topscore;若按“exit”键(即exitgame有变化)则在游戏中途退出游戏,如果yourscore大于topscore,则更新topscore。当得分超过每档速度的预设分值,则俄罗斯方块按相应速度动作。(5)4位七段数码管显示控制模块用于控制4位七段数码管在开始界面显示“on”、在游戏界面显示得分记录和当前得分。(6)16×8点阵显示控制1模块实现选通点阵行、每16个数据串行输出、产生74hc595的时钟信号和输出锁存信号,从而控制74hc138驱动点阵行、控制74hc595驱动点阵列,实现16×8点阵显示。该模块还受俄罗斯方块游戏控制1模块的2个信号(newgame开始新游戏、exitgame退出游戏)的控制。若按“start”键,则显示游戏界面;若按“exit”键,则显示初始界面。(7)双端ram_t用于存取点阵显示信息。其a端口受俄罗斯方块游戏控制1模块的控制,控制其地址,读取或写入点阵信息。b端口为16×8点阵显示控制1模块提供点阵待显示信息。

实施例3

如图3所示的功能模块连接关系图与图2有几点不同,(1)图3所用16×8点阵模块是由max7219驱动的,需先对其进行初始化设置,并按照其说明文档的数据格式存储数据,所以双端ram_t存储的信息包括max7219初始化信息和点阵显示信息。(2)俄罗斯方块游戏控制2模块的点阵数据需与点阵相应点的亮灭一致。16×8点阵显示控制2模块需按max7219的时序图编写。(3)得分计数用lcd1602液晶屏显示。lcd1602的初始化信息和液晶显示信息存储在双端ram_s中,其a端口受lcd1602液晶显示控制模块的控制,使液晶屏在初始界面显示俄罗斯方块游戏的按键功能界面、在游戏界面显示得分记录和当前得分。其b端口受得分计数模块控制,控制其地址、修改yourscore或topscore的得分信息。

以上所述仅为本发明的较佳实施例而已,并不用于限制本发明。凡在本发明的原则和设计思路之内做的任何修改、同等替换和改进,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1