<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DIY創(chuàng)意設(shè)計(jì):手舞足蹈跳舞機(jī)的軟硬件實(shí)現(xiàn),方案設(shè)計(jì)

          DIY創(chuàng)意設(shè)計(jì):手舞足蹈跳舞機(jī)的軟硬件實(shí)現(xiàn),方案設(shè)計(jì)

          作者: 時(shí)間:2014-05-26 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/256928.htm

          項(xiàng)目關(guān)鍵技術(shù)及創(chuàng)新點(diǎn)的論述

          要處理大量的圖像文件,其中,圖層間的α運(yùn)算、圖像的卷動等圖形圖像運(yùn)算會頻繁發(fā)生,如果這些運(yùn)算都交給CPU處理,就會占用大量的CPU資源,會破壞圖像顯示的連貫性。我們引入PPU,用于將上述繁重的計(jì)算任務(wù)從CPU分離出來,從而提高系統(tǒng)的性能。

          也是項(xiàng)目的關(guān)鍵技術(shù)之一:SoC集成的Mp3 Decoder將游戲音樂文件解碼為PCM流,PCM流傳輸?shù)絻蓧K同樣大小的緩沖區(qū)(暫且假設(shè)每塊緩沖區(qū)的大小為1K),如下圖所示,這兩塊緩沖區(qū)相當(dāng)于構(gòu)成一個(gè)循環(huán)隊(duì)列,一塊緩沖區(qū)的PCM流文件播放完以后,接著播放另一個(gè)緩沖區(qū)中的流文件。在切換緩沖區(qū)時(shí),會產(chǎn)生中斷,在這個(gè)中斷周期,系統(tǒng)渲染新的圖像幀,從而實(shí)現(xiàn)聲像像同步。

          游戲開發(fā)Framework:這是在該硬件驅(qū)動上實(shí)現(xiàn)的一組API,它是獨(dú)立于跳舞機(jī)游戲的,提供游戲開發(fā)的常用接口,規(guī)定了游戲開發(fā)的模型。

          技術(shù)成熟性和可靠性論述:

          目前市場上有很多基于PC的跳舞機(jī)的設(shè)計(jì)案例可以參考(當(dāng)中的PPU部件等關(guān)鍵功能模塊可以參考任天堂公司紅白機(jī)的設(shè)計(jì)),技術(shù)已經(jīng)相當(dāng)成熟。

          項(xiàng)目實(shí)施方案

          方案基本功能框圖及描述

          硬件功能框圖及描述

          Compact Flash(CF) Card:

          扮演只讀存儲器的角色,用于存儲游戲文件;游戲文件分為三個(gè)部分:第一部分是控制程序,這一部分供CPU(MicroBlaze)執(zhí)行;第二部分是位圖文件,這一部分由PPU處理;第三部分是音樂文件,其中MP3格式的文件交給圖中所示的MP3 Decoder處理。

          之所以使用作為ROM,是因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CF卡">CF卡可以很方便地從系統(tǒng)中取出,并與PC兼容,這樣容易實(shí)現(xiàn)游戲軟件的更新。

          PPU(Physics Processing Unit):

          用于圖像顯示加速。在程序運(yùn)行過程中,有大量位圖文件需要顯示,考慮到處理這些位圖文件會給CPU帶來沉重的負(fù)擔(dān),我們引入PPU,用來實(shí)現(xiàn)圖像顯示加速功能。

          LCD顯示的圖像由三個(gè)圖層構(gòu)成,它們分別是背景層、卡通層與前景層。

          背景層用于顯示游戲背景圖像,背景圖像有時(shí)需要縱向移動。某些游戲?yàn)榱丝v向卷動顯示圖像,是通過反復(fù)改寫顯示映射單元的內(nèi)容來實(shí)現(xiàn)的,這種辦法處理速度太慢。為了更快地實(shí)現(xiàn)背景圖像的縱向移動,我們采用移動顯示窗口的辦法。移動顯示窗口的大小與LCD的大小相當(dāng)(1024×768);背景圖像文件在CF卡中以矩陣的形式連續(xù)存儲,每行也包含1024個(gè)像素。因此如果需要畫面移動,只需將顯示窗口向相反的方向移動即可。這樣每次顯示畫面移動一行,顯示窗口僅需要重新繪制一行,可以大幅度提高背景圖像的顯示速度,降低cpu占用。

          卡通層用于顯示游戲中的提示動作,提示動作提示玩家該在什么時(shí)間完成什么樣的游戲動作(例如踩下向前按鈕、伸出左手等)。CPU將提示動作的種類、顯示時(shí)間、顯示坐標(biāo)發(fā)送給PPU,PPU則在規(guī)定的時(shí)間,將規(guī)定種類的提示動作顯示在規(guī)定的坐標(biāo)處。

          前景層顯示玩家游戲動作的情況以及最終的得分情況。根據(jù)玩家完成游戲動作的時(shí)間與游戲規(guī)定時(shí)間的比較結(jié)果,可將完成情況分為不同的級別,每種級別對應(yīng)不同的前景層位圖文件。

          值得注意的是顯示過程中,層與層之間會出現(xiàn)α運(yùn)算。所有的α運(yùn)算均由PPU處理。

          MP3 Decoder/頻譜分析功能部件

          游戲中的聲音以mp3的格式儲存在CF卡中,cpu從Flash中讀取mp3文件,送給MP3 Decoder處理,將它轉(zhuǎn)化成PCM格式的數(shù)據(jù),再將PCM流轉(zhuǎn)換成模擬信號,最終通過揚(yáng)聲器播放出來。

          游戲中的聲音包括兩種,一種是游戲背景音樂,存儲格式是MP3格式,由MP3 Decoder處理,從游戲開始就連續(xù)播放,一直到游戲結(jié)束為止;另一種是游戲提示音,提示音持續(xù)時(shí)間較短,通常只有幾秒鐘,存儲格式為WAV格式,不需要解碼,不同提示音文件分別對應(yīng)著玩家完成游戲動作的情況或得分情況,CPU通過判斷玩家完成動作情況或得分情況控制播放對應(yīng)的提示音文件。

          要想營造絢麗、歡快的游戲氛圍,變幻多端的燈光效果是必不可少的,為了模擬這種效果,我們設(shè)計(jì)了頻譜分析模塊。該模塊從MP3 Decoder接收PCM流文件,通過對PCM文件進(jìn)行頻譜分析,得知游戲節(jié)奏的快慢,并控制LED指示燈根據(jù)游戲的節(jié)奏按照不同的頻率進(jìn)行顯示。

          /

          分別接收玩家腳部與手部的動作作為原始輸入,每個(gè)傳感器對應(yīng)一個(gè)寄存器,該寄存器用于記錄輸入狀態(tài)。游戲中讀取輸入的操作全部在中斷周期中完成,游戲中斷時(shí),如果傳感器有輸入,那么對應(yīng)的寄存器值被置為1,之后CPU讀各寄存器的狀態(tài)值,依次判斷玩家的輸入是否符合游戲要求,并確定游戲下一步的顯示圖像、播放聲音等操作。在中斷的最后階段還要對各狀態(tài)寄存器進(jìn)行復(fù)位。

          DDR SDRAM Controller

          UART

          用于調(diào)試。

          DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();