北郵數(shù)電綜合實(shí)驗(yàn)報(bào)告_第1頁(yè)
北郵數(shù)電綜合實(shí)驗(yàn)報(bào)告_第2頁(yè)
北郵數(shù)電綜合實(shí)驗(yàn)報(bào)告_第3頁(yè)
北郵數(shù)電綜合實(shí)驗(yàn)報(bào)告_第4頁(yè)
北郵數(shù)電綜合實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(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、點(diǎn)陣賽車游戲 學(xué)院:信息與通信工程學(xué)院專業(yè):通信工程班級(jí):姓名: 學(xué)號(hào):班內(nèi)序號(hào):一、 設(shè)計(jì)課題的任務(wù)要求用88點(diǎn)陣進(jìn)行5秒倒計(jì)時(shí)顯示,當(dāng)5秒倒計(jì)時(shí)結(jié)束后,點(diǎn)陣顯示賽道和賽車的初始位置,賽車游戲開始,并開始計(jì)時(shí),用兩個(gè)數(shù)碼管顯示時(shí)間。用紅色表示賽道,黃色表示賽車的初始位置,箭頭表示賽車行進(jìn)的方向。用BTN1BTN3三個(gè)按鍵分別控制賽車的左移、前進(jìn)、右移,最終使賽車在不碰撞賽道的情況下走完全程,游戲結(jié)束,點(diǎn)陣顯示“V”圖案,數(shù)碼管顯示走完全程所耗費(fèi)的時(shí)間。當(dāng)游戲時(shí)間超過(guò)59秒,或者賽車在行進(jìn)過(guò)程中碰撞賽道,游戲失敗,點(diǎn)陣顯示“X”圖案。通過(guò)按鍵BTN0進(jìn)行復(fù)位,控制點(diǎn)陣返回到初始狀態(tài)。二、 系統(tǒng)

2、設(shè)計(jì)1、 設(shè)計(jì)思路這個(gè)過(guò)程乍一看蠻復(fù)雜的,但是當(dāng)我經(jīng)過(guò)仔細(xì)分析后發(fā)現(xiàn),我的代碼可以按照這個(gè)游戲的運(yùn)行過(guò)程來(lái)寫。這個(gè)游戲分為4個(gè)狀態(tài),即倒計(jì)時(shí),運(yùn)行,成功和失敗。倒計(jì)時(shí)部分根據(jù)不同數(shù)字在點(diǎn)陣上的位置很容易設(shè)計(jì)出來(lái),運(yùn)行部分便是初始化賽道,賽車的位置,然后用按鍵來(lái)控制賽車運(yùn)動(dòng),在這個(gè)過(guò)程中要不斷判斷賽車是否撞墻和到達(dá)終點(diǎn),如果到達(dá)終點(diǎn)便進(jìn)入第三個(gè)狀態(tài),成功,即顯示“V”;若果撞墻便進(jìn)入第四個(gè)狀態(tài),失敗,即顯示“X”。在游戲運(yùn)行的同時(shí)數(shù)碼管還要計(jì)時(shí)。2、 總體框圖(1) 系統(tǒng)結(jié)構(gòu)圖譯碼顯示器分頻器控制器計(jì)時(shí)器賽道及賽車CPRESETBTN1BTN2BTN3啟動(dòng)NY是否碰到邊界邊界是否到達(dá)終點(diǎn)邊界顯示

3、“V”顯示“”計(jì)時(shí)移動(dòng)是否復(fù)位邊界是否復(fù)位邊界YNNYNYN(2)ASM圖倒計(jì)時(shí)移動(dòng)顯示“V”顯示“X”(3)狀態(tài)轉(zhuǎn)移圖RESETRESETRESET到終點(diǎn)撞墻(4)功能模塊圖點(diǎn)陣顯示顯示存儲(chǔ)器方向控制模塊控制器分頻器計(jì)時(shí)器數(shù)碼管3、 模塊設(shè)計(jì)(1) 分頻模塊分頻器:因?yàn)樵械皖l時(shí)鐘為50MHZ,如果直接用這個(gè)時(shí)鐘信號(hào)同時(shí)實(shí)現(xiàn)計(jì)時(shí)和顯示部分,故需兩個(gè)分頻器,分別將時(shí)鐘頻率分為1Hz和1kHz,1Hz用來(lái)控制倒計(jì)時(shí)和游戲運(yùn)行過(guò)程中的計(jì)時(shí),1kHz用來(lái)控制點(diǎn)陣和數(shù)碼管的顯示。(2)游戲模塊剛開始的代碼有一個(gè)判斷是否復(fù)位的代碼,如果RESET=1,將代碼中定義的一些信號(hào)初始化,之后整個(gè)過(guò)程分為四個(gè)狀

4、態(tài),即STATE可取0,1,2,3四個(gè)值。0處于倒計(jì)時(shí)狀態(tài),1處于用按鍵控制賽車運(yùn)動(dòng)的狀態(tài),2處于到達(dá)終點(diǎn)的狀態(tài),并且顯示“V”,3處于失敗的狀態(tài),并且顯示“X”。當(dāng)STATE=0時(shí),游戲處于倒計(jì)時(shí)狀態(tài),倒計(jì)時(shí)五秒,利用五個(gè)數(shù)字在點(diǎn)陣上的不同位置初始化點(diǎn)陣,分別對(duì)應(yīng)五個(gè)數(shù)字,在時(shí)鐘1Hz下做倒計(jì)時(shí)五秒的工作。當(dāng)STATE=1時(shí),處于用按鍵控制賽車運(yùn)動(dòng)的狀態(tài),此期間分別用BTN1,BTN2,BTN3來(lái)控制賽車的右,前,左的運(yùn)動(dòng)方向,運(yùn)動(dòng)期間還要不斷判斷賽車是否撞到墻或者障礙物,以及判斷賽車是否到達(dá)終點(diǎn),一次來(lái)確定游戲是否進(jìn)入STATE=2或STATE=3狀態(tài)。當(dāng)STATE=2時(shí),要在點(diǎn)陣上顯示“

5、V”,即給點(diǎn)陣矩陣初始化顯示此圖形的數(shù)據(jù)。當(dāng)STATE=3時(shí),要在點(diǎn)陣上顯示“X”,即給點(diǎn)陣矩陣初始化顯示此圖形的數(shù)據(jù)。(3)顯示模塊因?yàn)樗袪顟B(tài)不能同時(shí)顯示,故循環(huán)顯示電路分別掃描。當(dāng)時(shí)鐘頻率足夠大時(shí),根據(jù)視覺(jué)暫留則可看到較為穩(wěn)定的畫面。點(diǎn)陣顯示是在時(shí)鐘頻率1kHz下一行一行掃描,這樣在不同時(shí)候就可以顯示不同的圖形,比如倒計(jì)時(shí)的5,4,3,2,1和賽道,賽車的位置;其次是數(shù)碼管的顯示,數(shù)碼管首先有個(gè)控制計(jì)數(shù)的代碼,此計(jì)數(shù)是在時(shí)鐘頻率1Hz下工作的,然后在時(shí)鐘頻率1kHz的控制下分別讓兩個(gè)數(shù)碼管顯示,此即為計(jì)時(shí)器的顯示。三、仿真波形及波形分析倒計(jì)時(shí)波形點(diǎn)陣顯示倒計(jì)時(shí)波形數(shù)碼管顯示及波形數(shù)碼管顯

6、示01,02,03點(diǎn)陣行顯示波形點(diǎn)陣列顯示波形點(diǎn)陣顯示波形四、源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CAR IS PORT( CLK:IN STD_LOGIC; -時(shí)鐘信號(hào) RESET:IN STD_LOGIC;-復(fù)位輸入 CONTROL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);-賽車控制 ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-行控制輸出 COLR,

7、COLG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-列控制輸出 CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);-數(shù)碼管選通 DISPLAY:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)數(shù)碼管顯示);END CAR;ARCHITECTURE behave OF CAR ISSIGNAL TEMP1:INTEGER RANGE 0 TO 49999;-分頻信號(hào)SIGNAL TEMP2:INTEGER RANGE 0 TO ;SIGNAL CLK1K:STD_LOGIC;-頻率1kHz時(shí)鐘SIGNAL CLK1HZ:STD_L

8、OGIC; -頻率1Hz時(shí)鐘SIGNAL TIMEH:INTEGER RANGE 0 TO 5;-十位計(jì)數(shù) SIGNAL TIMEL:INTEGER RANGE 0 TO 9;-個(gè)位計(jì)數(shù) SIGNAL LIGHTH:STD_LOGIC_VECTOR(6 DOWNTO 0);-十位數(shù)碼管控制信號(hào)SIGNAL LIGHTL:STD_LOGIC_VECTOR(6 DOWNTO 0);-個(gè)位數(shù)碼管控制信號(hào)TYPE PRESENT_STATE IS (H,L);-自定義變量SIGNAL P_STATE:PRESENT_STATE; SIGNAL STATE:INTEGER RANGE 0 TO 3;-四

9、個(gè)狀態(tài)控制信號(hào) SIGNAL COUNT : INTEGER RANGE 0 TO 6;-倒計(jì)時(shí)控制信號(hào) SIGNAL CX,CY:INTEGER RANGE 0 TO 7;-賽車坐標(biāo)控制信號(hào) SIGNAL ROWS:STD_LOGIC_VECTOR(7 DOWNTO 0);-行控制信號(hào) SIGNAL COLR7,COLR6,COLR5,COLR4,COLR3,COLR2,COLR1,COLR0,-列控制信號(hào) COLG7,COLG6,COLG5,COLG4,COLG3,COLG2,COLG1,COLG0:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINDIV1K:PROCE

10、SS(CLK) -分頻1kHzBEGINIF CLKEVENT AND CLK = 1 THENIF TEMP1 = 49999 THEN TEMP1 = 0; ELSE TEMP1 = TEMP1 + 1;END IF;IF TEMP1 25000 THENCLK1K = 0;ELSECLK1K = 1;END IF;END IF;END PROCESS;DIV1HZ:PROCESS(CLK) -分頻1HzBEGINIF CLKEVENT AND CLK = 1 THENIF TEMP2 = THEN TEMP2 = 0;ELSE TEMP2 = TEMP2 + 1;END IF;IF TE

11、MP2 THENCLK1HZ = 0;ELSECLK1HZ = 1;END IF;END IF;END PROCESS;GAMERUN:PROCESS(CLK1HZ,RESET) -游戲運(yùn)行進(jìn)程BEGINIF RESET = 1 THEN -復(fù)位和初始化STATE = 0; COUNT = 6;CX = 2;CY = 0;TIMEH = 0;TIMEL = 0;COLG7 = ;COLG6 = ;COLG5 = ;COLG4 = ;COLG3 = ;COLG2 = ;COLG1 = ;COLG0 CASE COUNT IS -點(diǎn)陣倒計(jì)時(shí)WHEN 6 = COUNT = 5;COLR7 = ;C

12、OLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT = 4;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT =3;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT = 2;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT

13、 = 1;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT = 0;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COUNT = 6;STATE IF TIMEL = 9 THEN -數(shù)碼管計(jì)時(shí)TIMEL = 0;IF TIMEH = 5 THENTIMEH = 0;IF CY /= 7 THENSTATE = 3;ELSESTATE = 2;END IF;ELSETIMEH = TIMEH + 1;EN

14、D IF;ELSETIMEL = TIMEL + 1;END IF;COLG7 = ; -初始化賽道COLG6 = ;COLG5 = ;COLG4 = ;COLG3 = ;COLG2 = ;COLG1 = ;COLG0 = ;COLR7 = ;COLR6 = ;COLR5 = ;COLR4 = ;COLR3 = ;COLR2 = ;COLR1 = ;COLR0 COLG0(7-CX) COLG1(7-CX) COLG2(7-CX) COLG3(7-CX) COLG4(7-CX) COLG5(7-CX) COLG6(7-CX) COLG7(7-CX) CX CY CX NULL;END CASE

15、;CASE CY IS -判斷移動(dòng)后是否撞墻WHEN 0 = IF COLR0(7-CX) = 1 THEN STATE = 3; ELSE COLG0(7-CX) IF COLR1(7-CX) = 1 THEN STATE = 3; ELSE COLG1(7-CX) IF COLR2(7-CX) = 1 THEN STATE = 3; ELSE COLG2(7-CX) IF COLR3(7-CX) = 1 THEN STATE = 3; ELSE COLG3(7-CX) IF COLR4(7-CX) = 1 THEN STATE = 3; ELSE COLG4(7-CX) IF COLR5(

16、7-CX) = 1 THEN STATE = 3; ELSE COLG5(7-CX) IF COLR6(7-CX) = 1 THEN STATE = 3; ELSE COLG6(7-CX) STATE = 2;END CASE;IF CY = 7 THEN STATE COLR7 = ; -到達(dá)終點(diǎn)后顯示“V” COLR6 = ; COLR5 = ; COLR4 = ; COLR3 = ; COLR2 = ; COLR1 = ; COLR0 = ; COLG7 = ; COLG6 = ; COLG5 = ; COLG4 = ; COLG3 = ; COLG2 = ; COLG1 = ; COL

17、G0 COLG7 = ; -撞墻后顯示“X” COLG6 = ; COLG5 = ; COLG4 = ; COLG3 = ; COLG2 = ; COLG1 = ; COLG0 = ; COLR7 = ; COLR6 = ; COLR5 = ; COLR4 = ; COLR3 = ; COLR2 = ; COLR1 = ; COLR0 COLR = COLR0; COLG = COLG0; ROW = ROWS; ROWS COLR = COLR1; COLG = COLG1; ROW = ROWS; ROWS COLR = COLR2; COLG = COLG2; ROW = ROWS; R

18、OWS COLR = COLR3; COLG = COLG3; ROW = ROWS; ROWS COLR = COLR4; COLG = COLG4; ROW = ROWS; ROWS COLR = COLR5; COLG = COLG5; ROW = ROWS; ROWS COLR = COLR6; COLG = COLG6; ROW = ROWS; ROWS COLR = COLR7; COLG = COLG7; ROW = ROWS; ROWS ROWS LIGHTHLIGHTHLIGHTHLIGHTHLIGHTHLIGHTHLIGHTHLIGHTLLIGHTLLIGHTLLIGHTL

19、LIGHTLLIGHTLLIGHTLLIGHTLLIGHTLLIGHTLLIGHTL P_STATE = H; CAT = ; DISPLAY P_STATE = L; CAT = ; DISPLAY = LIGHTH;END CASE;END IF;END PROCESS;END behave;五、功能說(shuō)明:1、 復(fù)位:當(dāng)按下BTN0時(shí),賽道,計(jì)時(shí)等控制模塊初始化,游戲重啟2、 方向控制:BTN1,BTN2,BTN3分別控制賽車向右,上,左運(yùn)動(dòng)3、 當(dāng)賽車撞墻或障礙物時(shí),游戲失敗,顯示“X”4、 當(dāng)賽車到達(dá)終點(diǎn)時(shí),游戲成功,顯示“V”六、元器件清單及資源利用情況:1、元器件系統(tǒng)時(shí)鐘CLK點(diǎn)陣

20、行顯示ROW0ROW7紅點(diǎn)陣列顯示COLR0COLR7,綠點(diǎn)陣列顯示COLG0COLG7數(shù)碼管控制選通CAT0CAT6數(shù)碼管顯示DISPLAY0-DISPLAY6撥碼開關(guān) BTN1,BTN2,BTN3,BTN42、資源利用情況七、實(shí)驗(yàn)中遇到的問(wèn)題1、剛開始接觸這個(gè)程序時(shí)不知道該如何下手,因此前期的流程圖和狀態(tài)轉(zhuǎn)移圖就不知道從何做起,后來(lái)經(jīng)過(guò)和同組的同學(xué)的討論后大概有了思路,在經(jīng)自己獨(dú)立思考后整理出了初期的那些框圖,后來(lái)經(jīng)老師指點(diǎn)發(fā)現(xiàn)了很多錯(cuò)誤,再經(jīng)過(guò)自己的整理后成了現(xiàn)在的那些框圖。2、模塊劃分不合理,進(jìn)程太多:第一次課驗(yàn)收仿真波形時(shí),本以為編譯成功的我便信心滿滿的去了,結(jié)果到那里后不但波形沒(méi)出

21、來(lái),還被老師發(fā)現(xiàn)了編譯成功后竟然用了零個(gè)邏輯單元!后來(lái)發(fā)現(xiàn)在我的不同進(jìn)程中同時(shí)給同一個(gè)信號(hào)多次賦值,造成編譯時(shí)所有進(jìn)程都沒(méi)有編譯,即老師說(shuō)的根本就沒(méi)有電路。隨后我將多進(jìn)程合并成一個(gè)進(jìn)程后就解決了這個(gè)問(wèn)題。3、粗心大意:寫代碼的過(guò)程中發(fā)現(xiàn)我的計(jì)時(shí)波形一直為零,經(jīng)過(guò)很多同學(xué)檢查后都一直覺(jué)得代碼沒(méi)有問(wèn)題,于是我便請(qǐng)教了石曉東老師,老師看了一下我的代碼也覺(jué)得沒(méi)有問(wèn)題,后來(lái)從我的警告中發(fā)現(xiàn)我有一個(gè)變量名字寫錯(cuò)了,改正過(guò)后發(fā)現(xiàn)整個(gè)計(jì)時(shí)波形就好了。4、考慮問(wèn)題不夠周全:還有一項(xiàng)問(wèn)題就是點(diǎn)陣輸出上,剛開始完全沒(méi)有波形,后來(lái)在同學(xué)的幫助下發(fā)現(xiàn)是在信號(hào)給輸出變量賦值時(shí)少考慮了others的情況,致使所有的信號(hào)壓根兒就沒(méi)有給輸出賦值,改正后問(wèn)題得到了解決。5、最后一項(xiàng)問(wèn)題就是時(shí)鐘,我相信很多同學(xué)會(huì)遇到類似這樣的問(wèn)題,就是“Error (108

溫馨提示

  • 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ù)網(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)論