新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 低成本人機(jī)交互設(shè)計(jì):基于FPGA的體感游戲

低成本人機(jī)交互設(shè)計(jì):基于FPGA的體感游戲

作者: 時(shí)間:2016-10-29 來源:網(wǎng)絡(luò) 收藏

體感游戲是視覺與本體感覺和動(dòng)作控制的集合,伴隨著虛擬現(xiàn)實(shí)技術(shù)的迅猛發(fā)展,正逐步走入市場。為了達(dá)到視覺、運(yùn)動(dòng)相結(jié)合的目的,采用加速度傳感器與VGA顯示器相結(jié)合的方法,通過戴有速度手套的手的運(yùn)動(dòng)來完成對游戲界面中的滑塊控制,接住隨機(jī)下落的方塊而獲得分?jǐn)?shù)。最后進(jìn)行了板級(jí)測試,實(shí)現(xiàn)了開機(jī)界面、模式切換、難度調(diào)節(jié)、計(jì)分、游戲暫停與重新開始等功能。通過驗(yàn)證,游戲獲得了較好的互動(dòng)性、參與感與沉浸感。

本文引用地址:http://www.butianyuan.cn/article/201610/308394.htm

計(jì)算機(jī)游戲領(lǐng)域已經(jīng)到了一個(gè)同質(zhì)化相當(dāng)嚴(yán)重的時(shí)代。機(jī)械性的重復(fù)相同的動(dòng)作致使玩家的興趣越來越低。而現(xiàn)在游戲產(chǎn)業(yè)迎來了一個(gè)轉(zhuǎn)折點(diǎn),開始向交互性、置入感等方向發(fā)展。而良好的沉浸感要求游戲必須在互動(dòng)性上有創(chuàng)新。過去,游戲大部分是通過鍵盤與鼠標(biāo)來完成控制的,但隨著傳感器技術(shù)、微機(jī)視覺的進(jìn)步,使得利用自己的行動(dòng)來對機(jī)器發(fā)出指令的愿望得以實(shí)現(xiàn)。這種人機(jī)互動(dòng)模式以更為自然性、直觀性的運(yùn)動(dòng)、語音等摸式代替電腦的鍵盤和鼠標(biāo)等外設(shè)。

現(xiàn)在已經(jīng)有了很多創(chuàng)新成果,如三維攝像機(jī)、傳感器球拍、數(shù)據(jù)手套等。一些公司也推出了各種平臺(tái),如日本任天堂公司的Wii、微軟的Kinect、華碩的Xtion等。這些設(shè)備一般較為昂貴,本文設(shè)計(jì)目的是低成本來完成人機(jī)交互,利用FPGA作為主控制器,借助現(xiàn)代家庭較為普及的電腦的顯示器,實(shí)現(xiàn)體感游戲的設(shè)計(jì),提高游戲的沉浸感與趣味性,同時(shí)保持了對于鍵盤操作的兼容性。

1 系統(tǒng)設(shè)計(jì)方案

該系統(tǒng)主要由兩個(gè)部分組成,分別是數(shù)據(jù)采集單元、顯示控制單元。數(shù)據(jù)采集單元主要實(shí)現(xiàn)對運(yùn)動(dòng)控制信息的采集、數(shù)據(jù)的修正與處理、上傳到顯示控制單元等功能。顯示控制單元主要實(shí)現(xiàn)游戲的開始、難度設(shè)定、模式切換、顯示等功能。整體框圖如圖1所示。

圖1 系統(tǒng)整體框圖

1.1 數(shù)據(jù)采集單元

數(shù)據(jù)采集單元主要包括從控制器、加速度傳感器、LED顯示、按鍵、串口四個(gè)硬件部分。各部分的選擇和功能如下:

從控制器選用STC89C51單片機(jī),此系列單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾、低功耗、高性價(jià)比的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),并且有LQFP封裝,使得速度手套可以做到小型化。

加速度傳感器選用的是ADXL345。它是一款完整的3 軸加速度測量系統(tǒng)。既能測量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度,也能測量靜止加速度,例如重力加速度,使得器件可作為傾斜傳感器使用。本設(shè)計(jì)中利用了其測靜止加速度的功能,得到傾斜角度,從而產(chǎn)生控制指令。

采集單元中用了兩個(gè)LED燈,用于顯示當(dāng)前速度手套的輸出狀態(tài):當(dāng)左側(cè)燈亮說明發(fā)出的控制信號(hào)為向左運(yùn)動(dòng)。兩個(gè)按鍵輸入用于游戲的控制信號(hào)暫停和分?jǐn)?shù)清零的信號(hào)的產(chǎn)生。

采集單元利用串口將控制信號(hào)上傳到顯示控制單元。RS232是由電子工業(yè)協(xié)會(huì)(Electronic Industries Association,EIA)所制定的異步傳輸標(biāo)準(zhǔn)接口。在低通信速率下,直接連接的最大物理距離為15 m,可以使得人能遠(yuǎn)離屏幕來操作游戲,防止眼睛疲勞。后期會(huì)考慮采用315模塊來實(shí)現(xiàn)無線的操作。

1.2 顯示控制單元

此單元是整個(gè)系統(tǒng)的核心,完成了游戲的大部分功能設(shè)計(jì),主要包括主控制器、VGA接口、PS/2接口、獨(dú)立按鍵、數(shù)碼管、串口等硬件部分。

主控制器采用Altera于2004年推出的CycloneⅡ的FPGA,型號(hào)為EPC2C8208。其功耗較低,核電壓只有1.2 V,片上RAM 有162 Kb,可以用于配置為RAM,ROM,F(xiàn)IFO等,時(shí)鐘利用50 MHz的有源晶體產(chǎn)生??偪刂茊卧?fù)責(zé)接收數(shù)據(jù)采集單元的信號(hào)、兩種游戲模式的切換和控制指令的產(chǎn)生、VGA顯示控制、游戲初始化界面存儲(chǔ)等。

2 系統(tǒng)軟件實(shí)現(xiàn)

游戲主要實(shí)現(xiàn)的功能有:歡迎界面與游戲界面的切換以及VGA顯示;速度手套模式與鍵盤模式的切換;計(jì)分系統(tǒng),包含分?jǐn)?shù)的顯示、清零等;游戲的難度等級(jí)設(shè)置、游戲的開始界面設(shè)計(jì)、暫停、結(jié)束、重新開始等功能。軟件設(shè)計(jì)包括單片機(jī)、FPGA的程序設(shè)計(jì)以及兩者通信指令編碼準(zhǔn)則設(shè)定三個(gè)方面。

2.1 單片機(jī)程序設(shè)計(jì)

單片機(jī)部分主要功能為通過采集加速度傳感器和按鍵的信號(hào),根據(jù)兩個(gè)單元間的編碼準(zhǔn)則產(chǎn)生相應(yīng)的控制指令,通過串口上傳到顯示控制中心。程序設(shè)計(jì)流程圖如圖2所示。

圖2 單片機(jī)程序流程圖

2.2 FPGA程序設(shè)計(jì)

FPGA是游戲的主控制器,完成了游戲的大部分功能,頂層設(shè)計(jì)文件中主要包括輸入顯示類模塊、VGA核心模塊、存儲(chǔ)模塊三類模塊。其中輸入顯示類模塊主要有分頻模塊、PS/2接收模塊、串口接收模塊、指令處理模塊、數(shù)碼管顯示模塊;存儲(chǔ)模塊包括基于FPGA 片上RAM的RAM和ROM模塊。頂層設(shè)計(jì)框圖如圖3所示。

圖3 FPGA頂層設(shè)計(jì)框圖

2.2.1 輸入顯示類模塊

獨(dú)立按鍵用于模式的選擇、游戲難度的調(diào)節(jié)、由歡迎界面到游戲界面的切換;串口部分用于接收來自數(shù)據(jù)采集單元的控制指令,經(jīng)過譯碼模塊后送入模式選擇模塊;PS/2模塊用于接收鍵盤信號(hào)輸入并產(chǎn)生指令送入模式選擇模塊;數(shù)碼管用于顯示當(dāng)前的游戲模式、難度等級(jí)和獲得分?jǐn)?shù)。

顯示器采用的分辨率為640×480 的,刷新頻率為60 Hz,根據(jù)VGA常見刷新頻率時(shí)序表可知,需要時(shí)鐘為25 MHz左右,板子輸入時(shí)鐘為50 MHz,經(jīng)過分頻模塊后可以提供25 MHz的時(shí)鐘。

2.2.2 存儲(chǔ)模塊

設(shè)計(jì)中,由于采用的是FPGA的片上RAM作為存儲(chǔ)介質(zhì),受到其162 Kb的約束,只能設(shè)計(jì)大小為256×256的單色界面。存儲(chǔ)的數(shù)據(jù)位寬為32位,共2 048個(gè),地址線為11位。

游戲界面因?yàn)橐粩嘈薷?,故存放在基于FPGA片上RAM的RAM模塊中。其可同時(shí)有讀寫使能,因此可以同時(shí)讀寫,即使同時(shí)讀寫同一個(gè)地址也不會(huì)出錯(cuò),而且還可以設(shè)置成讀寫地址線各自獨(dú)立,不用考慮時(shí)分復(fù)用使用地址線的問題。這樣在實(shí)際代碼中就可以將RAM的讀和寫完全獨(dú)立考慮,分別由掃描輸出模塊和數(shù)據(jù)處理模塊完成,兩者互不干擾。圖4是RAM的讀寫時(shí)序圖。

圖4 配置RAM中讀寫數(shù)據(jù)時(shí)序圖

開始界面由于是固定的,放入ROM 中,初始化ROM文件中的數(shù)據(jù)可通過Matlab處理得到?,F(xiàn)在有一些字模軟件雖然可以讀取要顯示的圖片,但給出的數(shù)據(jù)格式并不能初始化ROM的,因此,利用Matlab編寫了一段圖片處理程序,可以讀取圖片,然后經(jīng)過處理,生成一個(gè)可以直接復(fù)制到ROM初始化文件中的數(shù)組形式。這樣,使得圖片顯示操作簡單,圖片替換更容易。

2.2.3 VGA控制模塊

在游戲界面設(shè)計(jì)中,存在主要的難點(diǎn):小方塊隨機(jī)間隔下落、難度等級(jí)設(shè)置等。

在游戲中,為了增加游戲的難度,在設(shè)計(jì)中,小方塊的降落為兩個(gè),而且是有一定的間隔、在隨機(jī)位置下落。小方塊的動(dòng)態(tài)顯示是通過不斷修改RAM中要顯示圖像的數(shù)據(jù)來實(shí)現(xiàn)的。游戲中方塊的長為32 個(gè)像素(對應(yīng)RAM中存儲(chǔ)的數(shù)據(jù)位寬,方便修改),則界面中有8條下落路線,小方塊的下落是從界面頂端開始的,也就意味著RAM中的數(shù)據(jù)修改是從前8位的某一位開始的,因此實(shí)現(xiàn)隨機(jī)下落只需要產(chǎn)生一個(gè)1~8范圍的隨機(jī)數(shù)。在設(shè)計(jì)中,通過設(shè)計(jì)了一個(gè)偽隨機(jī)數(shù)產(chǎn)生器,生成一個(gè)9以內(nèi)的隨機(jī)數(shù)作為RAM修改數(shù)據(jù)的起始位。

第二個(gè)小方塊的下落是通過設(shè)定一個(gè)標(biāo)志位Num2,當(dāng)?shù)谝粋€(gè)方塊下落到游戲界面的中間位置時(shí),置位Num2,從而觸發(fā)了第二個(gè)小方塊的下落進(jìn)程,第二個(gè)方塊開始下落。其中,兩個(gè)小方塊下落修改數(shù)據(jù)的操作都是在VGA掃描的消隱階段完成的,因此每進(jìn)行一次幀掃描,小方塊下落1個(gè)像素。VGA刷新頻率為60 Hz,因此小方塊每秒會(huì)下落60個(gè)像素。

當(dāng)游戲操作者漏接的方塊數(shù)據(jù)到達(dá)一定數(shù)目m,游戲結(jié)束。難度等級(jí)是通過設(shè)置被控制方塊左右移動(dòng)靈敏度和漏接方塊數(shù)目m 來實(shí)現(xiàn)的。靈敏度越高,m 越小,游戲等級(jí)越高。

2.3 通信編碼準(zhǔn)則

單片機(jī)從加速度傳感器獲得的數(shù)據(jù)中提取出y 軸的加速度值,由此可以判斷出速度手套的此時(shí)的狀態(tài)。它送往串口的數(shù)據(jù)不是加速度值,而是編碼后的指令。具體的編碼譯碼原則設(shè)定如表1所示。

表1 串口通信編碼準(zhǔn)則

表1 中FPGA 譯碼是FPGA 的串口接收模塊獲得后,解碼之后送給VGA顯示模塊的指令。游戲中保持了傳統(tǒng)鍵盤的兼容性,具體實(shí)現(xiàn)是通過PS/2模塊根據(jù)鍵盤輸入信號(hào)產(chǎn)生與表格1中FPGA譯碼相同的指令,送給VGA顯示模塊,完成對游戲的控制。

3 結(jié)語

本文設(shè)計(jì)了一款基于FGPA的體感游戲,通過利用人體的動(dòng)作完成對游戲的操作,利用VGA顯示技術(shù)來到達(dá)更好的類似虛擬現(xiàn)實(shí)的效果,同時(shí)系統(tǒng)也保持了對傳統(tǒng)游戲鍵盤操作的兼容性。

游戲通過加入人體的互動(dòng),使得游戲者可以對游戲有一種身臨其境的感覺,增加游戲趣味性、交互性、構(gòu)想性,同時(shí)也使得參與者身體得到運(yùn)動(dòng)與鍛煉。

游戲最后實(shí)現(xiàn)了常規(guī)游戲的基本功能,主要有歡迎界面與游戲界面的切換以及VGA顯示;速度手套模式與鍵盤模式的切換;計(jì)分系統(tǒng),包含分?jǐn)?shù)的顯示、清零等;游戲的難度等級(jí)設(shè)置、顯示以及游戲的結(jié)束;游戲的暫停、重新開始等功能等。最后在硬件平臺(tái)實(shí)現(xiàn),表明游戲具有可玩性、趣味性,并能使游戲者獲得較好的游戲體驗(yàn)。



評(píng)論


相關(guān)推薦

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

關(guān)閉