新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DIY创意设计:手舞足蹈跳舞机的软硬件实现,方案设计

DIY创意设计:手舞足蹈跳舞机的软硬件实现,方案设计

作者: 时间:2014-05-26 来源:网络 收藏

本文引用地址://www.cghlg.com/article/256928.htm

项目关键技术及创新点的论述

要处理大量的图像文件,其中,图层间的α运算、图像的卷动等图形图像运算会频繁发生,如果这些运算都交给CPU处理,就会占用大量的CPU资源,会破坏图像显示的连贯性。我们引入PPU,用于将上述繁重的计算任务从CPU分离出来,从而提高系统的性能。

也是项目的关键技术之一:SoC集成的Mp3 Decoder将游戏音乐文件解码为PCM流,PCM流传输到两块同样大小的缓冲区(暂且假设每块缓冲区的大小为1K),如下图所示,这两块缓冲区相当于构成一个循环队列,一块缓冲区的PCM流文件播放完以后,接着播放另一个缓冲区中的流文件。在切换缓冲区时,会产生中断,在这个中断周期,系统渲染新的图像帧,从而实现声像像同步。

游戏开发Framework:这是在该硬件驱动上实现的一组API,它是独立于跳舞机游戏的,提供游戏开发的常用接口,规定了游戏开发的模型。

技术成熟性和可靠性论述:

目前市场上有很多基于PC的跳舞机的设计案例可以参考(当中的PPU部件等关键功能模块可以参考任天堂公司红白机的设计),技术已经相当成熟。

项目实施方案

方案基本功能框图及描述

硬件功能框图及描述

Compact Flash(CF) Card:

扮演只读存储器的角色,用于存储游戏文件;游戏文件分为三个部分:第一部分是控制程序,这一部分供CPU(MicroBlaze)执行;第二部分是位图文件,这一部分由PPU处理;第三部分是音乐文件,其中MP3格式的文件交给图中所示的MP3 Decoder处理。

之所以使用作为ROM,是因为可以很方便地从系统中取出,并与PC兼容,这样容易实现游戏软件的更新。

PPU(Physics Processing Unit):

用于图像显示加速。在程序运行过程中,有大量位图文件需要显示,考虑到处理这些位图文件会给CPU带来沉重的负担,我们引入PPU,用来实现图像显示加速功能。

LCD显示的图像由三个图层构成,它们分别是背景层、卡通层与前景层。

背景层用于显示游戏背景图像,背景图像有时需要纵向移动。某些游戏为了纵向卷动显示图像,是通过反复改写显示映射单元的内容来实现的,这种办法处理速度太慢。为了更快地实现背景图像的纵向移动,我们采用移动显示窗口的办法。移动显示窗口的大小与LCD的大小相当(1024×768);背景图像文件在CF卡中以矩阵的形式连续存储,每行也包含1024个像素。因此如果需要画面移动,只需将显示窗口向相反的方向移动即可。这样每次显示画面移动一行,显示窗口仅需要重新绘制一行,可以大幅度提高背景图像的显示速度,降低cpu占用。

卡通层用于显示游戏中的提示动作,提示动作提示玩家该在什么时间完成什么样的游戏动作(例如踩下向前按钮、伸出左手等)。CPU将提示动作的种类、显示时间、显示坐标发送给PPU,PPU则在规定的时间,将规定种类的提示动作显示在规定的坐标处。

前景层显示玩家游戏动作的情况以及最终的得分情况。根据玩家完成游戏动作的时间与游戏规定时间的比较结果,可将完成情况分为不同的级别,每种级别对应不同的前景层位图文件。

值得注意的是显示过程中,层与层之间会出现α运算。所有的α运算均由PPU处理。

MP3 Decoder/频谱分析功能部件

游戏中的声音以mp3的格式储存在CF卡中,cpu从Flash中读取mp3文件,送给MP3 Decoder处理,将它转化成PCM格式的数据,再将PCM流转换成模拟信号,最终通过扬声器播放出来。

游戏中的声音包括两种,一种是游戏背景音乐,存储格式是MP3格式,由MP3 Decoder处理,从游戏开始就连续播放,一直到游戏结束为止;另一种是游戏提示音,提示音持续时间较短,通常只有几秒钟,存储格式为WAV格式,不需要解码,不同提示音文件分别对应着玩家完成游戏动作的情况或得分情况,CPU通过判断玩家完成动作情况或得分情况控制播放对应的提示音文件。

要想营造绚丽、欢快的游戏氛围,变幻多端的灯光效果是必不可少的,为了模拟这种效果,我们设计了频谱分析模块。该模块从MP3 Decoder接收PCM流文件,通过对PCM文件进行频谱分析,得知游戏节奏的快慢,并控制LED指示灯根据游戏的节奏按照不同的频率进行显示。

/

分别接收玩家脚部与手部的动作作为原始输入,每个传感器对应一个寄存器,该寄存器用于记录输入状态。游戏中读取输入的操作全部在中断周期中完成,游戏中断时,如果传感器有输入,那么对应的寄存器值被置为1,之后CPU读各寄存器的状态值,依次判断玩家的输入是否符合游戏要求,并确定游戏下一步的显示图像、播放声音等操作。在中断的最后阶段还要对各状态寄存器进行复位。

DDR SDRAM Controller

UART

用于调试。

DIY机械键盘相关社区:机械键盘DIY




评论


相关推荐

技术专区

关闭