版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 挑戰(zhàn)迷宮</b></p><p> 1、申請題目:挑戰(zhàn)迷宮</p><p> 題目,命題描述(5號宋體)</p><p> 這是一個基于FPGA控制點(diǎn)陣板顯示的益智趣味類小游戲,游戲中玩家通過鍵盤↑↓←→鍵控制控制人物上下左右移動,從起始點(diǎn)出發(fā),目的是走到迷宮的出口。游戲有著友好的用戶界面,而且有多種模式,多
2、種地圖供玩家選擇。</p><p> 1.普通不計(jì)時模式:玩家可以看到整個迷宮地圖,游戲沒有時間限制;</p><p> 2.普通計(jì)時模式:玩家可以看到整個迷宮地圖,必須在20秒內(nèi)找到出口,否則游戲失??;</p><p> 3.高級不計(jì)時模式:玩家并不能看到整個迷宮的地圖,只能看到其周圍的2步以內(nèi)部分路徑,其他路徑需要靠自己移動來探索,這樣就仿佛置身迷宮之中,
3、更有可玩性,游戲沒有時間限制;</p><p> 4.高級計(jì)時模式:同樣玩家:玩家并不能看到整個迷宮的地圖,只能看到其周圍的2步以內(nèi)部分路徑;必須在20秒內(nèi)找到出口,否則游戲失敗。</p><p><b> 2、課題背景:</b></p><p><b> 存在問題、應(yīng)用背景</b></p><p
4、> 走迷宮是大家所非常熟悉的一款小游戲,規(guī)則簡單,老少皆宜,可以段煉玩家的判斷力和觀察力;而且其不同于普通的走迷宮游戲,增加了一些趣味性玩法及創(chuàng)新點(diǎn),可供人們平時娛樂所用。該游戲主要在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> 游戲開始之前,玩家通過鍵盤選擇游戲模式和游戲地圖,然后啟動游戲,其中有相應(yīng)的指示燈提示;</p><p> 2.點(diǎn)陣板顯示中,以黃色表示玩家,綠色表示迷宮出口,紅色表示迷宮墻壁;玩家通過鍵盤上相應(yīng)的鍵控制人物的上下左右移動。勝利或失敗后有相應(yīng)的畫面出現(xiàn),能夠通過按鍵重新啟動游戲。&
6、lt;/p><p> 3.計(jì)時模式中,數(shù)碼管顯示倒計(jì)時;</p><p><b> 指標(biāo):</b></p><p> 游戲中主要采用16X16點(diǎn)陣板顯示地圖,計(jì)時模塊中,時間限制為20秒比較合理。</p><p><b> 規(guī)模:</b></p><p> 由于涉及數(shù)據(jù)
7、結(jié)構(gòu)在硬件語言中的實(shí)現(xiàn)與優(yōu)化,具有多種模式下點(diǎn)陣板的操作,本項(xiàng)目難度為中上。由于硬件語言中使用了大量矩陣,所有功能都實(shí)現(xiàn)后,占用的邏輯單元的總數(shù)在5000多左右。</p><p> 面板(顯示)、操作、規(guī)則</p><p><b> 顯示面板:</b></p><p> 數(shù)碼管:第一位表示關(guān)卡,后兩位表示倒計(jì)時時間。 </p>
8、;<p><b> LED顯示燈:</b></p><p><b> 操作:</b></p><p><b> 游戲規(guī)則:</b></p><p> 本游戲的規(guī)則相對簡單。玩家使用鍵盤操縱一個人,在規(guī)定的時間內(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> 核心問題</b></p>&l
10、t;p> 1. 多種模式下的選擇和表示;</p><p> 2.對LED點(diǎn)陣板中迷宮地圖的顯示和人物移動的顯示控制;</p><p> 3. 點(diǎn)陣中只顯示人物周圍的2步以內(nèi)部分路徑。</p><p><b> 解決方案</b></p><p> 對于多種模式,使用狀態(tài)機(jī)的不同狀態(tài)來表示,這樣就可以通過狀態(tài)
11、來作為后面點(diǎn)陣顯示模塊的使能信號;</p><p><b> 點(diǎn)陣板的顯示:</b></p><p> 點(diǎn)陣板的行采用掃描信號的形式掃描,16位行輸出信號依次為:</p><p> ”1111111111111110”,”1111111111111101”,”1111111111111011,"1111111111110111&
12、quot;,"1111111111101111"等(低電平使能);當(dāng)相應(yīng)的行選中時,輸入相應(yīng)的紅燈16位列信號,綠燈16位列信號,這樣紅燈和綠燈的信號就有16X16個需要存儲;</p><p> 分別用兩個16X16的矩陣存儲紅燈和綠燈的信號,當(dāng)點(diǎn)陣板第一行選中時,輸出矩陣第一行的16位信號;當(dāng)點(diǎn)陣板第二行選中時,輸出矩陣第二行的16位信號;以此類推。</p><p>
13、; 采用一個16X16的矩陣顯示人物的位置,事先知道人物點(diǎn)的位置坐標(biāo),當(dāng)上下左右鍵按下后,就修改該矩陣中的值,最后把該矩陣和紅燈信號的矩陣和綠燈信號的矩陣相與作為紅燈和綠燈的輸出。</p><p> 定義一個初始化為全0的16X16的矩陣,當(dāng)每次人物點(diǎn)移動時,把人物坐標(biāo)周圍2步以內(nèi)的點(diǎn)對應(yīng)的矩陣中的值修改為1;輸出的紅燈信號的矩陣和綠燈信號的矩陣與這個矩陣相與輸出。</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> 對輸入的2MHz信號進(jìn)行不同的分頻,分別產(chǎn)生1KHz、100Hz、2Hz、1Hz
15、的時鐘信號。</p><p> 鍵盤模塊keyboard:</p><p> 外接鍵盤,當(dāng)鍵盤按下鍵時,輸出按下的鍵值(用4位二進(jìn)制數(shù)表示)和相應(yīng)的按鍵脈沖。</p><p> 狀態(tài)機(jī)模塊statemachine:</p><p> 輸入鍵盤按鍵信號,輸出4位二進(jìn)制數(shù)來表示不同的狀態(tài)。</p><p> 游戲
16、關(guān)卡選擇模塊hard_setting:</p><p> 當(dāng)狀態(tài)為關(guān)卡選擇狀態(tài)時,初始輸出值為1,按下A鍵關(guān)卡加一,按下D鍵關(guān)卡減一。</p><p> 倒計(jì)時模塊daojishi:</p><p> 當(dāng)選中計(jì)時模式并游戲開始后,倒計(jì)時開始,共20秒,倒計(jì)時最后3秒時輸出2Hz蜂鳴器信號,倒計(jì)時結(jié)束時輸出timeover信號為1.</p><
17、;p> 點(diǎn)陣控制模塊maze:</p><p> 存儲著不同關(guān)卡的地圖矩陣,游戲未開始時,用相應(yīng)關(guān)卡的地圖矩陣初始化輸出矩陣;游戲開始后,檢測上下左右鍵,若有鍵按下,修改人物矩陣中相應(yīng)的值,輸出紅色和綠色點(diǎn)陣的矩陣值,供掃描顯示模塊使用。</p><p> 點(diǎn)陣掃描顯示模塊display:</p><p> 把輸入的相應(yīng)紅色和綠色矩陣值與點(diǎn)陣掃描信號關(guān)
18、聯(lián),產(chǎn)生16位紅色輸出信號和生16位綠色輸出信號,連接至點(diǎn)陣板。</p><p> 模塊接口標(biāo)注(參數(shù)、協(xié)議)</p><p> 鍵盤行列輸入輸出信號:</p><p> 游戲關(guān)卡顯示數(shù)碼管:</p><p><b> 倒計(jì)時顯示數(shù)碼管:</b></p><p><b> 點(diǎn)陣
19、板行掃描信號:</b></p><p><b> 點(diǎn)陣板紅燈信號:</b></p><p><b> 點(diǎn)陣板綠燈信號:</b></p><p><b> LED顯示燈信號:</b></p><p><b> 時鐘輸入信號:</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時鐘信號</p><p> KEY_down_:輸出按下鍵的脈沖</p><p> col[3..0]:列掃描信號</p><p> row[3..0]:行輸入信號</p><p> q[
22、3..0]:4位鍵盤碼信號</p><p><b> 波形意義:</b></p><p> 從波形可以看出,可以成功產(chǎn)生列掃描信號,而且按下F鍵,和4鍵后可以輸出相應(yīng)的鍵值,且能產(chǎn)生按鍵脈沖。</p><p> 2. 狀態(tài)機(jī)模塊波形圖: </p><p><b> 輸入輸出功能端口:</b>
23、</p><p><b> CLK:時鐘信號</b></p><p> 1、2、A、B、C、D、E、F:鍵盤按鍵信號</p><p><b> X1:暫停信號</b></p><p> STATE:輸出狀態(tài)信號</p><p><b> 波形意義:<
24、/b></p><p> 波形表示在初始狀態(tài)0000下,按下“F”鍵啟動控制器進(jìn)入0001狀態(tài),通過按“1” 選擇,普通不計(jì)時模式0100,按下E鍵確認(rèn)地圖,開始游戲進(jìn)入1000狀態(tài);在初始狀態(tài)0000下,按下“F”鍵啟動控制器進(jìn)入0001狀態(tài),通過按“2” 選擇普通計(jì)時模式0101,按下E鍵確認(rèn)地圖,開始游戲進(jìn)入1001狀態(tài),按F鍵結(jié)束游戲回到初始狀態(tài)。可見狀態(tài)機(jī)功能可以實(shí)現(xiàn)。</p>&
25、lt;p> 3.倒計(jì)時顯示模塊波形圖: </p><p><b> 輸入輸出功能端口:</b></p><p> A[3..0]: 4位鍵盤按鍵碼</p><p> State:當(dāng)前狀態(tài)</p><p> CLK1Hz:1Hz時鐘信號</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ì)時模式狀態(tài)中可以實(shí)現(xiàn)倒計(jì)時的功能。</p><p> 4.本系統(tǒng)仿真涉及兩個16*16自定義矩陣向量,超出Quatus 提供的pin腳上限,故游戲控制模塊仿真無法實(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多個門,考慮到FPGA門數(shù)的限制(只有約6000個門),我省略了游戲中的雙人模式;而且由于時間和資源的有限,程序內(nèi)部只預(yù)置了兩幅地圖。</p><p> 可以進(jìn)一步發(fā)揮提高的部分</p><p> 可以增加雙人模式,兩個玩家同時走迷宮,比較誰最先走
29、出迷宮,增加游戲的趣味性和競爭性;</p><p> 可以為游戲增加提示音樂,讓其更完美、更人性化。</p><p><b> 課程設(shè)計(jì)體會</b></p><p> 首先,這次的課程設(shè)計(jì)讓我學(xué)會了VHDL語言,讓我深深體會到語言設(shè)計(jì)的強(qiáng)大性和簡潔性,然而,雖然用語言編寫有很大的優(yōu)勢,但這畢竟是一個相當(dāng)大的系統(tǒng),再加上VHDL語言的嚴(yán)謹(jǐn)性
30、,要想讓整個系統(tǒng)的邏輯結(jié)構(gòu)清晰明了,完全不出錯誤,也是一件煞費(fèi)苦心的事情,由于用了許多矩陣,程序關(guān)編譯就需要好幾分鐘的時間,所以這毫無疑問花費(fèi)了我大把的時間去調(diào)試。</p><p> 由于之前有用語言編寫健身自行車的基礎(chǔ),前面模式選擇以及狀態(tài)機(jī)什么的都很快調(diào)試成功了;但點(diǎn)陣板卻完全不是輕而易舉就能成功的。首先,光其原理我就研究了好一陣子,理解了編寫出來也是錯誤百出,起初燒進(jìn)去點(diǎn)陣板也是一點(diǎn)反應(yīng)也沒有。但是經(jīng)過鍥
31、而不舍的調(diào)試運(yùn)行,最終還是完美的成功了。整個一個數(shù)字系統(tǒng)的設(shè)計(jì)讓我初次體會了從申請一個項(xiàng)目到實(shí)施、中途經(jīng)歷的學(xué)習(xí)、解決問題……等等諸多以前從未有過的體驗(yàn),也是對自身的一次鍛煉。</p><p><b> 9、參考文獻(xiàn)</b></p><p> 1. VHDL數(shù)字電路設(shè)計(jì)教程, Volnei A. Pedroni, 喬廬峰/王志功 電子工業(yè)出版社</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--flash 迷宮小游戲
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲.doc
- 掃雷小游戲課程設(shè)計(jì)
- 《猜拳小游戲》課程設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)--制作小游戲
- c語言小游戲課程設(shè)計(jì)
- 迷宮游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告-掃雷小游戲
- 打飛機(jī)小游戲-java課程設(shè)計(jì)
- java課程設(shè)計(jì)-21點(diǎn)小游戲
- android課程設(shè)計(jì)連連看小游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---走迷宮游戲
- 五子棋小游戲課程設(shè)計(jì)
- vb課程設(shè)計(jì)益智類算數(shù)小游戲
- 課程設(shè)計(jì)報(bào)告--數(shù)獨(dú)小游戲的開發(fā)
- 課程設(shè)計(jì)--- 貪吃蛇小游戲程序設(shè)計(jì)
- 課程設(shè)計(jì)(迷宮)
評論
0/150
提交評論