VHDL語言的十字路口交通燈控制器設(shè)計.doc
《VHDL語言的十字路口交通燈控制器設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《VHDL語言的十字路口交通燈控制器設(shè)計.doc(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
南昌大學(xué)實驗報告 學(xué)生姓名: 學(xué) 號: 專業(yè)班級: 實驗類型: 驗證 綜合 設(shè)計 創(chuàng)新 實驗日期: 實驗成績: 實驗五 十字路口交通燈控制器設(shè)計 一、實驗?zāi)康?、進(jìn)一步加強(qiáng)經(jīng)典狀態(tài)機(jī)的設(shè)計2、學(xué)會設(shè)計??勺兊褂嫊r計數(shù)器二、實驗要求一條主干道,一條鄉(xiāng)間公路。組成十字路口,要求優(yōu)先保證主干道通行。有MR(主紅)、MY(主黃)、MG(主綠)、CR(鄉(xiāng)紅)、CY(鄉(xiāng)黃)、CG(鄉(xiāng)綠)六盞交通燈需要控制;交通燈由綠紅有4秒黃燈亮的間隔時間,由紅綠沒有間隔時間;系統(tǒng)有MRCY、MRCG、MYCR、MGCR四個狀態(tài);鄉(xiāng)間公路右側(cè)各埋有一個傳感器,當(dāng)有車輛通過鄉(xiāng)間公路時,發(fā)出請求信號S=1,其余時間S=0;平時系統(tǒng)停留在MGCR(主干道通行)狀態(tài),一旦S信號有效,經(jīng)MYCR(黃燈狀態(tài))轉(zhuǎn)入MRCG(鄉(xiāng)間公路通行)狀態(tài),但要保證MGCR的狀態(tài)不得短于一分鐘;一旦S信號無效,系統(tǒng)脫離MRCG狀態(tài)。隨即經(jīng)MRCY(黃燈狀態(tài))進(jìn)入MGCR狀態(tài),即使S信號一直有效,MRCG狀態(tài)也不得長于20秒鐘。三、設(shè)計過程1,交通燈工作原理分析:根據(jù)交通燈控制器的功能與要求,將其總體電路分為狀態(tài)控制,倒計時,數(shù)碼管顯示,信號燈顯示模塊。外部兩路脈沖振蕩器的頻率選為1 kHz和1 Hz的信號,1khz信號用于顯示模塊的掃描,1 Hz信號用做倒計時模塊的計數(shù)脈沖。由于實驗箱只能接一個信號源故加入分頻模塊。2,計時電路應(yīng)滿足下列條件1)當(dāng)S=1,且計數(shù)器已完成60計數(shù)時,計數(shù)器進(jìn)入模4計數(shù),隨后進(jìn)入模 20計數(shù),再進(jìn)入模4計數(shù),再回到模60計數(shù) 2)當(dāng)計數(shù)器進(jìn)行摸20計數(shù)時,一旦S變?yōu)?,計數(shù)器立馬進(jìn)入模4計數(shù), 再進(jìn)入模60計數(shù) 3)完成模20計數(shù)后,不論S為0或1,計數(shù)器進(jìn)入模4計數(shù),再進(jìn)入模60 計數(shù) 4)若計數(shù)器未完成模60計數(shù),不論S如何變話,計數(shù)器將繼續(xù)進(jìn)行模60 計數(shù)3、使用文本設(shè)計底層文件,并生成相應(yīng)元器件,再使用原理圖設(shè)計頂層文件四、實驗步驟 1、頂層文件的設(shè)計頂層原理圖設(shè)計可以依據(jù)系統(tǒng)框圖進(jìn)行,由狀態(tài)控制計數(shù)模塊,數(shù)碼管顯示分頻模塊和交通燈顯示模塊(jtdjs,jtdfp,jtdxs)三部分組成。2,各模塊設(shè)計文件 jtdjs:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTDJS IS PORT(CLK1,S,RESET:IN STD_LOGIC; b:BUFFER STD_LOGIC; tim:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END JTDJS;ARCHITECTURE behav OF JTDJS IS TYPE STA IS(mgcr,mycr,mrcg,mrcy); SIGNAL STATE:STA;BEGIN PROCESS(CLK1) - VARIABLE b:STD_LOGIC:=0; VARIABLE a:STD_LOGIC:=0; VARIABLE th,tl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RESET=0 THEN STATE=mgcr; th:=0000 ;tl:=0000;a:=0;b IF S=1 AND b=1 THEN STATE=mycr;a:=0;th:=0000;tl:=0100;b=0; - ELSIF S=0 AND b=1 THEN STATE=mgcr;a:=0;-th:=0110;tl:=0000; ELSE IF a=0 THEN th:=0110;tl:=0000;a:=1; else IF NOT(th=0000 AND tl=0010) then IF tl=0000 then tl:=1001;th:=th-1; else tl:=tl-1; END IF; ELSE th:=0000;tl:=0001;a:=0;b IF a=0 THEN th:=0000;tl:=0100;a:=1; else IF NOT(th=0000 AND tl=0010) then tl:=tl-1; ELSE th:=0000;tl:=0001;a:=0;STATEIF S=1 THEN IF a=0 THEN th:=0010;tl:=0000;a:=1; else IF NOT(th=0000 AND tl=0010) then IF tl=0000 then tl:=1001;th:=th-1; else tl:=tl-1; END IF; ELSE th:=0000;tl:=0001;a:=0;STATE=mrcy; END IF; END IF; ELSE a:=0;STATEIF a=0 THEN th:=0000;tl:=0100;a:=1; else IF NOT(th=0000 AND tl=0010) then tl:=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; JTDFPLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTDFP IS PORT (CLK : IN STD_LOGIC; JIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); SG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); sel0,sel1,sel2 : OUT STD_LOGIC; CLK1:buffer STD_LOGIC ); END JTDFP;ARCHITECTURE behav OF JTDFP IS SIGNAL Q : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL P,R: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CONT8: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL CONT : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL YM : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN F:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN CONT=CONT+1; IF CONT=100 THEN CLK1=1;CONT=00000000; ELSE CLK1=0; END IF; END IF; END PROCESS; C:PROCESS( CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF CONT8001 THEN CONT8 =CONT8+1; ELSE CONT80); END IF; END IF; CASE CONT8 IS WHEN 000 = sel0=0;sel1=1;sel2=0;A sel0=1;sel1=0;sel2=0;ANULL; END CASE; END PROCESS ; D:PROCESS(A) BEGIN CASE A IS WHEN 0000 =SGSGSGSGSGSGSGSGSGSGNULL; END CASE; END PROCESS; END behav; JTDXSLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTDXS ISPORT(CLK1,S,B,RESET:IN STD_LOGIC; COUNT: IN STD_LOGIC_VECTOR(7 DOWNTO 0); MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);END JTDXS ;ARCHITECTURE behav OF JTDXS IS TYPE STATES IS(mgcr,mycr,mrcg,mrcy); SIGNAL STATE:STATES; BEGIN PROCESS(STATE,CLK1, S,RESET) BEGIN IF RESET=0 THEN STATE=mgcr;MG=1;CR=1;MY=0;MR=0;CG=0;CYIF B=1 AND S=1THEN STATE=mycr;MY=1;CR=1;MG=0;MR=0;CG=0;CY=0; ELSE STATE=mgcr;MG=1;CR=1;MY=0;MR=0;CG=0;CYIF COUNT=00000001 THEN STATE=mrcg;MR=1;CG=1;MG=0;MY=0;CR=0;CY=0; ELSE STATE=mycr;MY=1;CR=1;MG=0;MR=0;CG=0;CYIF COUNT=00000001 OR S=0THEN STATE=mrcy;MR=1;CY=1;MY=0;MG=0;CR=0;CG=0; ELSE STATE=mrcg;MR=1;CG=1;MG=0;MY=0;CR=0;CYIF COUNT=00000001 THEN STATE=mgcr;MG=1;CR=1;MR=0;MY=0;CY=0;CG=0; ELSE STATE=mrcy;MR=1;CY=1;MY=0;MG=0;CR=0;CGEnd Time 來設(shè)定仿真結(jié)束時間 4)在CLOCK窗口中設(shè)置clk的時鐘周期為1us5)點擊save保存6) 通過Tools下的Simulator Tools項進(jìn)行仿真,然后觀察輸出波形。仿真波形如下: S=1鄉(xiāng)間公路狀態(tài)(既MGCR60S-MYCG4S-MRCG20S-MGCY4S-MGCR60S) S=0轉(zhuǎn)S=1立即進(jìn)入MYCR4S-MRCG20S7,引腳鎖定8,連接到實驗箱下載程序觀察實驗結(jié)果:有開關(guān)K1控制S的值,當(dāng)K1斷開時實驗箱交通燈處于MGCR狀態(tài),數(shù)碼管在倒數(shù)60計數(shù)。合上K1后S由0轉(zhuǎn)入1狀態(tài),數(shù)碼管繼續(xù)倒數(shù)60計數(shù)且交通燈仍處于MGCR狀態(tài),60計數(shù)完成后隨即轉(zhuǎn)入MYCG4S-MRCG20S-MGCY4S-MGCR60S的循環(huán)狀態(tài)直到S再次由1變成0,數(shù)碼管立即停止計數(shù)進(jìn)入倒數(shù)4S的黃燈狀態(tài),4S結(jié)束后交通燈進(jìn)入MGCR狀態(tài)按下reset鍵數(shù)碼管從頂端重新開始計時不清楚交通燈狀態(tài)- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VHDL 語言 十字路口 交通燈 控制器 設(shè)計
鏈接地址:http://appdesigncorp.com/p-6657747.html