北郵數(shù)電實(shí)驗(yàn)點(diǎn)陣賽車_第1頁
北郵數(shù)電實(shí)驗(yàn)點(diǎn)陣賽車_第2頁
北郵數(shù)電實(shí)驗(yàn)點(diǎn)陣賽車_第3頁
北郵數(shù)電實(shí)驗(yàn)點(diǎn)陣賽車_第4頁
北郵數(shù)電實(shí)驗(yàn)點(diǎn)陣賽車_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)字電路綜合實(shí)驗(yàn)報(bào)告點(diǎn)陣賽車游戲?qū)W院:信息與通信工程學(xué)院班級(jí):2010211117班 姓名: 學(xué)號(hào): 班內(nèi)序號(hào): 輔導(dǎo)老師:袁東明時(shí)間:2012年11月目錄一、 設(shè)計(jì)任務(wù)要求二、 系統(tǒng)設(shè)計(jì)三、 仿真波形及分析四、 源程序五、 功能說明六、 元器件清單及資源利用情況七、故障及問題分析八、總結(jié)和結(jié)論一、設(shè)計(jì)任務(wù)要求1、基本要求:1.用8×8點(diǎn)陣進(jìn)行5秒倒計(jì)時(shí)顯示,如下圖所示。2.當(dāng)5秒倒計(jì)時(shí)結(jié)束后,點(diǎn)陣顯示下圖所示的賽道和賽車的初始位置,賽車游戲開始,并開始計(jì)時(shí),用兩個(gè)數(shù)碼管顯示時(shí)間。圖中的紅色表示賽道,黃色表示賽車的初始位置,箭頭表示賽車行進(jìn)的方向。3.用BTN1BTN3三個(gè)按鍵分別控

2、制賽車的左移、前進(jìn)、右移,最終使賽車在不碰撞賽道的情況下走完全程(即圖2中的綠色位置),游戲結(jié)束,點(diǎn)陣顯示“V”圖案,數(shù)碼管顯示走完全程所耗費(fèi)的時(shí)間。4.當(dāng)游戲時(shí)間超過59秒,或者賽車在行進(jìn)過程中碰撞賽道,游戲失敗,點(diǎn)陣顯示“X”圖案。5.通過按鍵BTN0進(jìn)行復(fù)位,控制點(diǎn)陣返回到初始狀態(tài)。2、提高要求:1.有多種游戲賽道可選,5秒倒計(jì)時(shí)顯示后賽道隨機(jī)出現(xiàn)。2.賽車的初始位置隨機(jī)出現(xiàn)。3.在賽車行進(jìn)過程中,賽道中隨機(jī)出現(xiàn)障礙物(用8×8點(diǎn)陣中的一個(gè)LED表示),通過BTN1BTN3三個(gè)按鍵的控制躲避障礙物,走完全程。若賽車碰到障礙物和賽道,則游戲失敗。二、系統(tǒng)設(shè)計(jì)1、設(shè)計(jì)框圖1、 系統(tǒng)

3、結(jié)構(gòu)框圖本系統(tǒng)主要由四個(gè)模塊組成,其中控制器用于控制程序運(yùn)行、儲(chǔ)存當(dāng)前狀態(tài)并控制輸出顯示,點(diǎn)陣用于顯示游戲界面,數(shù)碼管用于顯示當(dāng)前分?jǐn)?shù)。按鈕輸入用于輸入控制信息。2、 邏輯劃分方框圖3、 系統(tǒng)流程圖開始點(diǎn)陣5秒倒計(jì)時(shí)游戲開始,數(shù)碼管顯示時(shí)間,點(diǎn)陣顯示小車與賽道賽道下移,小車不動(dòng)小車位置移動(dòng)否賽道與車是否相撞,是否超時(shí)按鍵輸入否是是是否到達(dá)終點(diǎn)否是點(diǎn)陣顯示“V”圖案,數(shù)碼管顯示走完全程所耗費(fèi)的時(shí)間點(diǎn)陣顯示“X”游戲結(jié)束4、MDS圖Te to end到達(dá)終點(diǎn)Cr crash 撞車Ot over timeCD count downKI keyboard input運(yùn)行狀態(tài)游戲成功游戲失敗等待狀態(tài)Re

4、setResetResetOt or CrTeCD 游戲運(yùn)行狀態(tài)的具體狀態(tài)轉(zhuǎn)移圖鍵盤輸入狀態(tài)車移動(dòng)賽道移動(dòng)是否撞車,超時(shí)KIKIKI到達(dá)狀態(tài)三、仿真波形及波形分析說明:為了得到仿真結(jié)果,仿真實(shí)驗(yàn)先將分頻比降低再進(jìn)行。說明:cat的波形說明,硬件運(yùn)行過程中只選擇5號(hào)和4號(hào)數(shù)碼管,這兩個(gè)數(shù)碼管交替啟動(dòng),分別顯示時(shí)間秒數(shù)的個(gè)位和十位說明:游戲剛開始時(shí),數(shù)碼管顯示00.對(duì)應(yīng)的time_car序列為0111111說明:游戲運(yùn)行一段時(shí)間后(5秒倒計(jì)時(shí))計(jì)時(shí)模塊開始計(jì)時(shí)。上圖中,數(shù)碼管顯示01秒,0對(duì)應(yīng)序列為0111111,1對(duì)應(yīng)于0000110。下圖是02秒的仿真圖說明:點(diǎn)陣輸出,列的輸出為0111111

5、1,10111111,11111110說明:列的輸出為00000100,00000100,00111100對(duì)應(yīng)于點(diǎn)陣圖形5的輸出。從第二行開始輸出。四、源程序及注釋(由于代碼過長(zhǎng),此處只顯示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_C

6、AR: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;-時(shí)鐘輸入 CLEAR:IN STD_LOGIC;-掃描,清零CLK:OUT STD_LOGIC:='0'-1000HZ游戲控制及點(diǎn)陣掃描頻率CLK1:OUT STD_L

7、OGIC:='0'-100HZ數(shù)碼管掃描頻率CLK2:OUT STD_LOGIC:='0'-10HZ計(jì)時(shí)頻率 ); 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_VECT

8、OR(7 DOWNTO 0); -點(diǎn)陣的輸出 行與列COL0_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); - 游戲控制模塊傳給顯示模塊的 點(diǎn)陣的列的數(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); CO

9、L6_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計(jì)時(shí)模塊傳給顯示模塊的數(shù)據(jù) :時(shí)間的秒數(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 ST

10、D_LOGIC_VECTOR(7 DOWNTO 0);-傳給顯示模塊的數(shù)據(jù) 點(diǎn)陣的列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_VECT

11、OR(7 DOWNTO 0);CLK:IN STD_LOGIC; STARTCOUNT : OUT STD_LOGIC; -傳給計(jì)時(shí)模塊的一個(gè)標(biāo)志 用來控制是否計(jì)時(shí)TIMEOUT :IN STD_LOGIC;-計(jì)時(shí)模塊傳給游戲控制模塊的一個(gè)標(biāo)志,說明是否超時(shí)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;

12、-傳給顯示模塊的 STARTCOUNT :IN STD_LOGIC;-用來控制是否計(jì)時(shí)TIMEOUT :OUT STD_LOGIC-傳給游戲控制模塊的一個(gè)標(biāo)志,說明是否超時(shí));END COMPONENT;-SIGNAL KEY_TMP:STD_LOGIC_VECTOR(2 DOWNTO 0);-以下皆為連接的中間信號(hào)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

13、 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

14、;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_C

15、AR(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

16、_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

17、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_

18、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;五、實(shí)現(xiàn)功能說明倒計(jì)時(shí)階段,數(shù)碼管不計(jì)時(shí)60秒超時(shí) ,游戲結(jié)束碰賽道或障礙,游戲結(jié)束跑到終點(diǎn),游戲成功,顯示完成時(shí)間隨機(jī)賽道,隨機(jī)障礙,小車隨機(jī)初始位置 按下復(fù)位鍵之后,游戲重新開始六、元器件清單及資源利用情況1、使用的元器件芯

19、片EPM1270T144C5按鍵3個(gè)Led點(diǎn)陣8*8個(gè)單元Led數(shù)碼管1個(gè)2、資源利用七、 故障及問題分析1, 故障:加了防抖模塊后,按鍵變得非常不靈敏,怎么按都沒有反應(yīng)。問題分析:之前只考慮防抖的設(shè)計(jì),在排除故障時(shí),沒有找出任何有價(jià)值的信息,防抖頻率也是100hz,分頻模塊也沒有出錯(cuò),試著將防抖電路的頻率改了一下,依舊沒有用。后來聽課之后才明白,加了防抖模塊外,還需要加上時(shí)鐘同步,才能做成同步時(shí)序電路,才能有效地控制電路的運(yùn)行。修改了防抖模塊代碼后(由防抖頻率進(jìn)行防抖,游戲控制頻率進(jìn)行同步),游戲終于能夠有效運(yùn)行。2, 故障:在不同的實(shí)驗(yàn)室進(jìn)行實(shí)驗(yàn),有時(shí)點(diǎn)陣顯示正常,有時(shí)點(diǎn)陣全亮。問題分析:這是由于實(shí)驗(yàn)板的點(diǎn)陣設(shè)計(jì)不同導(dǎo)致的。在將點(diǎn)陣管腳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論