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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

GDOU-B-11-302班級: 姓名: 學號: 試題共 1 頁 加白紙3 張 密 封 線廣東海洋大學2010 2011學年第一學期 EDA 課程考試設計答卷紙課程號:1610003-1考試A卷閉卷考查B卷開卷題 號一二三四五六七八九十總分閱卷教師各題分數(shù)055404055100實得分數(shù)注意:1、須在限定的日期、時間之前交卷;2、設計程序、仿真圖打印稿附在卷后上交;3、其他答案可以打印在本答卷紙上;4、原理圖可以粘貼在本答卷紙上;一、 請寫出自己設計項目(控制器)名稱;答:我的設計項目是:按鍵游戲機(按鍵控制)。二、 請描述本設計項目(控制器)的功能和性能(5分);答:假設點陣做為基本顯示屏,一個發(fā)光點表示一個圖形,完成按鍵游戲機的基本功能:下落、左右移動、消行和顯示得分情況,當某一列到頂時游戲結束。設計包括2個大的元件,一個是FUNCTIONS,完成存儲狀態(tài),分頻,左右下移動以及計分等功能;另一個是SHOW,主要完成點陣掃描和數(shù)碼管譯碼。仿真使用三、 畫出本設計項目(控制器)的電原理圖(5分);四、 打印的VHDL設計程序及注釋(40分);(附在卷后上交)五、 打印的仿真波形(如:Max+PLUS II)(40分);(附在卷后上交)六、 列出參考文獻(5分);【1】潘松. EDA 技術與VHDL. 北京:清華大學出版社 【2】延明. 數(shù)字邏輯設計實驗與EDA技術. 北京:北京郵電大學出版社七、 總結自己的設計(5分);答:這是本學期的EDA設計,使用VHDL進行設計。開始兩個星期,幾乎沒有寫代碼,首先我要搞清自己的設計思路,開始想了幾個思路,后來發(fā)現(xiàn)不是很好,所以后來都改了,重新編寫,重新編譯。編譯通過了,最后是仿真,所用的時間也不比設計少。因為一個設計的測試驗證是非常重要的。有效的測試可以助我們快速的完成或改善設計。所以之后又寫了一個Testbenches測試代碼來通過Modelsim軟件實現(xiàn)可靠的驗證。我的代碼比較簡單,自己覺得很滿意,但是仍然有許多需要改進和擴展的地方。這次設計使自己更加了解VHDL了,也學會了Quartus 設計和modelsim仿真。無論做什么實驗,都要有個好習慣,例如建立好工程放在指定地方,別總是擺在桌面。有時候好的習慣決定了實驗的成敗,好習慣也能提高辦事效率,事半功倍。所以今后的很多實驗都要態(tài)度端正,養(yǎng)成良好的習慣。頂層文件KEYGAME:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_SIGNED.ALL;ENTITYKEYGAMEISPORT(CLK: IN STD_LOGIC;-低頻時鐘 RESET: IN STD_LOGIC;-開始復位鍵 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ù)碼管顯示分數(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; -時鐘信號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; -計分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ù)碼管顯示分數(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;-時鐘頻率,選用低頻 RESET:IN STD_LOGIC;-復位鍵,1復位;0不改變 LEFT:IN STD_LOGIC;-左移鍵,1移動,0不改變 RIGHT:IN STD_LOGIC;-右移鍵,1移動,0不改變,左右同時0為下移 SCORES:OUT INTEGER RANGE 0 TO 15;-分數(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 標志SIGNAL FP:INTEGER RANGE 0 TO 499;-1000分頻SIGNAL CLK1:STD_LOGIC;SIGNAL SCOR_TEMP :INTEGER RANGE 0 TO 15;SIGNAL ROW4 :STD_LOGIC;-消行標志SIGNAL ROW,COL:INTEGER RANGE 0 TO 3;-點的坐標控制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; -出點位置,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 進入空循環(huán) NULL; ELSIF ROW4=1 THEN-消行 STATU3=STATU2; -消行后狀態(tài)轉移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語句為點的下移處理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)生一個新的點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;-分數(shù)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ù)碼管譯碼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 -復位信號,初始化信號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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論