北郵數(shù)電實驗點陣賽車.doc_第1頁
北郵數(shù)電實驗點陣賽車.doc_第2頁
北郵數(shù)電實驗點陣賽車.doc_第3頁
北郵數(shù)電實驗點陣賽車.doc_第4頁
北郵數(shù)電實驗點陣賽車.doc_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)字電路綜合實驗報告點陣賽車游戲?qū)W院:信息與通信工程學(xué)院班級:2010211117班 姓名: 學(xué)號: 班內(nèi)序號: 輔導(dǎo)老師:袁東明時間:2012年11月目錄一、 設(shè)計任務(wù)要求二、 系統(tǒng)設(shè)計三、 仿真波形及分析四、 源程序五、 功能說明六、 元器件清單及資源利用情況七、故障及問題分析八、總結(jié)和結(jié)論一、設(shè)計任務(wù)要求1、基本要求:1.用88點陣進(jìn)行5秒倒計時顯示,如下圖所示。2.當(dāng)5秒倒計時結(jié)束后,點陣顯示下圖所示的賽道和賽車的初始位置,賽車游戲開始,并開始計時,用兩個數(shù)碼管顯示時間。圖中的紅色表示賽道,黃色表示賽車的初始位置,箭頭表示賽車行進(jìn)的方向。3.用BTN1BTN3三個按鍵分別控制賽車的左移、前進(jìn)、右移,最終使賽車在不碰撞賽道的情況下走完全程(即圖2中的綠色位置),游戲結(jié)束,點陣顯示“V”圖案,數(shù)碼管顯示走完全程所耗費的時間。4.當(dāng)游戲時間超過59秒,或者賽車在行進(jìn)過程中碰撞賽道,游戲失敗,點陣顯示“X”圖案。5.通過按鍵BTN0進(jìn)行復(fù)位,控制點陣返回到初始狀態(tài)。2、提高要求:1.有多種游戲賽道可選,5秒倒計時顯示后賽道隨機出現(xiàn)。2.賽車的初始位置隨機出現(xiàn)。3.在賽車行進(jìn)過程中,賽道中隨機出現(xiàn)障礙物(用88點陣中的一個LED表示),通過BTN1BTN3三個按鍵的控制躲避障礙物,走完全程。若賽車碰到障礙物和賽道,則游戲失敗。二、系統(tǒng)設(shè)計1、設(shè)計框圖1、 系統(tǒng)結(jié)構(gòu)框圖本系統(tǒng)主要由四個模塊組成,其中控制器用于控制程序運行、儲存當(dāng)前狀態(tài)并控制輸出顯示,點陣用于顯示游戲界面,數(shù)碼管用于顯示當(dāng)前分?jǐn)?shù)。按鈕輸入用于輸入控制信息。2、 邏輯劃分方框圖3、 系統(tǒng)流程圖開始點陣5秒倒計時游戲開始,數(shù)碼管顯示時間,點陣顯示小車與賽道賽道下移,小車不動小車位置移動否賽道與車是否相撞,是否超時按鍵輸入否是是是否到達(dá)終點否是點陣顯示“V”圖案,數(shù)碼管顯示走完全程所耗費的時間點陣顯示“X”游戲結(jié)束4、MDS圖Te to end到達(dá)終點Cr crash 撞車Ot over timeCD count downKI keyboard input運行狀態(tài)游戲成功游戲失敗等待狀態(tài)ResetResetResetOt or CrTeCD 游戲運行狀態(tài)的具體狀態(tài)轉(zhuǎn)移圖鍵盤輸入狀態(tài)車移動賽道移動是否撞車,超時KIKIKI到達(dá)狀態(tài)三、仿真波形及波形分析說明:為了得到仿真結(jié)果,仿真實驗先將分頻比降低再進(jìn)行。說明:cat的波形說明,硬件運行過程中只選擇5號和4號數(shù)碼管,這兩個數(shù)碼管交替啟動,分別顯示時間秒數(shù)的個位和十位說明:游戲剛開始時,數(shù)碼管顯示00.對應(yīng)的time_car序列為0111111說明:游戲運行一段時間后(5秒倒計時)計時模塊開始計時。上圖中,數(shù)碼管顯示01秒,0對應(yīng)序列為0111111,1對應(yīng)于0000110。下圖是02秒的仿真圖說明:點陣輸出,列的輸出為01111111,10111111,11111110說明:列的輸出為00000100,00000100,00111100對應(yīng)于點陣圖形5的輸出。從第二行開始輸出。四、源程序及注釋(由于代碼過長,此處只顯示top-level entity,其余代碼詳見附件)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CAR ISPORT( CLK_CAR,CLEAR_CAR:IN STD_LOGIC; ROW_CAR,COL_CAR:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); KEY_CAR:IN STD_LOGIC_VECTOR(2 DOWNTO 0); TIME_CAR:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); CAT_CAR:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END CAR;-ARCHITECTURE GAME OF CAR ISCOMPONENT DIV_N IS-分頻模塊PORT( CLK_IN:IN STD_LOGIC;-時鐘輸入 CLEAR:IN STD_LOGIC;-掃描,清零CLK:OUT STD_LOGIC:=0;-1000HZ游戲控制及點陣掃描頻率CLK1:OUT STD_LOGIC:=0;-100HZ數(shù)碼管掃描頻率CLK2:OUT STD_LOGIC:=0-10HZ計時頻率 ); END COMPONENT;COMPONENT ANTI_SHAKING IS -防抖模塊PORT(CLK,KEY,CLK1:IN STD_LOGIC; - clk為游戲控制頻率 clk1 為防抖頻率 100hzK_OUT:OUT STD_LOGIC);END COMPONENT;COMPONENT DISPLAY IS -顯示模塊PORT(CLK1,CLK,CLEAR:IN STD_LOGIC;COL,ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -點陣的輸出 行與列COL0_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); - 游戲控制模塊傳給顯示模塊的 點陣的列的數(shù)據(jù)COL1_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL2_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL3_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL4_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); COL5_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); COL6_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); COL7_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED1_IN,LED2_IN:IN INTEGER RANGE 0 TO 9;-LED計時模塊傳給顯示模塊的數(shù)據(jù) :時間的秒數(shù) CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); SHUMA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) -即AA-AF);-數(shù)碼管END COMPONENT;COMPONENT GAME_CONTROL IS -游戲控制模塊PORT(COL0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-傳給顯示模塊的數(shù)據(jù) 點陣的列COL1: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL2: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL3: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL4: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL5: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL6: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL7: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);CLK:IN STD_LOGIC; STARTCOUNT : OUT STD_LOGIC; -傳給計時模塊的一個標(biāo)志 用來控制是否計時TIMEOUT :IN STD_LOGIC;-計時模塊傳給游戲控制模塊的一個標(biāo)志,說明是否超時CLEAR:IN STD_LOGIC;KEYUP,KEYRIGHT,KEYLEFT: IN STD_LOGIC); END COMPONENT;COMPONENT TIMECOUNT ISPORT(CLK2,CLEAR:IN STD_LOGIC;-10HZLED1_OUT,LED2_OUT:OUT INTEGER RANGE 0 TO 9;-傳給顯示模塊的 STARTCOUNT :IN STD_LOGIC;-用來控制是否計時TIMEOUT :OUT STD_LOGIC-傳給游戲控制模塊的一個標(biāo)志,說明是否超時);END COMPONENT;-SIGNAL KEY_TMP:STD_LOGIC_VECTOR(2 DOWNTO 0);-以下皆為連接的中間信號SIGNAL CLK_TMP,CLK1_TMP,CLK2_TMP:STD_LOGIC;SIGNAL COL0_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL1_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL2_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL3_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL4_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL5_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL6_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL7_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL TIMEOUT_TMP : STD_LOGIC;SIGNAL STARTCOUNT_TMP : STD_LOGIC; SIGNALLED1_TMP,LED2_TMP: INTEGER RANGE 0 TO 9;-LED SIGNAL CLEAR: STD_LOGIC;-BEGIND1:DIV_N PORT MAP(CLK=CLK_TMP,CLK1=CLK1_TMP,CLK2=CLK2_TMP,CLK_IN=CLK_CAR,CLEAR=CLEAR_CAR);-A1:ANTI_SHAKING PORT MAP(CLK=CLK_TMP,CLK1=CLK1_TMP,KEY=KEY_CAR(0),K_OUT=KEY_TMP(0); - A2:ANTI_SHAKING PORT MAP(CLK=CLK_TMP,CLK1=CLK1_TMP,KEY=KEY_CAR(1),K_OUT=KEY_TMP(1);-A3:ANTI_SHAKING PORT MAP(CLK=CLK_TMP,CLK1=CLK1_TMP,KEY=KEY_CAR(2),K_OUT=KEY_TMP(2);-DP1:DISPLAY PORT MAP(CLK=CLK_TMP,CLK1=CLK1_TMP,CLEAR=CLEAR_CAR,SHUMA=TIME_CAR,CAT=CAT_CAR,COL=COL_CAR,ROW=ROW_CAR,LED1_IN=LED1_TMP,LED2_IN=LED2_TMP,COL0_IN=COL0_TMP,COL1_IN=COL1_TMP,COL2_IN=COL2_TMP,COL3_IN=COL3_TMP,COL4_IN=COL4_TMP,COL5_IN=COL5_TMP,COL6_IN=COL6_TMP,COL7_IN=COL7_TMP);-OK-T1:TIMECOUNT PORT MAP(CLK2=CLK2_TMP,CLEAR=CLEAR_CAR,LED1_OUT=LED1_TMP,LED2_OUT=LED2_TMP,STARTCOUNT=STARTCOUNT_TMP,TIMEOUT=TIMEOUT_TMP);-G1:GAME_CONTROL PORT MAP(CLK=CLK_TMP,CLEAR=CLEAR_CAR,STARTCOUNT=STARTCOUNT_TMP,TIMEOUT=TIMEOUT_TMP,KEYUP=KEY_TMP(1),KEYRIGHT=KEY_TMP(0),KEYLEFT=KEY_TMP(2),COL0=COL0_TMP,COL1=COL1_TMP,COL2=COL2_TMP,COL3=COL3_TMP,COL4=COL4_TMP,COL5=COL5_TMP,COL6=COL6_TMP,COL7=COL7_TMP); -END GAME;五、實現(xiàn)功能說明倒計時階段,數(shù)碼管不計時60秒超時 ,游戲結(jié)束碰賽道或障礙,游戲結(jié)束跑到終點,游戲成功,顯示完成時間隨機賽道,隨機障礙,小車隨機初始位置 按下復(fù)位鍵之后,游戲重新開始六、元器件清單及資源利用情況1、使用的元器件芯片EPM1270T144C5按鍵3個Led點陣8*8個單元Led數(shù)碼管1個2、資源利用七、 故障及問題分析1, 故障:加了防抖模塊后,按鍵變得非常不靈敏,怎么按都沒有反應(yīng)。問題分析:之前只考慮防抖的設(shè)計,在排除故障時,沒有找出任何有價值的信息,防抖頻率也是100hz,分頻模塊也沒有出錯,試著將防抖電路的頻率改了一下,依舊沒有用。后來聽課之后才明白,加了防抖模塊外,還需要加上時鐘同步,才能做成同步時序電路,才能有效地控制電路的運行。修改了防抖模塊代碼后(由防抖頻率進(jìn)行防抖,游戲控制頻率進(jìn)行同步),游戲終于能夠有效運行。2, 故障:在不同的實驗室進(jìn)行實驗,有時點陣顯示正常,有時點陣全亮。問題分析:這是由于實驗板的點陣設(shè)計不同導(dǎo)致的。在將點陣管腳的行與列相互對換之后,終于能夠顯示正常。但是有時出現(xiàn)

溫馨提示

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

最新文檔

評論

0/150

提交評論