基于FPGA的交通信號燈設(shè)計(jì)_第1頁
基于FPGA的交通信號燈設(shè)計(jì)_第2頁
基于FPGA的交通信號燈設(shè)計(jì)_第3頁
基于FPGA的交通信號燈設(shè)計(jì)_第4頁
基于FPGA的交通信號燈設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 CPLD/FPGA設(shè)計(jì)及應(yīng)用課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目: 基于FPGA的交通信號燈設(shè)計(jì) 院 (系): 信息科學(xué)與工程學(xué)院 專業(yè)班級: 通信工程 學(xué)生姓名: 20 16 年 03 月 14 日至20 16 年 04 月 8 日目 錄一 設(shè)計(jì)目的11.交通燈介紹22. EDA技術(shù)的發(fā)展23. 基于FPGA的交通燈的優(yōu)點(diǎn)3二 設(shè)計(jì)過程41.總體設(shè)計(jì)思路42.總體設(shè)計(jì)模塊53. 控制電路的模塊VHDL設(shè)計(jì)實(shí)現(xiàn)63.1分頻模塊63.2定時(shí)模塊73.3狀態(tài)轉(zhuǎn)換模塊83.4 禁止通行模塊123.5顯示模塊144.硬件電路設(shè)計(jì)與調(diào)試16三 實(shí)驗(yàn)總結(jié)17參考文獻(xiàn)17附錄一(程序代碼)18一 設(shè)計(jì)目的引言:隨著

2、社會和汽車工業(yè)的快速發(fā)展,近幾年機(jī)動車輛急劇增加,道路超負(fù)荷承載現(xiàn)象日趨嚴(yán)重,致使交通事故逐年增加。交通信號燈是城市交通有序、安全、快速運(yùn)行的重要保障,而交通信號燈的正常工作就成了保障交通有序、安全、快速運(yùn)行的關(guān)鍵。如何實(shí)現(xiàn)人、車、路三者關(guān)系的協(xié)調(diào),已成為交通管理部門需要切實(shí)解決的問題。該設(shè)計(jì)分析了現(xiàn)代城市交通控制與管理問題的現(xiàn)狀,結(jié)合城鄉(xiāng)交通的實(shí)際情況闡述了交通燈控制系統(tǒng)的工作原理,采用了層次化的設(shè)計(jì)方法,基于VHDL語言實(shí)現(xiàn)紅綠燈的自動指揮的硬件實(shí)現(xiàn)方法。通過電路優(yōu)化設(shè)計(jì),可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。該設(shè)計(jì)是針對交通信號燈控制器的設(shè)計(jì)問題,采用EDA技術(shù)實(shí)現(xiàn)的交通燈

3、控制電路的設(shè)計(jì)方案。本設(shè)計(jì)有效的克服了傳統(tǒng)的交通燈控制的缺點(diǎn)而采取自上而下的設(shè)計(jì)思路。該設(shè)計(jì)在軟件Quartus11.0下應(yīng)用硬件描述語言VHDL語言完成設(shè)計(jì)文件,并對其進(jìn)行了功能仿真和時(shí)序仿真,且給出了相應(yīng)的仿真結(jié)果,繪制出了具體的邏輯電路,最后將其下載到Alter公司生產(chǎn)的Cyclone系列的EP2C8Q208開發(fā)板上進(jìn)行邏輯驗(yàn)證,實(shí)現(xiàn)軟件和硬件的安全連接,達(dá)到了對交通燈的自動安全控制的目的。 關(guān)鍵字:交通燈控制;EDA; VHDL;Quartus;EP2C8Q2081.交通燈介紹當(dāng)今,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。185

4、8年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。1914年由紅綠黃三色圓形的投光器組成的紅綠燈始安裝于紐約市5號大街的一座高塔上。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國道路交通和道路標(biāo)志信號協(xié)定對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一

5、種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口。2. EDA技術(shù)的發(fā)展EDA是電子設(shè)計(jì)自動化(Electronic Design Automation)的縮寫,是指以計(jì)算機(jī)為工作平臺,融合應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)最新成果而研制成的電子CAD通用軟件包,主要能輔助進(jìn)行三方面的設(shè)計(jì)工作,即IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。是從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測試

6、(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來的。EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺上,用硬件描述語言HDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載的高層次的電子設(shè)計(jì)方法。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可用性,減輕了設(shè)計(jì)者的勞動強(qiáng)度。EDA技術(shù)是電子設(shè)計(jì)領(lǐng)域的一場革命,代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,目前正處于高速發(fā)展階段,每年都有新的EDA工具問世。3. 基于FPGA的交通燈的優(yōu)點(diǎn)傳統(tǒng)的交通燈控制系統(tǒng)多數(shù)由單片機(jī)或PLC實(shí)現(xiàn),基于EDA技術(shù)FPGA的設(shè)

7、計(jì)方法設(shè)計(jì)交通燈系統(tǒng)就是使用硬件描述語言(HDL)來完成系統(tǒng)的設(shè)計(jì)文件,應(yīng)用VHDL的數(shù)字電路實(shí)驗(yàn)降低了數(shù)字系統(tǒng)的設(shè)計(jì)難度,這在電子設(shè)計(jì)領(lǐng)域已得到設(shè)計(jì)者的廣泛采用。具有周期短,設(shè)計(jì)靈活,易于修改等明顯的優(yōu)點(diǎn),而且隨著FPGA器件、設(shè)計(jì)語言和電子設(shè)計(jì)自動化工具的發(fā)展和改進(jìn),越來越多的電子系統(tǒng)采用FPGA來設(shè)計(jì),還有,通過FPGA設(shè)計(jì)電子系統(tǒng),一旦該系統(tǒng)可以達(dá)到一定規(guī)模的量產(chǎn),很容易轉(zhuǎn)化為ASIC芯片設(shè)計(jì)。相信在將來,F(xiàn)PGA設(shè)計(jì)方法將更大規(guī)模的應(yīng)用于各種類型的電子系統(tǒng)設(shè)計(jì)中。本設(shè)計(jì)就是針對交通信號燈控制器的設(shè)計(jì)問題,并采用自頂向底的設(shè)計(jì)思路。提出了基于VHDL語言的交通信號燈系統(tǒng)的硬件實(shí)現(xiàn)方法。

8、通過對系統(tǒng)進(jìn)行結(jié)構(gòu)分析,采用了層次化的設(shè)計(jì)方法,給出了各個模塊的VHDL程序,并且利用Quartus 對應(yīng)用程序進(jìn)行了仿真,并給出了相應(yīng)的仿真結(jié)果。在用VHDL語言進(jìn)行電路設(shè)計(jì)時(shí),應(yīng)充分認(rèn)識到VHDL語言的特點(diǎn),從設(shè)計(jì)思想、語句運(yùn)用及描述方法上等多方面對電路進(jìn)行優(yōu)化設(shè)計(jì)。通過電路優(yōu)化設(shè)計(jì),可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。二 設(shè)計(jì)過程1.總體設(shè)計(jì)思路所要設(shè)計(jì)的交通信號燈控制電路,要能夠適用于由一條主干道和一條支干道的匯合點(diǎn)形成的十字交叉路口,主、支干道的紅綠燈閃亮?xí)r間不完全相同。具體的設(shè)計(jì)要求如下:實(shí)現(xiàn)控制一條主干道和一條次干道匯合組成的十字交叉路口,使主、支干道上的車輛行人

9、交替通行,其中主干道車輛行人通行35秒,此時(shí)支干道上車輛行人禁止通行;支干道車輛通行25秒,同樣此時(shí)主干道上車輛禁止通行。每當(dāng)信號燈由綠燈轉(zhuǎn)換成紅燈之前,黃燈要先亮5秒,此時(shí)另一個干道紅燈不變,禁止通行。在黃燈亮點(diǎn)亮5秒,以提示車輛行人。在主干道上安裝有數(shù)碼管,用來顯示本道各信號燈閃亮的剩余時(shí)間。 外觀示意圖如圖1所示: 主干道 紅 黃 綠 計(jì)時(shí)器 燈 燈 燈 倒計(jì)時(shí) 支 紅 燈 干 黃 燈 道 綠 燈 圖1 1.在十字路口的兩個方向上各設(shè)一組紅黃綠燈,顯示順序其中一方向是綠燈、黃燈、紅燈,另一方向是紅燈、綠燈、黃燈。2.設(shè)置一組數(shù)碼管,以倒計(jì)時(shí)的方式顯示允許通行或禁止通行時(shí)間,其中主干道綠燈

10、亮的時(shí)間是35s,支干道綠燈亮的時(shí)間是30s,黃燈亮的時(shí)間都是5s。3.擴(kuò)展:當(dāng)緊急情況出現(xiàn)時(shí),按下手動開關(guān),兩條道路都顯示紅燈,此時(shí)禁止通行,倒計(jì)時(shí)停止;按下控制開關(guān),恢復(fù)正常。2.總體設(shè)計(jì)模塊1.把由50M的有源晶振產(chǎn)生的現(xiàn)場可編程邏輯器件FPGA的系統(tǒng)時(shí)鐘輸入到分頻模塊,經(jīng)分頻模塊分頻產(chǎn)生頻率為1Hz的時(shí)鐘脈沖,作為控制定時(shí)模塊、控制模塊、緊急模塊、計(jì)數(shù)模塊的時(shí)鐘信號,然后再由定時(shí)模塊來控制緊急模塊和控制模塊,按照交通管理規(guī)則控制交通工作狀態(tài)的切換,最后,由系統(tǒng)時(shí)鐘和計(jì)數(shù)模塊以及控制模塊來共同控制計(jì)數(shù)器控制模塊,計(jì)數(shù)器的時(shí)鐘為1Hz,再把計(jì)數(shù)器控制模塊送出的BCD碼送給譯碼器譯碼后,送給

11、數(shù)碼管顯示各方向直行綠燈的倒計(jì)時(shí)。模塊圖如圖2所示:交 通 燈狀態(tài)轉(zhuǎn)換模塊計(jì)數(shù)模塊數(shù) 碼 管控制模塊分頻模塊 圖2 控制系統(tǒng)模塊圖2.Cyclone系列的EP2C8Q208的脈沖為50MHZ,為了保證設(shè)計(jì)的精度,在設(shè)計(jì)的過程中采用兩次分頻,同時(shí)在設(shè)計(jì)過程中為了防止出現(xiàn)意外情況的發(fā)生,加入了一個控制信號控制交通燈的啟用或停止,交通信號實(shí)現(xiàn)原理如圖3所示: 圖3 交通燈實(shí)現(xiàn)模塊圖3. 控制電路的模塊VHDL設(shè)計(jì)實(shí)現(xiàn)3.1分頻模塊 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std

12、_logic_arith.all;entity jiao_tong is port(clk:in std_logic); -20MHz晶振時(shí)鐘end jiao_tong;architecture fenpin of jiao_tong is signal clk1khz,clk1hz:std_logic; -分頻信號包含1hz和1khzbeginp1:process(clk)variable count:integer range 0 to 9999;beginif clk'event and clk='1' thenif count=9999 then clk1khz

13、<=not clk1khz;count:=0;else count:=count+1;end if;end if;end process p1;p2:process(clk1khz) -1hz分頻-variable count:integer range 0 to 499;beginif clk1khz'event and clk1khz='1' thenif count=499 then clk1hz<=not clk1hz;count:=0;else count:=count+1;end if;end if;end process p2;end fenp

14、in;3.2定時(shí)模塊p3:process(clk1hz)variable a:std_logic; -倒計(jì)時(shí)賦值標(biāo)志位variable qh:std_logic_vector(3 downto 0); -計(jì)數(shù)的高位和低位variable ql:std_logic_vector(3 downto 0);beginif clk1hz'event and clk1hz='1' then -如果是下降延if jin='0' then -狀態(tài)st1,主干道通行35sif a='0' thenqh:="0011" ql:=&quo

15、t;0100"a:='1'elsif qh=0and ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st2狀態(tài)a:='0'qh:="0000"ql:="0000"elsif ql=0 then -實(shí)現(xiàn)倒計(jì)時(shí)35sql:="1001"qh:=qh-1;elseql:=ql-1;end if;end if;end if;end if;end p3;3.3狀態(tài)轉(zhuǎn)換模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned

16、.all;use ieee.std_logic_arith.all;entity jiao_tong is port(clk:in std_logic; -20MHz晶振時(shí)鐘jin:in std_logic); -禁止通行信號end jiao_tong;architecture one of jiao_tong is type states is(st1,st2,st3,st4); -4種狀態(tài)signal clk1khz,clk1hz:std_logic; -分頻信號包含1hz和1khzsignal one,ten:std_logic_vector(3 downto 0); -倒計(jì)時(shí)的個位和十

17、位signal cnt:std_logic_vector(1 downto 0); signal data:std_logic_vector(3 downto 0); -數(shù)碼管掃描計(jì)數(shù)信號signal seg7_temp:std_logic_vector(6 downto 0); signal r1,r2,y1,y2,g1,g2:std_logic;beginp3:process(clk1hz) -交通狀態(tài)轉(zhuǎn)換variable stx:states;variable a:std_logic; -倒計(jì)時(shí)賦值標(biāo)志位variable qh:std_logic_vector(3 downto 0);

18、-計(jì)數(shù)的高位和低位variable ql:std_logic_vector(3 downto 0);beginif clk1hz'event and clk1hz='1' then -如果是下降延case stx iswhen st1=>if jin='0' then -狀態(tài)st1,主干道通行35sif a='0' thenqh:="0011" ql:="0100"a:='1'r1<='0'y1<='0'g1<='1&#

19、39;r2<='1'y2<='0'g2<='0'elseif qh=0and ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st2狀態(tài)stx:=st2;a:='0'qh:="0000"ql:="0000"elsif ql=0 then -實(shí)現(xiàn)倒計(jì)時(shí)35sql:="1001"qh:=qh-1;elseql:=ql-1;end if;end if;end if;when st2=>if jin='0' then -狀態(tài)st2,主干道黃燈倒

20、計(jì)時(shí)5sif a='0' thenqh:="0000"ql:="0100"a:='1'r1<='0'y1<='1' -主干道黃燈點(diǎn)亮g1<='0'r2<='1' -支干道紅燈點(diǎn)亮y2<='0'g2<='0'elseif ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st3狀態(tài)stx:=st3;a:='0'qh:="0000"ql:="0000&quo

21、t;elseql:=ql-1;end if;end if;end if;when st3=>if jin='0' then -狀態(tài)st3,支干道通行25Sif a='0' thenqh:="0010"ql:="0100"a:='1'r1<='1' -主干道紅燈點(diǎn)亮y1<='0'g1<='0'r2<='0'y2<='0'g2<='1' -支干道綠燈點(diǎn)亮elseif qh=0

22、and ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st4狀態(tài)stx:=st4;a:='0'qh:="0000"ql:="0000"elsif ql=0 then -實(shí)現(xiàn)倒計(jì)時(shí)25Sql:="1001"qh:=qh-1;elseql:=ql-1;end if;end if;end if;when st4=>if jin='0' then -狀態(tài)st4,支干道黃燈倒計(jì)時(shí)5sif a='0' thenqh:="0000"ql:="0100"a:=

23、'1'r1<='1' -主干道紅燈點(diǎn)亮y1<='0'g1<='0'r2<='0'y2<='1' -支干道黃燈點(diǎn)亮g2<='0'elseif ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st1狀態(tài)stx:=st1;a:='0'qh:="0000"ql:="0000"elseql:=ql-1;end if;end if;end if;end case;end if;one<=ql;ten&l

24、t;=qh; end process p3;3.4 禁止通行模塊entity jiao_tong is port(clk:in std_logic; -20MHz晶振時(shí)鐘jin:in std_logic; -禁止通行信號ra,ya,ga:out std_logic; -主干道紅黃綠燈rb,yb,gb:out std_logic); -支紅黃綠燈end jiao_tong;architecture one of jiao_tong is type states is(st1,st2,st3,st4); -4種狀態(tài)signal clk1khz,clk1hz:std_logic; -分頻信號包含1h

25、z和1khzsignal one,ten:std_logic_vector(3 downto 0); -倒計(jì)時(shí)的個位和十位signal cnt:std_logic_vector(1 downto 0); signal data:std_logic_vector(3 downto 0); -數(shù)碼管掃描計(jì)數(shù)信號signal seg7_temp:std_logic_vector(6 downto 0); signal r1,r2,y1,y2,g1,g2:std_logic;beginp4:process(jin,clk1hz,r1,r2,g1,g2,y1,y2,seg7_temp) -禁止通行信號數(shù)

26、碼管閃爍顯示 beginif jin='1' thenra<=r1 or jin; -主干道紅燈點(diǎn)亮rb<=r2 or jin; -支干道紅燈點(diǎn)亮ga<=g1 and (not jin);gb<=g2 and (not jin);ya<=y1 and (not jin);yb<=y2 and (not jin);seg7(0)<=seg7_temp(0) and clk1hz; -實(shí)現(xiàn)數(shù)碼管閃爍顯示seg7(1)<=seg7_temp(1) and clk1hz;seg7(2)<=seg7_temp(2) and clk1h

27、z;seg7(3)<=seg7_temp(3) and clk1hz;seg7(4)<=seg7_temp(4) and clk1hz;seg7(5)<=seg7_temp(5) and clk1hz;seg7(6)<=seg7_temp(6) and clk1hz;elseseg7<=seg7_temp;ra<=r1;rb<=r2;ga<=g1;gb<=g2;ya<=y1;yb<=y2;end if;end process p4;3.5顯示模塊p5:process(clk1khz) -數(shù)碼管動態(tài)掃描計(jì)數(shù)-beginif clk

28、1khz'event and clk1khz='1' thenif cnt="01" then cnt<="00" else cnt<=cnt+1;end if;end if;end process p5;p6:process(cnt,one,ten) -數(shù)碼管動態(tài)掃描-begincase cnt iswhen "00"=>data<=one;scan<="01"when "01"=>data<=ten;scan<=&quo

29、t;10"when others=>null;end case;end process p6;p7:process(data) -7段譯碼-begincase data iswhen "0000" =>seg7_temp<="1000000" -0 when "0001" =>seg7_temp<="1111001" -1 when "0010" =>seg7_temp<="0100100" -2 when "00

30、11" =>seg7_temp<="0110000" -3 when "0100" =>seg7_temp<="0011001" -4 when "0101" =>seg7_temp<="0010010" -5 when "0110" =>seg7_temp<="0000010" -6 when "0111" =>seg7_temp<="1111000&qu

31、ot; -7 when "1000" =>seg7_temp<="0000000" -8 when "1001" =>seg7_temp<="0010000" -9 when others=>seg7_temp<="1001111"end case;end process p7;4.硬件電路設(shè)計(jì)與調(diào)試本系統(tǒng)的主要邏輯設(shè)計(jì)由一片EP2C8Q208芯片完成,編寫的VHDL源程序在Altera公司的邏輯綜合工具 Quartus下經(jīng)過編譯和功能仿真測試后,針對下載芯片

32、進(jìn)行管腳配置,下載到EP2C8Q208芯片中,進(jìn)行相應(yīng)的硬件調(diào)試,調(diào)試結(jié)果與軟件仿真的結(jié)果相吻合,驗(yàn)證了設(shè)計(jì)完成了預(yù)定功能。以下是芯片引腳圖圖4和管腳配置圖圖 5: EP2C8Q208芯片圖4 引腳配置圖5三 實(shí)驗(yàn)總結(jié)1.芯片的選取必須要于實(shí)驗(yàn)箱相一致,否則將會有硬件無法連接的錯誤。2.引腳分配時(shí)要注意引腳的輸入輸出關(guān)系,否則將無法正常的進(jìn)行數(shù)據(jù)傳輸3.我用的是睿智基于EP2C8Q208芯片的FPGA開發(fā)板,數(shù)碼管的硬件原理圖只用到16個管腳,程序邏輯上用到了位選和段選的思想。開始寫的程序直接對應(yīng)每個數(shù)碼管的端口,配置時(shí)發(fā)現(xiàn)有問題。 本次設(shè)計(jì)利用硬件描述語言VHDL編程,借助Altera公司的

33、Quartus11.0軟件環(huán)境下進(jìn)行了編譯及仿真測試,通過FPGA芯片實(shí)現(xiàn)了一個實(shí)用的交通信號燈控制系統(tǒng),設(shè)計(jì)由于采用了EDA技術(shù),不但大大縮短了開發(fā)研制周期,提高了設(shè)計(jì)效率,而且使系統(tǒng)具有設(shè)計(jì)靈活,實(shí)現(xiàn)簡單,性能穩(wěn)定的特點(diǎn)。實(shí)現(xiàn)了交通信號燈的安全控制。參考文獻(xiàn)1孟慶輝EDA技術(shù)實(shí)用教程M國防工業(yè)出版社,2008:991672謝自美電子線路綜合設(shè)計(jì)(第二版)M華中科技大學(xué)出版社,20063馬玲 彭敏CPLD/FPGA設(shè)計(jì)及應(yīng)用華中科技大學(xué)出版,2005.74俞一鳴Altera可編程邏輯器件的應(yīng)用與設(shè)計(jì)M機(jī)械工業(yè)出版社,2007附錄一(程序代碼)library ieee;use ieee.std

34、_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jiao_tong IS port ( clk:in std_logic;-50MHZ晶振時(shí)鐘jin:in std_logic;-禁止通行信號scan:out std_logic_vector(1 downto 0);seg7:out std_logic_vector(6 downto 0);-段選ra,ya,ga:out std_logic;-紅黃綠rb,yb,gb:out std_logic);-紅黃綠 end jiao_t

35、ong;architecture one of jiao_tong IS type states is (st1,st2,st3,st4); signal clk1khz,clk1hz:std_logic;-分頻信號1HZ和1KHZ signal one,ten:std_logic_vector(3 downto 0); signal cnt:std_logic_vector(1 downto 0); signal data:std_logic_vector(3 downto 0);-數(shù)碼管掃描計(jì)數(shù)信號 signal seg7_temp:std_logic_vector(6 downto 0)

36、; signal r1,r2,y1,y2,g1,g2:std_logic;begin p1:process(clk) variable count : integer range 0 to 4999; begin if clk='1'and clk'event then if count=4999 then clk1khz<=not clk1khz;count:=0; else count:=count+1; end if; end if; end process p1; p2:process (clk1khz) variable count : integer

37、range 0 to 2499; begin if clk1khz='1'and clk1khz'event then if count=2499 then clk1hz<=not clk1hz; count:=0; else count:=count+1; end if; end if; end process p2; p3: process(clk1hz) -交通狀態(tài)轉(zhuǎn)換 variable stx:states; variable a:std_logic;-倒計(jì)時(shí)賦值標(biāo)志位 variable qh:std_logic_vector(3 downto 0);-計(jì)

38、數(shù)高位低位 variable ql:std_logic_vector(3 downto 0); begin if clk1hz'event and clk1hz='1' then-如果是上升沿 case stx is when st1=>if jin='1' then -狀態(tài)s1主干道通行35s if a='0' then qh:="0011"-3ql:="0100"-4a:='1'r1<='1'-110 011y1<='1'g1&l

39、t;='0'r2<='0'y2<='1'g2<='1'else if qh=0 and ql=1 then -如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st2狀態(tài) stx:=st2; a:='0' qh:="0000"-0 ql:="0000"-0elsif ql=0 then -實(shí)現(xiàn)倒計(jì)時(shí)35s ql:="1001"-低位減到9,高位自減1位 qh:=qh-1; else ql:=ql-1;-否則低位自減1 end if; end if;end if; w

40、hen st2=>if jin='1' then-狀態(tài)st2主干道黃燈倒計(jì)時(shí)5s if a='0' then qh:="0000"-0ql:="0100"-4sa:='1'r1<='1'-101 011y1<='0'-主干道黃燈點(diǎn)亮g1<='1'r2<='0'-支干道紅燈點(diǎn)亮y2<='1'g2<='1'else if ql=1 then-如果倒計(jì)時(shí)結(jié)束,則轉(zhuǎn)到st3狀態(tài)

41、stx:=st3; a:='0' qh:="0000" ql:="0000"else ql:=ql-1; end if; end if;end if; when st3=>if jin='1' then-狀態(tài)st3,支干道通行25s if a='0' then qh:="0010"-2ql:="0100"-4sa:='1'r1<='0'-主干道紅燈點(diǎn)亮 011 110y1<='1'g1<='

42、;1'r2<='1'y2<='1'g2<='0'-支干道綠燈點(diǎn)亮else if qh=0 and ql=1 then-如果倒計(jì)時(shí)結(jié)束轉(zhuǎn)到st4 stx:=st4; a:='0' qh:="0000" ql:="0000"elsif ql=0 then-實(shí)現(xiàn)倒計(jì)時(shí)25s ql:="1001" qh:=qh-1; else ql:=ql-1; end if; end if;end if; when st4=>if jin='1'

43、 then-狀態(tài)st4支干道黃燈倒計(jì)時(shí)5s if a='0' then qh:="0000"-0ql:="0100"-4sa:='1'r1<='0'-主干道紅燈點(diǎn)亮 011 101y1<='1'g1<='1'r2<='1'y2<='0'-支干道黃燈點(diǎn)亮g2<='1'else if ql=1 then-如果倒計(jì)時(shí)結(jié)束則轉(zhuǎn)到st1 stx:=st1; a:='0' qh:=&quo

44、t;0000" ql:="0000" else ql:=ql-1; end if; end if;end if;end case;end if;one<=ql;ten<=qh;end process p3;p4: process(clk1hz,jin,r1,r2,g1,g2,y1,y2,seg7_temp)-禁止通行begin if jin='0'then ra<=r1 and jin; -主干道紅燈點(diǎn)亮 rb<=r2 and jin; -支干道紅燈點(diǎn)亮 ga<=g1 or ( not jin); gb<=g2 or ( not jin); ya<=y1 or ( not jin); yb<=y2 or ( not jin); seg7(0)<=seg7_temp(0) and clk1hz;-實(shí)現(xiàn)數(shù)碼管閃爍顯示 seg7(1)<=seg7_temp(1) and clk1hz; seg7(2)<=seg7_temp(2) and clk1hz;

溫馨提示

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

最新文檔

評論

0/150

提交評論