DIY创意设计:手舞足蹈跳舞机的软硬件实现,方案设计
项目背景及可行性分析
项目名称:手舞足蹈跳舞机
项目的主要内容:在游戏厅里转一圈不难发现,总会有几个少男少女在跳舞机前手舞足蹈,四周的观众围得水泄不通。劲爆的音乐,富有青春气息的舞姿使跳舞机游戏极其拉风,也正因为如此,跳舞机市场前景非常看好。
我们的目标就是设计一个基于FPGA的跳舞机。伴随着音乐的节奏,跳舞机的LCD显示器上会出现一个个方向不同的箭头符号,引导玩家完成相应的舞蹈动作,玩家可以在跳舞机上尽情地手舞足蹈,而跳舞机的压力传感器和光传感器会忠实地捕捉玩家的动作,转换器将处理过后的动作信息传递给CPU,CPU根据游戏规则,公正地给玩家评分,LCD则会公布玩家的得分情况。在游戏进行的过程中,LED会随着音乐节奏的快慢不停地调整发光节奏,竭力为玩家营造出绚丽的游戏氛围;扬声器也会不停地为玩家呐喊助威,尤其是玩家表现出色时,扬声器会不遗余力地为玩家喝彩。
首先我们要设计一个soc,片上系统的某些功能模块可以使用预定制模块IP核,例如MicroBlaze(我们选择它作为CPU)就可以使用Xilinx公司提供的IP核来实现;当然,我们的系统中也存在独立设计的系统结构,例如PPU(图像处理器)。该系统脱离了pc,这样大大降低了系统的成本与功耗,减小了体积,而且软硬件的更新比较方便。除了完成硬件设计之外,我们还有大量工作需要在soc上用软件完成,例如移植操作系统、编写游戏软件框架和跳舞机游戏软件等。
进展情况:现在处于模块设计阶段
项目关键技术及创新点的论述
要处理大量的图像文件,其中,图层间的α运算、图像的卷动等图形图像运算会频繁发生,如果这些运算都交给CPU处理,就会占用大量的CPU资源,会破坏图像显示的连贯性。我们引入PPU,用于将上述繁重的计算任务从CPU分离出来,从而提高系统的性能。
声像同步也是项目的关键技术之一:SoC集成的Mp3 Decoder将游戏音乐文件解码为PCM流,PCM流传输到两块同样大小的缓冲区(暂且假设每块缓冲区的大小为1K),如下图所示,这两块缓冲区相当于构成一个循环队列,一块缓冲区的PCM流文件播放完以后,接着播放另一个缓冲区中的流文件。在切换缓冲区时,会产生中断,在这个中断周期,系统渲染新的图像帧,从而实现声像像同步。
游戏开发Framework:这是在该硬件驱动上实现的一组API,它是独立于跳舞机游戏的,提供游戏开发的常用接口,规定了游戏开发的模型。
技术成熟性和可靠性论述:
目前市场上有很多基于PC的跳舞机的设计案例可以参考(当中的PPU部件等关键功能模块可以参考任天堂公司红白机的设计),技术已经相当成熟。
项目实施方案
方案基本功能框图及描述
硬件功能框图及描述
Compact Flash(CF) Card:
CF卡扮演只读存储器的角色,用于存储游戏文件;游戏文件分为三个部分:第一部分是控制程序,这一部分供CPU(MicroBlaze)执行;第二部分是位图文件,这一部分由PPU处理;第三部分是音乐文件,其中MP3格式的文件交给图中所示的MP3 Decoder处理。
之所以使用CF卡作为ROM,是因为CF卡可以很方便地从系统中取出,并与PC兼容,这样容易实现游戏软件的更新。
PPU(Physics Processing Unit):
用于图像显示加速。在程序运行过程中,有大量位图文件需要显示,考虑到处理这些位图文件会给CPU带来沉重的负担,我们引入PPU,用来实现图像显示加速功能。
LCD显示的图像由三个图层构成,它们分别是背景层、卡通层与前景层。
背景层用于显示游戏背景图像,背景图像有时需要纵向移动。某些游戏为了纵向卷动显示图像,是通过反复改写显示映射单元的内容来实现的,这种办法处理速度太慢。为了更快地实现背景图像的纵向移动,我们采用移动显示窗口的办法。移动显示窗口的大小与LCD的大小相当(1024×768);背景图像文件在CF卡中以矩阵的形式连续存储,每行也包含1024个像素。因此如果需要画面移动,只需将显示窗口向相反的方向移动即可。这样每次显示画面移动一行,显示窗口仅需要重新绘制一行,可以大幅度提高背景图像的显示速度,降低cpu占用。
卡通层用于显示游戏中的提示动作,提示动作提示玩家该在什么时间完成什么样的游戏动作(例如踩下向前按钮、伸出左手等)。CPU将提示动作的种类、显示时间、显示坐标发送给PPU,PPU则在规定的时间,将规定种类的提示动作显示在规定的坐标处。
前景层显示玩家游戏动作的情况以及最终的得分情况。根据玩家完成游戏动作的时间与游戏规定时间的比较结果,可将完成情况分为不同的级别,每种级别对应不同的前景层位图文件。
值得注意的是显示过程中,层与
DIY 光传感器 手舞足蹈跳舞机 声像同步 CF卡 MP3Decoder 压力传感器 相关文章:
- DIY之乐:基于PIC32的以太网音箱设计案例,硬件框图、器件选型、数据结构、软件流程(04-09)
- DIY小设计:智能闹钟的简单软硬件实现(04-14)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)
- DIY智能家居:基于AVR的智能节能插排的系统解决方案(04-16)
- DIY你的电子玩具:网络音乐电台,给你系统解决方案、软硬件设计实现(04-16)
- DIY机器人:神通广大的核辐射探测机器人设计方案,完整流程框图(05-04)