EDA實驗報告實驗四_交通燈控制器設(shè)計說明_第1頁
EDA實驗報告實驗四_交通燈控制器設(shè)計說明_第2頁
EDA實驗報告實驗四_交通燈控制器設(shè)計說明_第3頁
EDA實驗報告實驗四_交通燈控制器設(shè)計說明_第4頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、下載可編輯實驗四交通燈控制器設(shè)計一、實驗?zāi)康?、學(xué)習(xí)與日常生活相關(guān)且較復(fù)雜數(shù)字系統(tǒng)設(shè)計;2、進一步熟悉 EDA 實驗裝置和 Quartus U 軟件的使用方法;3、學(xué)習(xí)二進制碼到 BCD 碼的轉(zhuǎn)換;4、學(xué)習(xí)有限狀態(tài)機的設(shè)計應(yīng)用。二、設(shè)計要求完成設(shè)計、仿真、調(diào)試、下載、硬件測試等環(huán)節(jié),在型EDA 實驗裝置上實現(xiàn)一個由一條主干道和一條鄉(xiāng)間公路的匯合點形成的十字交叉路口的交通燈控制器功能,具體要求如下:1、有 MR (主紅)、 MY (主黃)、 MG(主綠)、 CR(鄉(xiāng)紅)、 CY (鄉(xiāng)黃)、 CG(鄉(xiāng)綠)六 盞交通燈需要控制;2、交通燈由綠轉(zhuǎn)紅前有4 秒亮黃燈的間隔時間,由紅轉(zhuǎn)綠沒有間隔時間;3、

2、鄉(xiāng)間公路右側(cè)各埋有一個串連傳感器,當(dāng)有車輛準(zhǔn)備通過鄉(xiāng)間公路時,發(fā)出請求信號 S=1 ,其余時間 S=0;4、平時系統(tǒng)停留在主干道通行(MGCR 狀態(tài),一旦 S 信號有效,經(jīng)主道黃燈4 秒(MYC R 狀態(tài)后轉(zhuǎn)入鄉(xiāng)間公路通行( MRC )狀態(tài),但要保證主干道通行大于一 分鐘后才能轉(zhuǎn)換;5、一旦 S 信號消失,系統(tǒng)脫離MRC 狀態(tài),即經(jīng)鄉(xiāng)道黃燈4 秒( MRC )伏態(tài)進入 MGCR狀態(tài),即使 S 信號一直有效, MRC 狀態(tài)也不得長于20 秒鐘;6、控制對象除紅綠燈之外,還包括分別在主干道和鄉(xiāng)間公路各有一個兩位十進制倒計時數(shù)碼管顯示。三、主要儀器設(shè)備1 、微機1 臺2、 QuartusII 集成開

3、發(fā)軟件1 套3、 EDA 實驗裝置1 套四、實驗思路1、設(shè)計一個狀態(tài)寄存器,控制六盞燈的亮與滅2、設(shè)計一個計時器,控制各狀態(tài)的持續(xù)時間,計時器應(yīng)滿足以下要求:1 )當(dāng) S=1 ,且計數(shù)器已完成 60 計數(shù)時,計數(shù)器進入模 4 計數(shù),隨后進入模 20 計數(shù),再進入模 4 計數(shù),再回到模 60 計數(shù)2 )當(dāng)計數(shù)器進行摸 20 計數(shù)時,一旦 S 變?yōu)?0,計數(shù)器立馬進入模 4 計數(shù),再進入模 60 計數(shù)3 )完成模 20 計數(shù)后,不論 S 為 0 或 1, 計數(shù)器進入模 4 計數(shù),再進入模 60 計數(shù)4) 若計數(shù)器未完成模60 計數(shù),不論 S 如何變話,計數(shù)器將繼續(xù)進行模60 計數(shù).專業(yè) .整理 .

4、下載可編輯3、 設(shè)計一個譯碼顯示電路,將計時器的八位 BCD 碼轉(zhuǎn)化為數(shù)碼管可以顯示的段位碼通過動態(tài)掃描電路實現(xiàn)。4、設(shè)計一個分頻器,將掃描頻率分頻為基準(zhǔn)頻率,提供計時器,狀態(tài)器,譯碼顯示的 鐘控。5、 使用文本設(shè)計 4 個底層文件,并生成相應(yīng)元器件,再使用原理圖設(shè)計頂層文件五、實驗步驟1、建立工作庫文件夾和編輯設(shè)計文件1 ) 建立一個文件夾保存工程文件;2) 打開 Quartusll ,建立新的 VHDL 文件,再打開的頁面下輸入以下程序控制 6 盞燈的模塊代碼:LlBRARY lEEE;ENTlTY jtd lSPORT(clk,RESET,S:lN STD_LOGlC;COUNT:lN

5、STD_LOGlC_VECTOR(7 DOWNTO 0); MG,MY,MR,CG,CY,CR:OUT STD_LOGlC); END jtd;ARCHlTECTURE behav OF jtd lSTYPE jtdSTATE lS(mgcr,mycr,mrcg,mrcy);SlGNAL STATE:jtdSTATE;BEGlNPROCESS(RESET,STATE,clk, S)BEGlNlF RESET='1' THEN STATE<=mgcr;MG<='1'CR<='1'MY<='0'MR<=&

6、#39;0'CG<='0'CY<='0' ELSlF clk'EVENT AND clk='1' thenCASE STATE lSWHEN mgcr=>lF COUNT="00000001" AND S='1'THEN STATE<=mycr;MY<='1'CR<='1'MG<='0'MR<='0'CG<='0'CY<='0'ELSE ST

7、ATE<=mgcr;MG<='1'CR<='1'MY<='0'MR<='0'CG<='0'CY<='0' END lF; WHEN mycr=>lF COUNT="00000001" THENSTATE<=mrcg;MR<='1'CG<='1'MG<='0'MY<='0'CR<='0'CY<='0'

8、;ELSE STATE<=mycr;MY<='1'CR<='1'MG<='0'MR<='0'CG<='0'CY<='0' END lF; WHEN mrcg=>lF COUNT="00000001" OR S='0'THENSTATE<=mrcy;MR<='1'CY<='1'MY<='0'MG<='0'CR<='

9、;0'CG<='0'ELSE STATE<=mrcg;MR<='1'CG<='1'MG<='0'MY<='0'CR<='0'CY<='0' END lF; WHEN mrcy=>lF COUNT="00000001" THENSTATE<=mgcr;MG<='1'CR<='1'MR<='0'MY<='0'CY&

10、lt;='0'CG<='0'.專業(yè) .整理 .下載可編輯ELSE STATE<=mrcy;MR<='1'CY<='1'MY<='0'MG<='0'CR<='0'CG<='0' END IF;END CASE;END IF;END PROCESS;END behav;控制數(shù)碼管顯示倒計時數(shù)并且輸出:LIBRARY IEEE;ENTITY JISHU ISPORT(clk,S:IN STD_LOGIC;tim:OUT STD

11、_LOGIC_VECTOR(7 DOWNTO 0);END JISHU;ARCHITECTURE behav OF JISHU ISTYPE RGY IS(mgcr,mycr,mrcg,mrcy);SIGNAL STATE:RGY;BEGINPROCESS(clk)VARIABLE b:STD_LOGIC:='0'VARIABLE a:STD_LOGIC:='0'VARIABLE th,tl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN-IF RESET='1' THEN STATE<=mgcr; th:="

12、;0000" ;tl:="0000"a:='0'b:='0' IF clk'EVENT AND clk='1' THENCASE STATE ISWHENmgcr => IF S='1'ANDb='1'THENSTATE<=mycr;a:='0'th:="0000"tl:="0100"b:='0'ELSIFS='0'ANDb='1'THENSTATE<=mg

13、cr;a:='1'th:="0000"tl:="0001"ELSEIF a='0' THEN th:="0110"tl:="0000"a:='1'elseIF NOT(th="0000" AND tl="0010") thenIF tl="0000" then tl:="1001"th:=th-1;else tl:=tl-1;END IF;ELSE th:="0000"

14、tl:="0001"a:='0'b:='1'END IF;END IF;END IF;WHEN mycr => IF a='0' THEN.專業(yè).整理.th:="0000"tl:="0100"a:='1'elseIF NOT(th="0000" AND tl="0010") then下載可編輯tl:=tl-1;ELSE th:="0000"tl:="0001"a:='0'

15、STATE<=mrcg;END IF;END IF;WHEN mrcg =>IF S='1' THENIF a='0' THENth:="0010"tl:="0000"a:='1'elseIF NOT(th="0000" AND tl="0010") thenIF tl="0000" then tl:="1001"th:=th-1;else tl:=tl-1;END IF;ELSE th:="0000&qu

16、ot;tl:="0001"a:='0'STATE<=mrcy;END IF;END IF;ELSE a:='0'STATE<=mrcy;th:="0000"tl:="0100"END IF;WHEN mrcy =>IF a='0' THENth:="0000"tl:="0100"a:='1'elseIF NOT(th="0000" AND tl="0010") thentl:

17、=tl-1;ELSE th:="0000"tl:="0001"a:='0'STATE<=mgcr;END IF;END IF;END CASE;tim <= th & tl;END IF;end process;END behav;動態(tài)譯碼顯示電路LIBRARY IEEE;PORT(CLK:IN STD_LOGIC;INPO:IN STD_LOGIC_VECTOR(7 DOWNTO 0);sl0,sl1,sl2:buffer STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

18、SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);.專業(yè).整理.GW,SW: buffer STD_LOGIC_VECTOR(3 DOWNTO 0);END DISP;ARCHITECTURE behav OF DISP IS下載可編輯SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINGW<=INPO(3 downto 0);SW<=INPO(7 downto 4);P3:PROCESS( CLK)BEGINIF CLK'EVEN

19、T AND CLK='1' THENIF CNT8<"001" THEN CNT8 <=CNT8+1;ELSE CNT8<=(OTHERS=>'0');END IF;END IF;SEL(0)<=sl0 ;SEL(1)<=sl1 ;SEL(2)<=sl2 ;CASE CNT8 ISWHEN "000" => sl2<='0'sl1<='1'sl0<='0'A<=GW;WHEN "001"

20、; => sl2<='0'sl1<='0'sl0<='1'A<=SW;WHEN OTHERS =>NULL;END CASE;END PROCESS ;P4:PROCESS(A)BEGINCASE A ISWHEN "0000" =>SG<="00111111" WHEN "0001" =>SG<="00000110"WHEN "0010" =>SG<="010110

21、11" WHEN "0011" =>SG<="01001111"WHEN "0100" =>SG<="01100110" WHEN "0101" =>SG<="01101101"WHEN "0110" =>SG<="01111101" WHEN "0111" =>SG<="00000111"WHEN "1000&quo

22、t; =>SG<="01111111" WHEN "1001" =>SG<="01101111"WHEN OTHERS=>NULL;END CASE;END PROCESS;END behav;分頻器電路:LIBRARY IEEE;ENTITY FEN ISPORT ( CLK : IN STD_LOGIC;FOUT : OUT STD_LOGIC );.專業(yè).整理.下載可編輯END;ARCHITECTURE one OF FEN ISSIGNAL FULL : STD_LOGIC;BEGINP_REG:

23、 PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(4 DOWNTO 0); -INPORTANTBEGINIF CLK'EVENT AND CLK = '1' THEN -512fe nIF CNT8 = "11111" THENCNT8 := "00000"-當(dāng) CNT8 計數(shù)計滿時,輸入數(shù)據(jù)D 被同步預(yù)置給計數(shù)器CNT8FULL <= '1'-同時使溢出標(biāo)志信號FULL 輸出為高電平ELSE CNT8 := CNT8 + 1;-否則繼續(xù)作加1 計數(shù)FULL <

24、;= '0'-且輸出溢出標(biāo)志信號FULL 為低電平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1' THENCNT2 := NOT CNT2;-如果溢出標(biāo)志信號FULL 為高電平, D 觸發(fā)器輸出取反IF CNT2 = '1' THEN FOUT <= '1' ELSE FOUT <= '0'END IF;END IF;E

25、ND PROCESS P_DIV ;END;2、編譯過程1 )輸入完程序之后逐個編譯2)逐個編譯無錯之后進行全程編譯3、將以上模塊生成元器件1 )控制 6 盞燈的模塊 :2)控制數(shù)碼管顯示倒計時數(shù)的模塊:.專業(yè) .整理 .下載可編輯3)控制動態(tài)掃描顯示的模塊4)控制分頻的模塊FENCLK FOOTiLiitsti*G4、建立新的工程 ,將各個模塊的元器件用原理圖連接,進行編譯原理圖如下:: 口二口CXIH- 7. 0CLK F5JTIMP0.7. C田卩衛(wèi) Idlil kl l4HkBI. JBtaiilJBUBIilMBIil.lBJBIil Id?11II?U I SI L I二恥口 i一?:nstlP"EM!? ?asi i- -5、系統(tǒng)仿真1 )建立新的波形激勵文件2 )在波形編輯器窗口添加節(jié)點3 )通過 Edit->End Time 來設(shè)定仿真結(jié)束時間4 )在 CLOC 窗口中設(shè)置 elk 的時鐘周期為 10ns5)點擊 save 保存6)通過 Tools 下的 Simulator Tools項進行仿真,然后觀察輸出波形仿真波形如下:.專業(yè) .整理 .下載可編輯 ui2mla EfelkA.V1 1FA k

溫馨提示

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

最新文檔

評論

0/150

提交評論