基于NiosII貪吃蛇的游戲設(shè)計(電子綜合設(shè)計)_第1頁
基于NiosII貪吃蛇的游戲設(shè)計(電子綜合設(shè)計)_第2頁
基于NiosII貪吃蛇的游戲設(shè)計(電子綜合設(shè)計)_第3頁
基于NiosII貪吃蛇的游戲設(shè)計(電子綜合設(shè)計)_第4頁
基于NiosII貪吃蛇的游戲設(shè)計(電子綜合設(shè)計)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于niosii和led點陣的貪吃蛇游戲設(shè)計目錄一、摘要 2二、設(shè)計目的 2三、貪吃蛇設(shè)計預(yù)期目標 2四、方案整體設(shè)計 2五、硬件系統(tǒng)的設(shè)計及實現(xiàn) 3六、軟件系統(tǒng)的設(shè)計及實現(xiàn) 11七、心得體會 14八、參考文獻 15九、附錄 15一 、摘要基于niosii軟核處理器和led點陣顯示屏的貪吃蛇游戲內(nèi)容是:一條蛇在封閉的圍墻里,圍墻里隨機出現(xiàn)一個食物。玩家通過4個按鍵控制蛇上下左右移動,且蛇只能沿著頭運動的軌跡移動。蛇頭撞到食物,則食物被吃掉,蛇身體增長一節(jié),同時記1分,又出現(xiàn)食物,等待蛇來吃,如果蛇頭在移動中出界或咬到自己的身體則游戲結(jié)束。關(guān)鍵字: 貪吃蛇nios ii led點陣sopc二、設(shè)

2、計目的1、掌握按鍵掃描電路的設(shè)計2、掌握用vhdl語言設(shè)計按鍵掃描電路的方法3、掌握16*16 led點陣的控制原理和用vhdl語言設(shè)計led點陣掃描電路的方法;4、掌握sopc builder的設(shè)計流程;5、掌握在nios ii中進行編程的方法;三、貪吃蛇設(shè)計預(yù)期目標1、 基本功能(1)、完成按鍵掃描電路的設(shè)計;(2)、完成 16*16 led 點陣的掃描電路設(shè)計;(3)、完成sopc builder 中的系統(tǒng)設(shè)計;(4)、完成單色貪吃蛇游戲的基本設(shè)計(蛇移動方向的改變,吃到果子后蛇身變長,咬到自己或者出界時的失敗處理等);(5)、完成游戲圖形信息提示(游戲目前所處的等級等)。2、 提高功能

3、(1)、能進行漢字動態(tài)顯示(顯示內(nèi)容自動更新,形式自定,如百葉窗等);(2)、蛇頭顏色與蛇身區(qū)別顯示,并與果實顏色區(qū)別顯示;(3)、游戲過程中加入聲音提示和表情提示;(4)、所得分數(shù)在數(shù)碼管上顯示;(5)、能進行游戲難度的切換(不同難度下,蛇吃到相應(yīng)數(shù)量的果子后升級)。四、方案整體設(shè)計 為了實現(xiàn)游戲的控制、顯示、設(shè)置等功能,系統(tǒng)需要具有控制模塊,動態(tài)掃描顯示模塊,按鍵識別模塊。本設(shè)計中采用nios ii軟核cpu作為游戲的主控制單元,按鍵識別模塊中的每個按鍵通過產(chǎn)生中斷的方式,在中斷處理函數(shù)中完成按鍵的標識,并在在軟件程序的主體部分完成按鍵的識別。動態(tài)掃描顯示模塊又分為led點陣屏動態(tài)掃描顯示

4、和led數(shù)碼管顯示掃描兩部分,兩部分均采用vhdl語言設(shè)計相應(yīng)的硬件掃描模塊來實現(xiàn)。五、硬件系統(tǒng)的設(shè)計及實現(xiàn)整個硬件系統(tǒng)的設(shè)計包括nios ii片上系統(tǒng)的設(shè)計和外設(shè)驅(qū)動電路的設(shè)計。1、 硬件整體框架2、nios ii片上系統(tǒng)的設(shè)計片上系統(tǒng)的設(shè)計核心是nios ii嵌入式cpu軟核的定制。根據(jù)游戲的功能要求和實現(xiàn)的方案,片上系統(tǒng)應(yīng)當包括:nios ii嵌入式cpu軟核、一組pio輸入輸出口、定時器、sram、jtag uart、epcs_flash_controller。nios ii系統(tǒng)的結(jié)構(gòu)如下:(1)、nios ii嵌入式cpu軟核nios ii嵌入式cpu軟核作為整個系統(tǒng)的主控制單元,完

5、成對按鍵信息的接收、識別、處理;此外還要輸出相關(guān)的控制信息,實現(xiàn)對外設(shè)的控制。(2)、pio輸入輸出口在定制的一組pio輸入輸出口中,pio輸入口用于接收按鍵信號,pio輸出口用于輸出對dpram寫數(shù)據(jù)操作的控制和數(shù)據(jù)信號以及l(fā)ed數(shù)碼管的數(shù)據(jù)信號;(3)、定時器在系統(tǒng)中定制定時器,主要是為了通過定時器的計數(shù)產(chǎn)生周期性的中斷,通過中斷處理函數(shù)實現(xiàn)貪吃蛇的移動顯示效果。由于定時器中具有幾個軟件可操作的寄存器,通過對這些寄存器的操作可以很方便地實現(xiàn)定時器的啟停、定時時間設(shè)置、中斷產(chǎn)生控制等操作。只要更改定時器產(chǎn)生中斷的周期就可以實現(xiàn)貪吃蛇運動速度的控制,從而進行游戲等級的控制。(4)、sram和e

6、pcs_flash_controllersram在系統(tǒng)中起到了相當于計算機中內(nèi)存的作用,主要用于存放正在運行的軟件程序。它的特點主要是速度快。 epcs_flash_controller 作為epcs_flash的控制器。整個系統(tǒng)的硬件設(shè)計都下載固化在epcs_flash上,當程序燒寫到了epcs_flash上的時候,就可以實現(xiàn)脫機運行了。3、 外設(shè)驅(qū)動電路的設(shè)計外設(shè)驅(qū)動電路的設(shè)計包括:雙口dpram的定制、dpram讀數(shù)據(jù)控制電路的設(shè)計、led點陣屏掃描電路的設(shè)計、七段數(shù)碼管動態(tài)掃描電路的設(shè)計、整個系統(tǒng)中所用到的時鐘信號產(chǎn)生電路以及按鍵去抖電路。(1)、雙口dpram定制雙口dpram在系統(tǒng)

7、中作為led點陣顯示屏的顯示數(shù)據(jù)緩存,其中存儲了256個led燈的顏色控制數(shù)據(jù)。存放在其中的數(shù)據(jù)只有四個值有效,分別為0、1、2、3。送這四個數(shù)去控制一個led燈,分別對應(yīng)led燈的顏色為:黃色、綠色、紅色、黑色。雙口dpram可以定制成一個輸入口和一個輸出口的形式。其中,輸入口用于接收nios ii嵌入式軟核cpu的數(shù)據(jù),輸出口在dpram讀數(shù)據(jù)控制電路的控制下輸出數(shù)據(jù)用于驅(qū)動led點陣屏掃描顯示電路。 該模塊的仿真波形如下圖:(2)、dpram讀數(shù)據(jù)控制電路dpram讀數(shù)據(jù)控制電路在外部時鐘信號的作用下,產(chǎn)生0 到255共256個數(shù)作為dpram的地址,在dpram讀數(shù)據(jù)時鐘到來的時候使得

8、dpram輸出對應(yīng)地址的數(shù)據(jù)。此外,dpram讀數(shù)據(jù)控制電路還要產(chǎn)生像素同步信號和行同步信號,實現(xiàn)led點陣屏掃描電路的時序。產(chǎn)生的時序要求是:在外部時鐘的作用下產(chǎn)生dpramd的地址,接著像素同步時鐘出現(xiàn)一個上升沿,16個像素同步時鐘后,產(chǎn)生一個行同步信號,在該行同步信號作用下行掃描信號從第一行順序掃到最后一行,這樣就完成了一個周期的掃描。該模塊的仿真波形如下圖:(3)、七段數(shù)碼管七段數(shù)碼管動態(tài)掃描電路,接收外部送來的顯示數(shù)據(jù),通過動態(tài)掃描的方式在兩個數(shù)碼管上顯示出來。該模塊的仿真波形如下圖:(4)、按鍵去抖電路按鍵去抖電路用于消除按鍵動作中產(chǎn)生的高頻抖動,防止產(chǎn)生誤動作,提高按鍵的穩(wěn)定性,

9、和可靠性。該模塊的仿真波形如下圖:(5)、時鐘信號產(chǎn)生電路整個系統(tǒng)中使用到了幾個不同頻率的時鐘信號,通過時鐘信號產(chǎn)生電路進行不同頻率的分頻產(chǎn)生所需的時鐘信號。該模塊的仿真波形如下圖:(6)、led點陣屏掃描電路的設(shè)計led顯示系統(tǒng)有兩種基本的顯示控制方式,即靜態(tài)顯示和動態(tài)顯示。對于靜態(tài)顯示方式,每一個像素都需要一套驅(qū)動電路,因而這種方式?jīng)]有掃描過程,顯示控制簡單,亮度很好。但是,采用靜態(tài)顯示方式將大大增加驅(qū)動電路的復(fù)雜程度,這不僅使系統(tǒng)成本很高,而且增加了生產(chǎn)、安裝、調(diào)試以及日常維護工作的難度,故障率也較高。對于動態(tài)掃描顯示,由于采用多路復(fù)用顯示方式,每路顯示的時間大為減少,這不僅使led顯示

10、亮度受到一定程度的影響,而且增加了顯示控制的復(fù)雜性和現(xiàn)實的穩(wěn)定性。本系統(tǒng)采用動態(tài)掃描控制顯示方式。a、顯示屏的列驅(qū)動列驅(qū)動采用帶輸出鎖存的8 bit 移位寄存器 74ls595。本系統(tǒng)采的led點陣是rg 雙色的,所以送入點陣的列驅(qū)動信號是 rg兩組。 以紅燈為例,兩片74ls595 級聯(lián)用作紅燈列驅(qū)動。每16 個時鐘控制器傳送的兩個字節(jié)的數(shù)據(jù)移位到兩片 595 中,16個列驅(qū)動信號都移位到兩片 595 中后,控制器給出一個stb 信號的上升沿,使一行數(shù)據(jù)鎖存輸出到led屏。led對應(yīng)的列驅(qū)動數(shù)據(jù)為1時,被其驅(qū)動的led不能被點亮;對應(yīng)的列驅(qū)動數(shù)據(jù)為0時,被其驅(qū)動的點被點亮。綠燈的點亮控制和紅

11、燈一樣,需要用到另外一套相同的595級聯(lián)電路。但具體點亮哪一個點,則由行驅(qū)動來指定。因此行驅(qū)動用來進行掃描控制,任一瞬時16行中只有1行被選通,換句話說一行中每一個點被點亮的時間只有不到1/16的時間,因為傳送數(shù)據(jù)和控制也需要時間。本系統(tǒng)采用的led點陣是rg雙色燈,具體哪個燈則由fpga傳遞的參數(shù)決定。需要注意的是,紅燈數(shù)據(jù)在送入led點陣前要加電阻限流。b、 顯示屏的行驅(qū)動為方便控制,行信號采用四位控制16行,行掃描信號的最高位用于選擇要譯碼的三八譯碼器。行掃描信號最高位為0時,三八譯碼器u7工作,譯碼后的信號作為前八行的行選擇信號;行掃描信號的最高位為1時,三八譯碼器u14工作,譯碼后的

12、信號作為后八行的行選擇信號。行選擇信號在送入led點陣前,要先送入專用的電源控制芯片apm4953,apm4953的輸出作為點陣的行驅(qū)動信號。更大的屏由多套這樣的電路拼接而成,每一部分的工作原理是一致的。這里僅以此電路來討論其工作的原理。c、具體掃描過程掃描過程:首先是fpga通過接口送來第一行要顯示的2個字節(jié)的紅色燈信號r和2個字節(jié)的綠燈信號g,兩個字節(jié)的紅燈數(shù)據(jù)分別鎖存于u1和u6中,兩個字節(jié)的綠燈數(shù)據(jù)分別鎖存于u10和u15中。隨后送出行掃描信號,行掃描信號經(jīng)三八譯碼器譯碼后為ih0-ih15,ih0-ih15經(jīng)過專用的電源控制芯片apm4953,成為led點陣的行驅(qū)動信號th0-th1

13、5。第一次送來的掃描信號應(yīng)使th0為1,其余為0。這意味著只有第1行被選通,第1行的16個點,32個led燈按4片595的輸出數(shù)據(jù)點亮或熄滅相應(yīng)的led燈,而其余15列由于不被選通將全部不發(fā)光。為防止數(shù)據(jù)串顯,經(jīng)過一段時間的延時后,要再送出一組綠燈均為1的數(shù)據(jù),即熄滅所有的燈,至此第1行掃描顯示完畢。隨后依次進行第2行的掃描顯示。同樣,先送第2行的16個紅色led燈的顯示數(shù)據(jù)分別鎖存于595(1)和595(2)中,第2行的16個綠色led燈的顯示數(shù)據(jù)分別鎖存于595(3)和595(4)中,再送掃描信號sel,且只使th1為1,并延時顯示,最后熄滅所有的燈。這樣逐列進行掃描顯示,當最后一列掃描完

14、后,fpga可進行適當?shù)臄?shù)據(jù)加工處理,接著又進行下一掃描周期的工作。必須指出,掃描周期應(yīng)小于或等于20ms以克服圖像的閃爍現(xiàn)象,但也不能太高,要考慮595工作的頻率范圍。電路如下圖:六、軟件系統(tǒng)的設(shè)計及實現(xiàn)1、系統(tǒng)的主程序設(shè)計(1)、算法描述運動:根據(jù)用戶輸入按鍵進行柔體傳動。吃到食物:置沒有食物的標志,蛇長大一個點陣。放新食物:判斷食物標志,如果沒有食物,就要放食物,判斷 放的食物是否和蛇身重疊,重疊了要重放。死亡處理:判斷是否撞中自己或撞墻。 游戲具體的流程是:蛇向一個固定方向進行柔體傳動,每個運動時鐘到達要做的工作有a、判斷食物標志,沒有食物了就放一個,放的時候判斷,不能和蛇身重疊。b、

15、得到用戶按鍵值,根據(jù)鍵值設(shè)置方向標識,并判斷是否撞死了,沒撞死和是否吃到自己,再判斷是否吃到東西了,沒有吃到,就等下一個運動時鐘;吃了,就增長一點。置一個沒有食物的標志。然后等待下一個時刻的來臨。(2)、流程圖 2、源程序 (見附錄)七、心得體會 本次電子綜合設(shè)計從9月6日開始,到9月30日結(jié)束,為 將近一個月。整個設(shè)計工作的安排是:前期,接受電子綜合設(shè)計任務(wù),閱讀、收集相關(guān)資料,學(xué)習(xí)nios ii嵌入式設(shè)計方法。進行簡單的包含nios ii嵌入式cpu的sopc系統(tǒng)驗證性試驗,熟悉定時器的使用,pio口的操作,以及中斷的實現(xiàn)操作。學(xué)習(xí)led點陣顯示屏的動態(tài)掃描顯示原理,并據(jù)此確定所需的元件,

16、做好準備工作。中期,研究貪吃蛇游戲的實現(xiàn)方法,根據(jù)要求的功能,和現(xiàn)有的資源確定總體設(shè)計方案。研究軟件算法和硬件電路的具體實現(xiàn),繪制led點陣屏動態(tài)掃描電路,完成布局、布線,緊接著進行硬件電路的焊接制作。后期,對硬件電路進行測試,軟件設(shè)計調(diào)試。這個階段中,對硬件的測試很重要,必須保證所設(shè)計的硬件平臺的每一個部分都能正確無誤地工作,這樣才能調(diào)試所設(shè)計到的軟件。這次電子綜合設(shè)計檢驗了我們對這三年所學(xué)知識掌握程度,同時也是一個學(xué)習(xí)新知識的過程。通過這次電子綜合設(shè)計,我們對幾種中規(guī)模集成電路芯片有了更多的了解,能根據(jù)我們的要求正確地使用這幾種芯片;在硬件電路的設(shè)計制作方面,我們的流程和方法更加的規(guī)范化,在制作硬件電路的過程中積累了一些經(jīng)驗,也從中總結(jié)了一些教訓(xùn)。比如說,在硬件電路的布局上,應(yīng)該考慮到布線的問題,應(yīng)該圍繞著led點陣顯示屏來展開,盡量使得布局后布線盡量地簡潔,布線的數(shù)量應(yīng)該盡量的少。布線時,盡量走90度的直角,減少電磁干擾現(xiàn)象。在sopc系統(tǒng)的構(gòu)建過程中,我們對其設(shè)計流程從陌生變得熟悉了。能夠在fpga上構(gòu)建簡單的sopc系統(tǒng)。也感受到了這種設(shè)計理念的魅力,感受到了這種技術(shù)的生機和力量。本次電子綜合設(shè)計中存在的問題是,硬件設(shè)計制作的時間太長,這使得軟件調(diào)試的時間很緊張,以至于有些提高功能在最后都沒有時間去實現(xiàn),這也是設(shè)計作品質(zhì)量

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論