基于VHDL語(yǔ)言的交通燈設(shè)計(jì)(DEA)_第1頁(yè)
基于VHDL語(yǔ)言的交通燈設(shè)計(jì)(DEA)_第2頁(yè)
基于VHDL語(yǔ)言的交通燈設(shè)計(jì)(DEA)_第3頁(yè)
基于VHDL語(yǔ)言的交通燈設(shè)計(jì)(DEA)_第4頁(yè)
基于VHDL語(yǔ)言的交通燈設(shè)計(jì)(DEA)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、交通信號(hào)控制器的VHDL的設(shè)計(jì)1. 設(shè)計(jì)任務(wù) 模擬十字路口交通信號(hào)燈的工作過(guò)程,利用實(shí)驗(yàn)板上的兩組紅、黃、綠LED作為交通信號(hào)燈,設(shè)計(jì)一個(gè)交通信號(hào)燈控制器,示意圖如圖1-1所示。要求:(1) 交通燈從綠變紅時(shí),有4秒黃燈亮的間隔時(shí)間;(2) 交通燈紅變綠是直接進(jìn)行的,沒(méi)有間隔時(shí)間;(3) 主干道上的綠燈時(shí)間為40秒,支干道的綠燈時(shí)間為20秒;(4) 在任意時(shí)間,顯示每個(gè)狀態(tài)到該狀態(tài)結(jié)束所需的時(shí)間。 支干道 主干道 圖1-1 路口交通管理示意圖表1-1 交通信號(hào)燈的4種狀態(tài)ABCD主干道交通燈綠(40秒)黃(4秒)紅(20秒)紅(4秒)支干道交通燈紅紅綠黃2.設(shè)計(jì)要求 采用VHDL語(yǔ)言編寫(xiě)程序,

2、并在QuartusII工具平臺(tái)中進(jìn)行開(kāi)發(fā),下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。 編寫(xiě)設(shè)計(jì)報(bào)告,要求包括方案選擇、程序清單、調(diào)試過(guò)程、測(cè)試結(jié)果與心得體會(huì)。3.設(shè)計(jì)方案狀態(tài)寄存器秒脈沖信號(hào)發(fā)生器計(jì)數(shù)器CLK 時(shí)間顯示數(shù)據(jù)輸出次態(tài)發(fā)生器信號(hào)燈輸出信號(hào) 信號(hào)燈輸出 圖3-1 交通信號(hào)燈控制器程序原理框圖進(jìn)程將CLK信號(hào)分頻后產(chǎn)生1秒信號(hào),然后構(gòu)成兩個(gè)帶有預(yù)置數(shù)功能的十進(jìn)制計(jì)數(shù)器,并產(chǎn)生允許十位計(jì)數(shù)器計(jì)數(shù)的控制信號(hào)。狀態(tài)寄存器實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換和產(chǎn)生狀態(tài)轉(zhuǎn)換的控制信號(hào),下個(gè)模塊產(chǎn)生次態(tài)信號(hào)和信號(hào)燈輸出信號(hào),以與每一個(gè)狀態(tài)的時(shí)間值。經(jīng)過(guò)五個(gè)模塊的處理,使時(shí)間計(jì)數(shù)、紅綠燈顯示能夠正常運(yùn)行。程序原理圖如圖3-1所示。 4.

3、各模塊具體設(shè)計(jì)4.1頂層文件的設(shè)計(jì) 頂層文件的原理圖可以依據(jù)系統(tǒng)的框圖進(jìn)行,由控制模塊JTD_CTRL、計(jì)時(shí)模塊JTD_TIME、譯碼驅(qū)動(dòng)模塊JTD_LIGHT、顯示模塊JTD_DIS和分頻模塊JTD_FQU五部分組成,其頂層原理圖文件如圖3-1所示。圖4-1交通燈頂層文件原理圖頂層模塊的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRAFFIC ISPORT( CLK1K,CLR:IN STD_LOGIC; M

4、:IN STD_LOGIC_VECTOR(2 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END TRAFFIC;ARCHITECTURE BEHAVE OF TRAFFIC ISCOMPONENT JTD_FQU IS -分頻器元件的例化PORT( CLK1K:IN STD_LOGIC; CLK:OUT STD_LOGIC );END COMPONENT;COMPONENT JTD_DI

5、S IS -數(shù)碼顯示的元件例化PORT( CLK1K,CLK,CLR:IN STD_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;COMPONENT JTD_LIGHT IS -譯碼驅(qū)動(dòng)的元件例化PORT( CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOW

6、NTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT;COMPONENT JTD_TIME IS -計(jì)時(shí)元件的例化PORT( CLK,CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT;COMPONENT JTD_CTRL IS -控制模塊的元件例化PORT( CLK,CLR:IN STD_LOGIC; AT,BT:IN STD_LOGIC_VECTOR(7 D

7、OWNTO 0); M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;SIGNAL CLK:STD_LOGIC;SIGNAL AT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL BT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN U1:JTD_FQU PORT MAP( -名字關(guān)聯(lián)方式賦值 CLK1K=>CLK1K, CLK=>CLK )

8、;U2:JTD_TIME PORT MAP( CLR=>CLR, AT=>AT, BT=>BT, CLK=>CLK, M=>M, S=>S );U3:JTD_CTRL PORT MAP( M=>M, S=>S, CLK=>CLK, CLR=>CLR, AT=>AT, BT=>BT );U4:JTD_DIS PORT MAP( CLK1K=>CLK1K, CLK=>CLK, CLR=>CLR, AT=>AT, BT=>BT, LED=>LED, SEL=>SEL, M=>M )

9、;U5:JTD_LIGHT PORT MAP( CLR=>CLR, S=>S, ABL=>ABL, M=>M );END BEHAVE;4.2 控制模塊JTD_CTRL的設(shè)計(jì) 控制的模塊根據(jù)外部輸入信號(hào)M2M0和計(jì)時(shí)模塊JTD_TIME的輸入信號(hào),產(chǎn)生系統(tǒng)的狀態(tài)機(jī),控制其他部分協(xié)調(diào)工作??刂颇K的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_CTRL ISPORT( CLK,CLR:IN STD_LOGIC; M:IN STD_LOG

10、IC_VECTOR(2 DOWNTO 0); -用M來(lái)表示系統(tǒng)的8種工作狀態(tài) AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END JTD_CTRL; ARCHITECTURE JTD_1 OF JTD_CTRL IS SIGNAL Q:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLR,CLK,M,AT,BT) BEGIN IF CLR='1'THEN Q<="000" -清'0'處理

11、 ELSIF(CLK'EVENT AND CLK='1')THEN -時(shí)鐘上升沿信號(hào)一來(lái),M控制系統(tǒng)的8種狀態(tài) IF M="000"THEN Q<="001" END IF; IF M="001"THEN Q<="011" END IF; IF M="010"THEN Q<="101" END IF; IF M="011"THEN Q<="111" END IF; IF M>=&qu

12、ot;100"THEN IF(AT=X"01")OR(BT=X"01")THEN Q<=Q+1; ELSE Q<=Q; END IF; END IF; END IF; END PROCESS; S<=Q; -M的控制端轉(zhuǎn)向控制口S END JTD_1;該模塊的時(shí)序仿真和功能仿真波形圖如圖4-2圖4-2功能仿真4.3 計(jì)時(shí)模塊JTD_TIME的設(shè)計(jì)計(jì)時(shí)模塊用來(lái)設(shè)定A和B兩個(gè)方向計(jì)時(shí)器的初值,并為顯示模塊JTD_DIS提供倒計(jì)時(shí)時(shí)間。當(dāng)正常計(jì)時(shí)開(kāi)始后,需要進(jìn)行定時(shí)計(jì)數(shù)操作,由于東西和南北兩個(gè)方向上的時(shí)間顯示器是由兩個(gè)LED七段顯示

13、數(shù)碼管組成的,因此需要產(chǎn)生兩個(gè)2位的計(jì)時(shí)信息:2個(gè)十位信號(hào),2個(gè)個(gè)位信號(hào),這個(gè)定時(shí)計(jì)數(shù)操作可以由一個(gè)定時(shí)計(jì)數(shù)器來(lái)完成,又因?yàn)榻煌舻臓顟B(tài)變化是在計(jì)時(shí)為0的情況下才能進(jìn)行的,因此需要一個(gè)計(jì)時(shí)電路來(lái)產(chǎn)生使能信號(hào),因此定時(shí)計(jì)數(shù)的功能就是用來(lái)產(chǎn)生2個(gè)2位計(jì)時(shí)信息和使能信號(hào)。計(jì)時(shí)模塊的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_TIME ISPORT( CLK,CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0)

14、; AT,BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END JTD_TIME;ARCHITECTURE JTD_2 OF JTD_TIME IS SIGNAL AT1,BT1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ART,AGT,ALT,ABYT:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL BRT,BGT,BLT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN ART<=X"55" -ART<=“01010101”A方向紅燈亮 AGT<=

15、X"40" -AGT<=“01000000”A方向綠燈亮 ALT<=X"15" -ALT<=“00010101”燈間歇閃爍 ABYT<=X"05"-ABYT<=“00000101”AB兩方向黃燈亮 BRT<=X"65"-BRT<=“01100101”B方向紅燈亮 BGT<=X"30"-BGT<=“00110000”B方向綠燈亮 BLT<=X"15"-BLT<=“00010101”B方向燈閃爍 PROCESS(C

16、LR,CLK,M,S) BEGIN IF CLR='1'THEN AT1<=X"01"BT1<=X"01" ELSIF (CLK'EVENT AND CLK='1')THEN IF M="000"THEN AT1<=X"01"BT1<=X"51"-M=0時(shí),A方向的計(jì)時(shí)器計(jì)時(shí),B方向的紅燈亮 END IF; IF M="001"THEN AT1<=X"01"BT1<=X"

17、06"-M=1時(shí),A方向的計(jì)時(shí)器計(jì)時(shí),B方向綠燈亮 END IF; IF M="010"THEN AT1<=X"41"BT1<=X"01"-B方向的計(jì)時(shí)器計(jì)時(shí),A方向的黃燈亮 END IF; IF M="011"THEN AT1<=X"06"BT1<=X"01"-B方向的計(jì)時(shí)器計(jì)時(shí),A方向的紅燈亮 END IF; IF M>="100"THEN IF(AT1=X"01")OR(BT1=X"

18、;01")THEN CASE S IS WHEN"000"=>AT1<=ALT;BT1<=BRT;-當(dāng)S=0時(shí),AB兩方向的計(jì)時(shí)器計(jì)時(shí),A方向車(chē)左轉(zhuǎn),B方向的紅燈亮 WHEN"001"=>AT1<=ABYT;-當(dāng)S=1時(shí),A方向計(jì)時(shí)器計(jì)時(shí),A方向黃燈亮 WHEN"010"=>AT1<=AGT;-當(dāng)S=2時(shí),A方向計(jì)時(shí)器計(jì)時(shí),A方向綠燈亮 WHEN"011"=>AT1<=ABYT;-當(dāng)S=3時(shí),AB兩方向黃燈亮,A方向計(jì)時(shí)器計(jì)時(shí) WHEN"10

19、0"=>AT1<=ART;BT1<=BLT;-當(dāng)S=4時(shí),A方向計(jì)時(shí),紅燈亮,B方向車(chē)左轉(zhuǎn),B方向計(jì)時(shí)器計(jì)時(shí) WHEN"101"=>BT1<=ABYT;-當(dāng)S=5時(shí),B方向計(jì)時(shí)器計(jì)時(shí),AB兩方向黃燈亮 WHEN"110"=>BT1<=BGT;-當(dāng)S=6時(shí),B方向計(jì)時(shí)器計(jì)時(shí),B方向綠燈亮 WHEN"111"=>BT1<=ABYT;-當(dāng)S=7時(shí),B方向計(jì)時(shí)器計(jì)時(shí),AB兩方向車(chē)右轉(zhuǎn) WHEN OTHERS=>AT1<=AT1;BT1<=BT1; END CAS

20、E; END IF; IF AT1/=X"01"THEN IF AT1(3 DOWNTO 0)="0000"THEN AT1(3 DOWNTO 0)<="1001"-第四位數(shù)碼管顯示 AT1(7 DOWNTO 4)<=AT1(7 DOWNTO 4)-1;高四位數(shù)碼管減一顯示 ELSE AT1(3 DOWNTO 0)<=AT1(3 DOWNTO 0)-1;低四位數(shù)碼管減一顯示 AT1(7 DOWNTO 4)<=AT1(7 DOWNTO 4);高四位數(shù)碼管顯示不變 END IF; END IF; IF BT1=X&

21、quot;01"THEN IF BT1(3 DOWNTO 0)="0000"THEN BT1(3 DOWNTO 0)<="1001"-B方向計(jì)數(shù)器低四位數(shù)碼管顯示9 BT1(7 DOWNTO 4)<=BT1(7 DOWNTO 4)-1;-B方向計(jì)數(shù)器高四位數(shù)碼管減一計(jì)數(shù) ELSE BT1(3 DOWNTO 0)<=BT1(3 DOWNTO 0)-1;-B方向計(jì)數(shù)器低四位數(shù)碼管減一計(jì)數(shù) BT1(7 DOWNTO 4)<=BT1(7 DOWNTO 4); END IF; END IF; END IF; END IF;END

22、PROCESS; AT<=AT1; BT<=BT1;END JTD_2; 該模塊是為節(jié)省資源而設(shè)的,實(shí)驗(yàn)中有四個(gè)LED七段數(shù)碼管顯示計(jì)數(shù),點(diǎn)亮一個(gè)LED需電流550mA,同時(shí)點(diǎn)亮4個(gè)LED,CPLD可能無(wú)法負(fù)荷這樣的電流驅(qū)動(dòng),而且功率太大,散熱也是問(wèn)題。同時(shí)這么做也容易造成電路被燒毀,因此需要逐個(gè)循環(huán)點(diǎn)亮。又為使顯示結(jié)果持續(xù)不致閃爍抖動(dòng),只需每個(gè)掃描頻率超過(guò)人眼視覺(jué)暫留頻率24Hz以上,就能達(dá)到。選擇1kHz作為時(shí)鐘,分到4個(gè)數(shù)碼管,每個(gè)數(shù)碼管50Hz(大于24Hz),故不會(huì)有閃爍。該模塊的功能仿真波形圖如圖4-4所示圖4-4功能仿真4.4 譯碼驅(qū)動(dòng)模塊JTD_LIGHT的設(shè)計(jì)譯碼

23、驅(qū)動(dòng)模塊根據(jù)控制信號(hào),驅(qū)動(dòng)交通燈的顯示。該模塊的源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_LIGHT ISPORT( CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END JTD_LIGHT;ARCHITECTURE JTD_3 OF JTD_LIGHT IS SIGNAL LT:STD_LOGIC_VECTOR(7

24、DOWNTO 0);BEGIN PROCESS(CLR,S,M)BEGIN IF CLR='1'THEN LT<="00000000" -清'0'時(shí)系統(tǒng)狀態(tài)全部處于關(guān)閉狀態(tài) ELSE IF M="000"THEN LT<="10000001" END IF; IF M="001"THEN LT<="00100001" END IF; IF M="010"THEN LT<="00011000" END

25、IF; IF M="011"THEN LT<="00010010" END IF; IF M>="100"THEN CASE S IS -八種情況下的狀況顯示 WHEN"000"=>LT<="00010100" WHEN"001"=>LT<="10000001" WHEN"010"=>LT<="01000001" WHEN"011"=>LT&l

26、t;="00100001" WHEN"100"=>LT<="01000001" WHEN"101"=>LT<="00011000" WHEN"110"=>LT<="00010100" WHEN"111"=>LT<="00010010" WHEN OTHERS=>LT<=LT; END CASE; END IF; END IF; END PROCESS;ABL

27、<=LT;END JTD_3;該模塊的功能仿真波形圖如圖4-5:圖4-5功能仿真4.5 顯示模塊JTD_DIS的設(shè)計(jì) 顯示模塊用來(lái)顯示倒計(jì)時(shí)時(shí)間和系統(tǒng)的工作狀態(tài)。其輸出用來(lái)驅(qū)動(dòng)六位數(shù)碼管,其中四位用于顯示倒計(jì)時(shí)時(shí)間,兩位顯示工作狀態(tài),采用動(dòng)態(tài)掃描顯示。該模塊的源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_DIS ISPORT( CLK1K,CLK,CLR:IN STD_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT

28、,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END JTD_DIS;ARCHITECTURE JTD_4 OF JTD_DIS IS SIGNAL OU,STL,STH,MM:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DIS,DS:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN M

29、M<="0"&M; STH<=X"A" PROCESS(CLR,CLK1K) BEGIN IF CLR='1'THEN SL<="000" ELSIF(CLK1K'EVENT AND CLK1K='1')THEN IF SL="101"THEN SL<="000" -清'0' ELSE SL<=SL+1; -計(jì)數(shù) END IF; END IF; END PROCESS; PROCESS(SL) BEGI

30、N CASE SL IS -數(shù)碼管的位選 WHEN"000"=>OU<=BT(3 DOWNTO 0); WHEN"001"=>OU<=BT(7 DOWNTO 4); WHEN"010"=>OU<=AT(3 DOWNTO 0); WHEN"011"=>OU<=BT(7 DOWNTO 4); WHEN"100"=>OU<=STL; WHEN"101"=>OU<=STH; WHEN OTHERS=>OU&

31、lt;=X"0" END CASE; END PROCESS; PROCESS(OU) BEGIN CASE OU IS -數(shù)碼管的譯碼 WHEN X"0"=>DS<="00111111" -顯示'0' WHEN X"1"=>DS<="00000110" -顯示'1' WHEN X"2"=>DS<="01011011" -顯示'2' WHEN X"3"=

32、>DS<="01001111" -顯示'3' WHEN X"4"=>DS<="01100110" -顯示'4' WHEN X"5"=>DS<="01101101" -顯示'5' WHEN X"6"=>DS<="01111100" -顯示'6' WHEN X"7"=>DS<="00000111" -顯示'7' WHEN X"8"=>DS<="0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論