EDA課程設(shè)計(jì)_按鍵游戲機(jī).doc_第1頁
EDA課程設(shè)計(jì)_按鍵游戲機(jī).doc_第2頁
EDA課程設(shè)計(jì)_按鍵游戲機(jī).doc_第3頁
EDA課程設(shè)計(jì)_按鍵游戲機(jī).doc_第4頁
EDA課程設(shè)計(jì)_按鍵游戲機(jī).doc_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

GDOU-B-11-302班級(jí): 姓名: 學(xué)號(hào): 試題共 1 頁 加白紙3 張 密 封 線廣東海洋大學(xué)2010 2011學(xué)年第一學(xué)期 EDA 課程考試設(shè)計(jì)答卷紙課程號(hào):1610003-1考試A卷閉卷考查B卷開卷題 號(hào)一二三四五六七八九十總分閱卷教師各題分?jǐn)?shù)055404055100實(shí)得分?jǐn)?shù)注意:1、須在限定的日期、時(shí)間之前交卷;2、設(shè)計(jì)程序、仿真圖打印稿附在卷后上交;3、其他答案可以打印在本答卷紙上;4、原理圖可以粘貼在本答卷紙上;一、 請(qǐng)寫出自己設(shè)計(jì)項(xiàng)目(控制器)名稱;答:我的設(shè)計(jì)項(xiàng)目是:按鍵游戲機(jī)(按鍵控制)。二、 請(qǐng)描述本設(shè)計(jì)項(xiàng)目(控制器)的功能和性能(5分);答:假設(shè)點(diǎn)陣做為基本顯示屏,一個(gè)發(fā)光點(diǎn)表示一個(gè)圖形,完成按鍵游戲機(jī)的基本功能:下落、左右移動(dòng)、消行和顯示得分情況,當(dāng)某一列到頂時(shí)游戲結(jié)束。設(shè)計(jì)包括2個(gè)大的元件,一個(gè)是FUNCTIONS,完成存儲(chǔ)狀態(tài),分頻,左右下移動(dòng)以及計(jì)分等功能;另一個(gè)是SHOW,主要完成點(diǎn)陣掃描和數(shù)碼管譯碼。仿真使用三、 畫出本設(shè)計(jì)項(xiàng)目(控制器)的電原理圖(5分);四、 打印的VHDL設(shè)計(jì)程序及注釋(40分);(附在卷后上交)五、 打印的仿真波形(如:Max+PLUS II)(40分);(附在卷后上交)六、 列出參考文獻(xiàn)(5分);【1】潘松. EDA 技術(shù)與VHDL. 北京:清華大學(xué)出版社 【2】延明. 數(shù)字邏輯設(shè)計(jì)實(shí)驗(yàn)與EDA技術(shù). 北京:北京郵電大學(xué)出版社七、 總結(jié)自己的設(shè)計(jì)(5分);答:這是本學(xué)期的EDA設(shè)計(jì),使用VHDL進(jìn)行設(shè)計(jì)。開始兩個(gè)星期,幾乎沒有寫代碼,首先我要搞清自己的設(shè)計(jì)思路,開始想了幾個(gè)思路,后來發(fā)現(xiàn)不是很好,所以后來都改了,重新編寫,重新編譯。編譯通過了,最后是仿真,所用的時(shí)間也不比設(shè)計(jì)少。因?yàn)橐粋€(gè)設(shè)計(jì)的測(cè)試驗(yàn)證是非常重要的。有效的測(cè)試可以助我們快速的完成或改善設(shè)計(jì)。所以之后又寫了一個(gè)Testbenches測(cè)試代碼來通過Modelsim軟件實(shí)現(xiàn)可靠的驗(yàn)證。我的代碼比較簡(jiǎn)單,自己覺得很滿意,但是仍然有許多需要改進(jìn)和擴(kuò)展的地方。這次設(shè)計(jì)使自己更加了解VHDL了,也學(xué)會(huì)了Quartus 設(shè)計(jì)和modelsim仿真。無論做什么實(shí)驗(yàn),都要有個(gè)好習(xí)慣,例如建立好工程放在指定地方,別總是擺在桌面。有時(shí)候好的習(xí)慣決定了實(shí)驗(yàn)的成敗,好習(xí)慣也能提高辦事效率,事半功倍。所以今后的很多實(shí)驗(yàn)都要態(tài)度端正,養(yǎng)成良好的習(xí)慣。頂層文件KEYGAME:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_SIGNED.ALL;ENTITYKEYGAMEISPORT(CLK: IN STD_LOGIC;-低頻時(shí)鐘 RESET: IN STD_LOGIC;-開始復(fù)位鍵 LEFT: IN STD_LOGIC;-左移 RIGHT: IN STD_LOGIC;-右移 COL : OUT STD_LOGIC_VECTOR(0 TO 3);- 列 ROW : OUT STD_LOGIC_VECTOR(0 TO 3);- 行 DISP : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);- 數(shù)碼管顯示分?jǐn)?shù) CAT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) -數(shù)碼管選擇 );END KEYGAME;ARCHITECTUREARCH OF KEYGAME ISSIGNALFENSHU : INTEGER RANGE 0 TO 15;SIGNAL STA0,STA1,STA2,STA3 : STD_LOGIC_VECTOR(0 TO 3) ;COMPONENT -元件例化說明FUNCTIONS PORT(CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; LEFT:IN STD_LOGIC; RIGHT:IN STD_LOGIC; SCORES:OUT INTEGER RANGE 0 TO 15; STA0 : OUT STD_LOGIC_VECTOR(0 TO 3) ; STA1 : OUT STD_LOGIC_VECTOR(0 TO 3) ; STA2 : OUT STD_LOGIC_VECTOR(0 TO 3) ; STA3 : OUT STD_LOGIC_VECTOR(0 TO 3) );END COMPONENT;COMPONENT -元件例化申明 SHOW PORT( CLK:IN STD_LOGIC; -時(shí)鐘信號(hào)STA0 : IN STD_LOGIC_VECTOR(0 TO 3) ; -第一行狀態(tài)STA1 : IN STD_LOGIC_VECTOR(0 TO 3) ; -第二行狀態(tài)STA2 : IN STD_LOGIC_VECTOR(0 TO 3) ; -第三行狀態(tài)STA3 : IN STD_LOGIC_VECTOR(0 TO 3) ; -第四行狀態(tài)SCORE:IN INTEGER RANGE 0 TO 15; -計(jì)分COL :OUT STD_LOGIC_VECTOR(0 TO 3); - 列ROW :OUT STD_LOGIC_VECTOR(0 TO 3); - 行DISP : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); - 數(shù)碼管顯示分?jǐn)?shù)CAT :OUT STD_LOGIC_VECTOR(5 DOWNTO 0) -數(shù)碼管選擇);END COMPONENT;BEGIN-元件例化C1:FUNCTIONS PORT MAP(CLK,RESET,LEFT,RIGHT,FENSHU,STA0,STA1,STA2,STA3);C2:SHOW PORT MAP(CLK,STA0,STA1,STA2,STA3,FENSHU,COL,ROW,DISP,CAT);END;FUNCTIONS的代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_SIGNED.ALL;ENTITYFUNCTIONSISPORT(CLK:IN STD_LOGIC;-時(shí)鐘頻率,選用低頻 RESET:IN STD_LOGIC;-復(fù)位鍵,1復(fù)位;0不改變 LEFT:IN STD_LOGIC;-左移鍵,1移動(dòng),0不改變 RIGHT:IN STD_LOGIC;-右移鍵,1移動(dòng),0不改變,左右同時(shí)0為下移 SCORES:OUT INTEGER RANGE 0 TO 15;-分?jǐn)?shù),這里定最高15分 STA0 : OUT STD_LOGIC_VECTOR(0 TO 3) ;-以下為四行狀態(tài)寄存 STA1 : OUT STD_LOGIC_VECTOR(0 TO 3) ; STA2 : OUT STD_LOGIC_VECTOR(0 TO 3) ; STA3 : OUT STD_LOGIC_VECTOR(0 TO 3) );END FUNCTIONS;ARCHITECTURE MOVING OF FUNCTIONS ISSIGNAL STATU0 : STD_LOGIC_VECTOR(0 TO 3) ;SIGNAL STATU1 : STD_LOGIC_VECTOR(0 TO 3) ;SIGNAL STATU2 : STD_LOGIC_VECTOR(0 TO 3) ;SIGNAL STATU3 : STD_LOGIC_VECTOR(0 TO 3) ;SIGNAL OVER: STD_LOGIC;-game over 標(biāo)志SIGNAL FP:INTEGER RANGE 0 TO 499;-1000分頻SIGNAL CLK1:STD_LOGIC;SIGNAL SCOR_TEMP :INTEGER RANGE 0 TO 15;SIGNAL ROW4 :STD_LOGIC;-消行標(biāo)志SIGNAL ROW,COL:INTEGER RANGE 0 TO 3;-點(diǎn)的坐標(biāo)控制BEGINP1:PROCESS(CLK,RESET) BEGINIF RESET=1 THEN FP=0;CLK1=0;ELSIF(CLKEVENT AND CLK=1)THENIF FP=2 THENFP=0;CLK1=NOT CLK1;ELSEFP=FP+1;END IF;END IF; END PROCESS;-p1用來分頻P2:PROCESS(CLK1,RESET) BEGINIF RESET=1 THEN-系統(tǒng)初始化STATU0=0100; -出點(diǎn)位置,1代表方塊所在STATU1=0000;STATU2=0000;STATU3=0000;OVER=0;SCOR_TEMP=0;ROW4=0;ROW=0;COL=1;ELSIF(CLK1EVENT AND CLK1=1)THEN IF OVER=1 THEN-game over 進(jìn)入空循環(huán) NULL; ELSIF ROW4=1 THEN-消行 STATU3=STATU2; -消行后狀態(tài)轉(zhuǎn)移STATU2=STATU1;STATU1=STATU0;ROW4=0;SCOR_TEMP=SCOR_TEMP+1;-加分 ELSIF (STATU0(0)=1 AND STATU1(0)=1 AND STATU2(0)=1 AND STATU3(0)=1 )OR(STATU0(1)=1 AND STATU1(1)=1 AND STATU2(1)=1 AND STATU3(1)=1 )OR(STATU0(2)=1 AND STATU1(2)=1 AND STATU2(2)=1 AND STATU3(2)=1 )OR(STATU0(3)=1 AND STATU1(3)=1 AND STATU2(3)=1 AND STATU3(3)=1) THEN OVER=1;-判斷四列中是否有一列全為1,是則game overELSIF STATU3=1111THEN ROW4=1;-可以消行了 ELSIF RIGHT=1 AND COLIF STATU0(COL+1)=0 THEN COL=COL+1;STATU0(COL+1)=1;STATU0(COL)IF STATU1(COL+1)=0 THEN COL=COL+1;STATU1(COL+1)=1;STATU1(COL)IF STATU2(COL+1)=0 THEN COL=COL+1;STATU2(COL+1)=1;STATU2(COL)IF STATU3(COL+1)=0 THEN COL=COL+1;STATU3(COL+1)=1; STATU3(COL)0 THEN-左移判斷 CASE ROW ISWHEN 0=IF STATU0(COL-1)=0 THEN COL=COL-1;STATU0(COL-1)=1;STATU0(COL)IF STATU1(COL-1)=0 THEN COL=COL-1;STATU1(COL-1)=1;STATU1(COL)IF STATU2(COL-1)=0 THEN COL=COL-1;STATU2(COL-1)=1;STATU2(COL)IF STATU3(COL-1)=0 THEN COL=COL-1;STATU3(COL-1)=1; STATU3(COL)=0; END IF ;END CASE;-以下elsif語句為點(diǎn)的下移處理ELSIF ROW=0 AND STATU1(COL)=0 THEN ROW=ROW+1;STATU1(COL)=1;STATU0(COL)=0;ELSIF ROW=1 AND STATU2(COL)=0 THEN ROW=ROW+1;STATU2(COL)=1;STATU1(COL)=0;ELSIF ROW=2 AND STATU3(COL)=0 THEN ROW=ROW+1;STATU3(COL)=1;STATU2(COL)=0;ELSE ROW=0;COL=1;STATU0(1)=1; -不能下移則產(chǎn)生一個(gè)新的點(diǎn)END IF; END IF;END PROCESS;SCORES=SCOR_TEMP;STA0=STATU0;STA1=STATU1;STA2=STATU2;STA3=STATU3;END;SHOW的代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITYSHOWISPORT(CLK:IN STD_LOGIC;RESET:IN STD_LOGIC;STA0 : IN STD_LOGIC_VECTOR(0 TO 3);-以下為4行的狀態(tài)STA1 : IN STD_LOGIC_VECTOR(0 TO 3) ;STA2 : IN STD_LOGIC_VECTOR(0 TO 3) ;STA3 : IN STD_LOGIC_VECTOR(0 TO 3) ; -最底行狀態(tài)SCORE:IN INTEGER RANGE 0 TO 15;-分?jǐn)?shù)COL :OUT STD_LOGIC_VECTOR(0 TO 3);-點(diǎn)陣顯示的列控制ROW :OUT STD_LOGIC_VECTOR(0 TO 3); -點(diǎn)陣顯示的行控制DISP : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-數(shù)碼管譯碼CAT :OUT STD_LOGIC_VECTOR(5 DOWNTO 0) -數(shù)碼管選擇);END SHOW;ARCHITECTURE BEHAVE OF SHOW ISSIGNALCP :INTEGER RANGE 0 TO 3;SIGNAL ROWT,COLT:STD_LOGIC_VECTOR(0 TO 3);SIGNAL DISPT:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(CLK,SCORE,RESET)BEGIN IF RESET=1 THEN -復(fù)位信號(hào),初始化信號(hào)DISPT=0000000;ROWT=0000;COLT=1111;CP=0; ELSIF CLKEVENT AND CLK=1 THENIF CP=3 THEN CP=0;ELSE CPROWT=1000;COLTROWT=0100;COLTROWT=0010;COLTROWT=0001;COLTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPTDISPT=0000000;END CASE;END IF;END PROCESS;ROW=ROWT;COL=COLT;DISP=DISPT;CAT

溫馨提示

  • 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. 人人文庫網(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)論