數(shù)字系統(tǒng)課程設(shè)計(jì)--挑戰(zhàn)迷宮小游戲_第1頁(yè)
已閱讀1頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  挑戰(zhàn)迷宮</b></p><p>  1、申請(qǐng)題目:挑戰(zhàn)迷宮</p><p>  題目,命題描述(5號(hào)宋體)</p><p>  這是一個(gè)基于FPGA控制點(diǎn)陣板顯示的益智趣味類小游戲,游戲中玩家通過(guò)鍵盤↑↓←→鍵控制控制人物上下左右移動(dòng),從起始點(diǎn)出發(fā),目的是走到迷宮的出口。游戲有著友好的用戶界面,而且有多種模式,多

2、種地圖供玩家選擇。</p><p>  1.普通不計(jì)時(shí)模式:玩家可以看到整個(gè)迷宮地圖,游戲沒(méi)有時(shí)間限制;</p><p>  2.普通計(jì)時(shí)模式:玩家可以看到整個(gè)迷宮地圖,必須在20秒內(nèi)找到出口,否則游戲失敗;</p><p>  3.高級(jí)不計(jì)時(shí)模式:玩家并不能看到整個(gè)迷宮的地圖,只能看到其周圍的2步以內(nèi)部分路徑,其他路徑需要靠自己移動(dòng)來(lái)探索,這樣就仿佛置身迷宮之中,

3、更有可玩性,游戲沒(méi)有時(shí)間限制;</p><p>  4.高級(jí)計(jì)時(shí)模式:同樣玩家:玩家并不能看到整個(gè)迷宮的地圖,只能看到其周圍的2步以內(nèi)部分路徑;必須在20秒內(nèi)找到出口,否則游戲失敗。</p><p><b>  2、課題背景:</b></p><p><b>  存在問(wèn)題、應(yīng)用背景</b></p><p

4、>  走迷宮是大家所非常熟悉的一款小游戲,規(guī)則簡(jiǎn)單,老少皆宜,可以段煉玩家的判斷力和觀察力;而且其不同于普通的走迷宮游戲,增加了一些趣味性玩法及創(chuàng)新點(diǎn),可供人們平時(shí)娛樂(lè)所用。該游戲主要在LED點(diǎn)陣板上實(shí)現(xiàn),做成電腦軟件效果將更佳。</p><p><b>  3、項(xiàng)目規(guī)劃: </b></p><p><b>  功能、指標(biāo)、規(guī)模</b>&l

5、t;/p><p><b>  功能:</b></p><p>  游戲開(kāi)始之前,玩家通過(guò)鍵盤選擇游戲模式和游戲地圖,然后啟動(dòng)游戲,其中有相應(yīng)的指示燈提示;</p><p>  2.點(diǎn)陣板顯示中,以黃色表示玩家,綠色表示迷宮出口,紅色表示迷宮墻壁;玩家通過(guò)鍵盤上相應(yīng)的鍵控制人物的上下左右移動(dòng)。勝利或失敗后有相應(yīng)的畫面出現(xiàn),能夠通過(guò)按鍵重新啟動(dòng)游戲。&

6、lt;/p><p>  3.計(jì)時(shí)模式中,數(shù)碼管顯示倒計(jì)時(shí);</p><p><b>  指標(biāo):</b></p><p>  游戲中主要采用16X16點(diǎn)陣板顯示地圖,計(jì)時(shí)模塊中,時(shí)間限制為20秒比較合理。</p><p><b>  規(guī)模:</b></p><p>  由于涉及數(shù)據(jù)

7、結(jié)構(gòu)在硬件語(yǔ)言中的實(shí)現(xiàn)與優(yōu)化,具有多種模式下點(diǎn)陣板的操作,本項(xiàng)目難度為中上。由于硬件語(yǔ)言中使用了大量矩陣,所有功能都實(shí)現(xiàn)后,占用的邏輯單元的總數(shù)在5000多左右。</p><p>  面板(顯示)、操作、規(guī)則</p><p><b>  顯示面板:</b></p><p>  數(shù)碼管:第一位表示關(guān)卡,后兩位表示倒計(jì)時(shí)時(shí)間。 </p>

8、;<p><b>  LED顯示燈:</b></p><p><b>  操作:</b></p><p><b>  游戲規(guī)則:</b></p><p>  本游戲的規(guī)則相對(duì)簡(jiǎn)單。玩家使用鍵盤操縱一個(gè)人,在規(guī)定的時(shí)間內(nèi)走到迷宮出口即可勝利。</p><p><

9、;b>  輸入、輸出接口</b></p><p><b>  鍵盤輸入輸出接口;</b></p><p>  點(diǎn)陣板掃描、顯示接口。</p><p><b>  4、實(shí)現(xiàn)方案: </b></p><p><b>  核心問(wèn)題</b></p>&l

10、t;p>  1. 多種模式下的選擇和表示;</p><p>  2.對(duì)LED點(diǎn)陣板中迷宮地圖的顯示和人物移動(dòng)的顯示控制;</p><p>  3. 點(diǎn)陣中只顯示人物周圍的2步以內(nèi)部分路徑。</p><p><b>  解決方案</b></p><p>  對(duì)于多種模式,使用狀態(tài)機(jī)的不同狀態(tài)來(lái)表示,這樣就可以通過(guò)狀態(tài)

11、來(lái)作為后面點(diǎn)陣顯示模塊的使能信號(hào);</p><p><b>  點(diǎn)陣板的顯示:</b></p><p>  點(diǎn)陣板的行采用掃描信號(hào)的形式掃描,16位行輸出信號(hào)依次為:</p><p>  ”1111111111111110”,”1111111111111101”,”1111111111111011,"1111111111110111&

12、quot;,"1111111111101111"等(低電平使能);當(dāng)相應(yīng)的行選中時(shí),輸入相應(yīng)的紅燈16位列信號(hào),綠燈16位列信號(hào),這樣紅燈和綠燈的信號(hào)就有16X16個(gè)需要存儲(chǔ);</p><p>  分別用兩個(gè)16X16的矩陣存儲(chǔ)紅燈和綠燈的信號(hào),當(dāng)點(diǎn)陣板第一行選中時(shí),輸出矩陣第一行的16位信號(hào);當(dāng)點(diǎn)陣板第二行選中時(shí),輸出矩陣第二行的16位信號(hào);以此類推。</p><p>

13、;  采用一個(gè)16X16的矩陣顯示人物的位置,事先知道人物點(diǎn)的位置坐標(biāo),當(dāng)上下左右鍵按下后,就修改該矩陣中的值,最后把該矩陣和紅燈信號(hào)的矩陣和綠燈信號(hào)的矩陣相與作為紅燈和綠燈的輸出。</p><p>  定義一個(gè)初始化為全0的16X16的矩陣,當(dāng)每次人物點(diǎn)移動(dòng)時(shí),把人物坐標(biāo)周圍2步以內(nèi)的點(diǎn)對(duì)應(yīng)的矩陣中的值修改為1;輸出的紅燈信號(hào)的矩陣和綠燈信號(hào)的矩陣與這個(gè)矩陣相與輸出。</p><p>&

14、lt;b>  5、系統(tǒng)結(jié)構(gòu):</b></p><p><b>  系統(tǒng)框圖</b></p><p><b>  模塊功能描述</b></p><p>  分頻器模塊fenping:</p><p>  對(duì)輸入的2MHz信號(hào)進(jìn)行不同的分頻,分別產(chǎn)生1KHz、100Hz、2Hz、1Hz

15、的時(shí)鐘信號(hào)。</p><p>  鍵盤模塊keyboard:</p><p>  外接鍵盤,當(dāng)鍵盤按下鍵時(shí),輸出按下的鍵值(用4位二進(jìn)制數(shù)表示)和相應(yīng)的按鍵脈沖。</p><p>  狀態(tài)機(jī)模塊statemachine:</p><p>  輸入鍵盤按鍵信號(hào),輸出4位二進(jìn)制數(shù)來(lái)表示不同的狀態(tài)。</p><p>  游戲

16、關(guān)卡選擇模塊hard_setting:</p><p>  當(dāng)狀態(tài)為關(guān)卡選擇狀態(tài)時(shí),初始輸出值為1,按下A鍵關(guān)卡加一,按下D鍵關(guān)卡減一。</p><p>  倒計(jì)時(shí)模塊daojishi:</p><p>  當(dāng)選中計(jì)時(shí)模式并游戲開(kāi)始后,倒計(jì)時(shí)開(kāi)始,共20秒,倒計(jì)時(shí)最后3秒時(shí)輸出2Hz蜂鳴器信號(hào),倒計(jì)時(shí)結(jié)束時(shí)輸出timeover信號(hào)為1.</p><

17、;p>  點(diǎn)陣控制模塊maze:</p><p>  存儲(chǔ)著不同關(guān)卡的地圖矩陣,游戲未開(kāi)始時(shí),用相應(yīng)關(guān)卡的地圖矩陣初始化輸出矩陣;游戲開(kāi)始后,檢測(cè)上下左右鍵,若有鍵按下,修改人物矩陣中相應(yīng)的值,輸出紅色和綠色點(diǎn)陣的矩陣值,供掃描顯示模塊使用。</p><p>  點(diǎn)陣掃描顯示模塊display:</p><p>  把輸入的相應(yīng)紅色和綠色矩陣值與點(diǎn)陣掃描信號(hào)關(guān)

18、聯(lián),產(chǎn)生16位紅色輸出信號(hào)和生16位綠色輸出信號(hào),連接至點(diǎn)陣板。</p><p>  模塊接口標(biāo)注(參數(shù)、協(xié)議)</p><p>  鍵盤行列輸入輸出信號(hào):</p><p>  游戲關(guān)卡顯示數(shù)碼管:</p><p><b>  倒計(jì)時(shí)顯示數(shù)碼管:</b></p><p><b>  點(diǎn)陣

19、板行掃描信號(hào):</b></p><p><b>  點(diǎn)陣板紅燈信號(hào):</b></p><p><b>  點(diǎn)陣板綠燈信號(hào):</b></p><p><b>  LED顯示燈信號(hào):</b></p><p><b>  時(shí)鐘輸入信號(hào):</b><

20、;/p><p><b>  6、狀態(tài)流程圖:</b></p><p><b>  系統(tǒng)工作狀態(tài)流程</b></p><p>  7、各主要模塊仿真結(jié)果波形</p><p>  各模塊的仿真波形,詳細(xì)注釋輸入輸出功能端口</p><p>  1.鍵盤模塊波形圖:</p>

21、<p><b>  輸入輸出功能端口:</b></p><p>  CLK:輸入2MHz時(shí)鐘信號(hào)</p><p>  KEY_down_:輸出按下鍵的脈沖</p><p>  col[3..0]:列掃描信號(hào)</p><p>  row[3..0]:行輸入信號(hào)</p><p>  q[

22、3..0]:4位鍵盤碼信號(hào)</p><p><b>  波形意義:</b></p><p>  從波形可以看出,可以成功產(chǎn)生列掃描信號(hào),而且按下F鍵,和4鍵后可以輸出相應(yīng)的鍵值,且能產(chǎn)生按鍵脈沖。</p><p>  2. 狀態(tài)機(jī)模塊波形圖: </p><p><b>  輸入輸出功能端口:</b>

23、</p><p><b>  CLK:時(shí)鐘信號(hào)</b></p><p>  1、2、A、B、C、D、E、F:鍵盤按鍵信號(hào)</p><p><b>  X1:暫停信號(hào)</b></p><p>  STATE:輸出狀態(tài)信號(hào)</p><p><b>  波形意義:<

24、/b></p><p>  波形表示在初始狀態(tài)0000下,按下“F”鍵啟動(dòng)控制器進(jìn)入0001狀態(tài),通過(guò)按“1” 選擇,普通不計(jì)時(shí)模式0100,按下E鍵確認(rèn)地圖,開(kāi)始游戲進(jìn)入1000狀態(tài);在初始狀態(tài)0000下,按下“F”鍵啟動(dòng)控制器進(jìn)入0001狀態(tài),通過(guò)按“2” 選擇普通計(jì)時(shí)模式0101,按下E鍵確認(rèn)地圖,開(kāi)始游戲進(jìn)入1001狀態(tài),按F鍵結(jié)束游戲回到初始狀態(tài)??梢?jiàn)狀態(tài)機(jī)功能可以實(shí)現(xiàn)。</p>&

25、lt;p>  3.倒計(jì)時(shí)顯示模塊波形圖: </p><p><b>  輸入輸出功能端口:</b></p><p>  A[3..0]: 4位鍵盤按鍵碼</p><p>  State:當(dāng)前狀態(tài)</p><p>  CLK1Hz:1Hz時(shí)鐘信號(hào)</p><p><b>  MinH

26、:分鐘高位</b></p><p><b>  MinL:分鐘低位</b></p><p><b>  SecH:秒高位</b></p><p><b>  SceL:秒低位</b></p><p><b>  波形意義:</b></p&

27、gt;<p>  可以看出在計(jì)時(shí)模式狀態(tài)中可以實(shí)現(xiàn)倒計(jì)時(shí)的功能。</p><p>  4.本系統(tǒng)仿真涉及兩個(gè)16*16自定義矩陣向量,超出Quatus 提供的pin腳上限,故游戲控制模塊仿真無(wú)法實(shí)現(xiàn),實(shí)際中采用直接燒進(jìn)FPGA中調(diào)試,此處模塊仿真略。</p><p><b>  8、課程設(shè)計(jì)總結(jié)</b></p><p>  預(yù)期的

28、目標(biāo)與當(dāng)前實(shí)現(xiàn)功能的差異詳細(xì)注釋</p><p>  游戲結(jié)果基本實(shí)現(xiàn)了預(yù)期的全部主要功能,完全編譯已經(jīng)需要5200多個(gè)門,考慮到FPGA門數(shù)的限制(只有約6000個(gè)門),我省略了游戲中的雙人模式;而且由于時(shí)間和資源的有限,程序內(nèi)部只預(yù)置了兩幅地圖。</p><p>  可以進(jìn)一步發(fā)揮提高的部分</p><p>  可以增加雙人模式,兩個(gè)玩家同時(shí)走迷宮,比較誰(shuí)最先走

29、出迷宮,增加游戲的趣味性和競(jìng)爭(zhēng)性;</p><p>  可以為游戲增加提示音樂(lè),讓其更完美、更人性化。</p><p><b>  課程設(shè)計(jì)體會(huì)</b></p><p>  首先,這次的課程設(shè)計(jì)讓我學(xué)會(huì)了VHDL語(yǔ)言,讓我深深體會(huì)到語(yǔ)言設(shè)計(jì)的強(qiáng)大性和簡(jiǎn)潔性,然而,雖然用語(yǔ)言編寫有很大的優(yōu)勢(shì),但這畢竟是一個(gè)相當(dāng)大的系統(tǒng),再加上VHDL語(yǔ)言的嚴(yán)謹(jǐn)性

30、,要想讓整個(gè)系統(tǒng)的邏輯結(jié)構(gòu)清晰明了,完全不出錯(cuò)誤,也是一件煞費(fèi)苦心的事情,由于用了許多矩陣,程序關(guān)編譯就需要好幾分鐘的時(shí)間,所以這毫無(wú)疑問(wèn)花費(fèi)了我大把的時(shí)間去調(diào)試。</p><p>  由于之前有用語(yǔ)言編寫健身自行車的基礎(chǔ),前面模式選擇以及狀態(tài)機(jī)什么的都很快調(diào)試成功了;但點(diǎn)陣板卻完全不是輕而易舉就能成功的。首先,光其原理我就研究了好一陣子,理解了編寫出來(lái)也是錯(cuò)誤百出,起初燒進(jìn)去點(diǎn)陣板也是一點(diǎn)反應(yīng)也沒(méi)有。但是經(jīng)過(guò)鍥

31、而不舍的調(diào)試運(yùn)行,最終還是完美的成功了。整個(gè)一個(gè)數(shù)字系統(tǒng)的設(shè)計(jì)讓我初次體會(huì)了從申請(qǐng)一個(gè)項(xiàng)目到實(shí)施、中途經(jīng)歷的學(xué)習(xí)、解決問(wèn)題……等等諸多以前從未有過(guò)的體驗(yàn),也是對(duì)自身的一次鍛煉。</p><p><b>  9、參考文獻(xiàn)</b></p><p>  1. VHDL數(shù)字電路設(shè)計(jì)教程, Volnei A. Pedroni, 喬廬峰/王志功 電子工業(yè)出版社</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論