EDA課程設(shè)計-十字路口交通燈控制系統(tǒng)_第1頁
EDA課程設(shè)計-十字路口交通燈控制系統(tǒng)_第2頁
EDA課程設(shè)計-十字路口交通燈控制系統(tǒng)_第3頁
EDA課程設(shè)計-十字路口交通燈控制系統(tǒng)_第4頁
EDA課程設(shè)計-十字路口交通燈控制系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計 說 明 書 題 目:十字路口交通燈控制系統(tǒng) 系 別:計 算 機(jī) 科 學(xué) 與 技 術(shù) 班 級: 10 計 科 2 姓 名: 王維 指導(dǎo)老師: 鄭 朝 霞 同組成員:白雪峰 黃貴強(qiáng) 湖 北 工 業(yè) 大 學(xué)二O一二 年 十二 月 二十一 日目 錄概述設(shè)計任務(wù)與要求3系統(tǒng)分析電路工作原理及設(shè)計思路4總體和模塊框圖總體框圖6具體模塊框圖6功能模塊設(shè)計各模塊原理及其程序9程序代碼設(shè)計與分析程序代碼12運行仿真 19心得體會 22參考文獻(xiàn) 22概述在熙熙攘攘的都市中,為了保證城市道路的暢通與行人的平安,交通燈是城市交通監(jiān)管的重要組成局部。但由于目前很多城市的交通燈實行的是定時控制,在時間和空

2、間方面的應(yīng)變性能較差,在一定程度上造成了交通資源的浪費,加重了道路交通壓力。而設(shè)計周全的交通燈考慮了車流量等因素,有較大的可變性。在一定程度上改變了城市交通的現(xiàn)狀,減少交通事故發(fā)生的概率。EDA是電子設(shè)計自動化Electronic Design Automation的縮寫,在20世紀(jì)60年代中期從計算機(jī)輔助設(shè)計CAD、計算機(jī)輔助制造CAM、計算機(jī)輔助測試CAT和計算機(jī)輔助工程CAE的概念開展而來的。EDA技術(shù)就是以計算機(jī)為工具,設(shè)計者在EDA軟件平臺上,用硬件描述語言VHDL完成設(shè)計文件,然后由計算機(jī)自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、

3、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計的效率和可操作性,減輕了設(shè)計者的勞動強(qiáng)度。設(shè)計任務(wù)與要求:設(shè)計任務(wù)設(shè)計一個十字路口交通控制器,分為手動操作、自動操作和復(fù)位系統(tǒng),假設(shè)南北方向和東西方向,兩個方向分別設(shè)置左拐、綠、黃和紅四盞燈,每個方向設(shè)置一組倒計時顯示器,用以指揮車輛和行人有序的通行。紅燈亮表示左轉(zhuǎn)和直行車輛禁行;綠燈亮表示直行車輛可以通行;黃燈亮表示左轉(zhuǎn)或直行車輛即將禁行;左拐燈亮表示左轉(zhuǎn)車輛可以通行;倒計時顯示器用來顯示允許通行或禁止通行的時間 。設(shè)計要求在十字路口南北和東西兩個方向各設(shè)一組紅燈、綠燈、黃燈和左拐燈。顯示順序:綠燈 黃燈 紅燈 左拐 黃燈 紅燈

4、。在南北和東西兩個方向各設(shè)一組倒計時顯示器。自動控制:設(shè)置一組數(shù)碼管,以倒計時的方式顯示允許通行或禁止通行的時間,南北方向為主干道,左拐、綠燈、黃燈和紅燈顯示時間分別是20s、20s、5s和20s。東西方向為次干道,左拐、綠燈、黃燈和紅燈顯示時間分別為15s、15s、5s和25s。手動控制:按按鈕依次執(zhí)行以上顯示狀態(tài),綠燈 黃燈 紅燈 左拐 黃燈 紅燈,倒計時顯示為“0。系統(tǒng)設(shè)有總復(fù)位開關(guān),可在任意時間內(nèi)對系統(tǒng)進(jìn)行復(fù)位。通過開關(guān)按鈕切換交通燈的工作狀態(tài)。系統(tǒng)分析2.1交通燈工作流程分析 十字路口的交通燈指揮著行人和各種車輛的平安運行。實現(xiàn)紅綠燈的自動指揮是城市交通管理自動化的重要課題。在一個具

5、有主、支干道的十字路口,設(shè)計一個交通燈自動控制裝置,實現(xiàn)如下功能: 1.由主干道和支干道集合成十字路口,在入口處設(shè)置 紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮那么給行駛中的車輛有時間停在禁行線外。 2.當(dāng)主干道與支干道均無車輛要求通行時,主干道應(yīng)保持暢通,亮綠燈;支干道亮紅燈。 3.如果主干道無車,支干道有車,那么允許支干道通行,主干道亮紅燈,支干道亮綠燈。 4.如果主干道和支干道均有車要求通行,那么兩者應(yīng)交替通行,并要求主干道每次通行30秒鐘,支干道每次通行20秒鐘。 5.每次綠燈變紅,黃燈應(yīng)先亮5秒。 2.2設(shè)計思路:1硬件:由設(shè)計任務(wù)要求可知,總體輸入電路有:(1)在

6、開始計時之前的等待狀態(tài),復(fù)位鍵reset接低電位,接通電源后,首先要將它接高電位,表示計時開始。(2)當(dāng)按一下on_off鍵,表示緊急情況發(fā)生,兩個方向均為紅燈亮,計時停止,當(dāng)再次按下on_off鍵時,控制器恢復(fù)原來狀態(tài),正常工作。輸出電路:1由于東西和南北方向都要顯示時間,因此需要4個數(shù)碼管,這樣在設(shè)計中就需要四條輸出線choose4,用來選通指定一個LED七段顯示數(shù)碼管。2顯示器的每一位都采用LED七段顯示數(shù)碼管進(jìn)行顯示,每一個LED七段顯示數(shù)碼管都要有七條輸出線控制,一共使用4個七段數(shù)碼管,故輸出電路使用四個七位輸出信號:showtime1,showtime2,showtime3,sho

7、wtime4。3東西和南北方向都有交通燈亮的情況,故輸出電路中要有兩個狀態(tài)控制信號state1,state2分別控制東西和南北的燈,每個方向上有4個燈增加了左、右轉(zhuǎn)彎顯示控制功能,所以state1,state2的類型應(yīng)該是4位數(shù)組型的。2軟件:1在VHDL設(shè)計描述中,采用自頂向下的設(shè)計思路,該思路,首先要描述頂層的接口,上面的描述已經(jīng)規(guī)定了交通燈控制的輸入輸出信號:輸入信號:復(fù)位開關(guān)信號reset;緊急情況控制信號on_off;外部時鐘信號clk。輸出信號:LED七段顯示數(shù)碼管的選通信號choose4(3 downto 0);LED七段顯示數(shù)碼管的輸出信號showtime1(6 downto

8、0),showntime2(6 downto 0),showtime3(6 downto 0),showtome4(6 downto 0);交通燈狀態(tài)控制信號state1(3 downto 0),state2(3 downto 0)。2在自頂向下的VHDL設(shè)計描述中,通常把整個設(shè)計的系統(tǒng)劃分為幾個模塊,然后采用結(jié)構(gòu)描述方式對整個系統(tǒng)進(jìn)行描述。根據(jù)實驗設(shè)計的結(jié)構(gòu)功能,來確定使用哪些模塊以及這些模塊之間的關(guān)系。由于緊急情況控制信號是采用按鍵的輸入方式,其產(chǎn)生時刻和持續(xù)時間的長短是隨機(jī)不定的,且存在因開關(guān)簧片反彈引起的電平抖動現(xiàn)象,因此必須在每個開關(guān)后面安排一個消抖和同步化電路模塊,以保證系統(tǒng)能捕捉

9、到輸入脈沖,故需要有防抖動的模塊。由于外部時鐘信號clk的頻率為1MHz,而實際需要的內(nèi)部計時時鐘頻率為1Hz,提供給消抖同步電路的頻率為50Hz滿足按鍵和提供給產(chǎn)生選通信號電路的時鐘頻率為200Hz滿足視覺暫留效應(yīng)。當(dāng)正常計時開始后,需要進(jìn)行定時計數(shù)操作,由于東西和南北兩個方向上的時間顯示器是由兩個LED七段顯示數(shù)碼管組成的,因此需要產(chǎn)生兩個2位的計時信息:2個十位信號,2個個位信號,這個定時計數(shù)操作可以由一個定時計數(shù)器來完成,又因為交通燈的狀態(tài)變化是在計時為0的情況下才能進(jìn)行的,因此需要一個計時電路來產(chǎn)生使能信號,因此定時計數(shù)的功能就是用來產(chǎn)生2個2位計時信息和使能信號。另外還需要將時間顯

10、示出來,為了節(jié)省資源,我采用了循環(huán)點亮LED七段顯示數(shù)碼管的方法來顯示計時輸出。通過信號choose4(3 downto 0)來對4個LED七段顯示數(shù)碼管進(jìn)行選擇。由于不能使用7448自動譯碼集成電路,故在LED七段顯示數(shù)碼管顯示時間時,要把計時結(jié)果轉(zhuǎn)換為七段碼輸出到相應(yīng)的LED七段顯示數(shù)碼管上,因此還需要一個轉(zhuǎn)換電路。交通燈狀態(tài)控制也需要一個電路,當(dāng)有使能信號及無緊急情況下,交通燈狀態(tài)不發(fā)生變化,有緊急情況時,兩個方向上均為紅燈亮,緊急情況消除后,回到原來狀態(tài),無使能信號時,交通燈狀態(tài)不變。通過上面的分析,不難得知可以把交通燈控制系統(tǒng)劃分為6個模塊:鍵輸入模塊,時鐘分頻模塊,計時模塊,選通模

11、塊,顯示模塊,控制模塊。各個模塊之間的連接關(guān)系如下:總體和模塊框圖:總體框圖:發(fā)光二極管控制器分頻電路分位電路計數(shù)器七段數(shù)碼管譯碼電路倒計時數(shù)字顯示ResetdClkd計數(shù)值Con1dCond具體模塊框圖:1.時鐘分頻模塊 系統(tǒng)的動態(tài)掃描需要1HZ的脈沖,而系統(tǒng)時鐘計時模塊需要1HZ的脈沖。分頻模塊主要為系統(tǒng)提供所需的時鐘計時脈沖。該模塊將1kHZ的脈沖信號進(jìn)行分頻,產(chǎn)生1S的方波,作為系統(tǒng)時鐘計時信號。其實體模塊如下: 將END TIME改為5S CLK采用系統(tǒng)的1KHZ的時鐘脈沖 2.交通燈控制及計時模塊 控制模塊根據(jù)外部輸入信號和計時模塊產(chǎn)生的輸出信號,產(chǎn)生系統(tǒng)的狀態(tài)機(jī),控制其他局部協(xié)調(diào)

12、工作。計時模塊用來設(shè)定主干道和支干道計時器的初值,并為掃描顯示譯碼模塊提供倒計時時間??刂萍坝嫊r模塊采用狀態(tài)機(jī)進(jìn)行設(shè)計,可以定義出5種狀態(tài),分別為S0:主干道綠燈,支干道紅燈且沒有車輛行駛;S1:主干道綠燈,支干道紅燈或支干道有車輛駛?cè)?;S2:主干道黃燈,支干道紅燈;S3:主干道紅燈,支干道綠燈;S4:主干道紅燈,支干道黃燈。利用CASE語句定義狀態(tài)的轉(zhuǎn)換方式及時間的變換方式,到達(dá)主干道綠燈亮45秒,支干道綠燈亮25秒,黃燈亮5秒的設(shè)計要求。其實體模塊如下: CAR為支干道車輛檢測開關(guān)在支干道有車的情況下,模塊可以進(jìn)行減計時CLK1S為1S的時鐘脈沖TIME1H、TIME1L、TIME2H、T

13、IME2L分別為主干道時鐘高位、主干道時鐘低位、支干道時鐘高位、支干道時鐘低位LED為LED燈發(fā)光情況,分別為主干道綠燈、主干道黃燈、主干道紅燈、支干道綠燈、主干道黃燈、主干道紅燈Count的總的系統(tǒng)時間,用來改變系統(tǒng)的狀態(tài)3.掃描顯示譯碼模塊掃描顯示譯碼模塊可以根據(jù)控制信號,驅(qū)動交通信號燈以及倒計時數(shù)碼管的顯示,其中數(shù)碼管的顯示采用動態(tài)掃描顯示。其實體模塊如下: CLK為1KHZ的系統(tǒng)時鐘脈沖CLK1S為1S時鐘脈沖CAR為支干道車輛檢測開關(guān)SEL為數(shù)碼管位碼掃描SEG為數(shù)碼管段碼TIME1H、TIME1L、TIME2H、TIME2L為數(shù)碼管計時的時間,由控制及計時模塊為其賦值4.頂層文件的

14、編寫將以上各個單元模塊仿真成功后,再進(jìn)行頂層文件的編寫。將各個單元模塊的變量賦值給頂層文件,從而將各個單元模塊連接起來,統(tǒng)一調(diào)配。得到頂層文件的實體模塊: CLK為1KHZ系統(tǒng)時鐘脈沖CAR為支干道車輛行駛情況,高電平為有車行駛,低電平為無車行駛LED為交通燈發(fā)光情況SEL為數(shù)碼管位碼掃描SEG為數(shù)碼管段碼功能模塊設(shè)計:各模塊的原理及其程序分頻模塊設(shè)計實體:entity clk_10 isport( clk : in std_logic; clk_div10 : out std_logic); end clk_10;功能:實現(xiàn)十分頻接口:clk脈沖輸入 clk-div10十分頻后脈沖輸出計數(shù)模

15、塊設(shè)計實體:entity counter is port( clk0:in std_logic; con:in std_logic; reset:in std_logic; countnum:buffer integer range 0 to 89); end counter;功能:實現(xiàn)0到89的計數(shù) clk0脈沖輸入 con手動控制信號 reset復(fù)位信號 countnum計數(shù)輸出控制模塊設(shè)計實體:entity controller isport ( clk1 : in std_logic; con1 : in std_logic; con2 : in std_logic; countnum

16、 : in integer range 0 to 89; numa,numb : out integer range 0 to 25; ra,ga,ya,ga1 : out std_logic; rb,gb,yb,gb1: out std_logic); end controller;功能:控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段譯碼管的分位譯碼電路。 clk1脈沖信號輸入 con1手動控制信號 con2狀態(tài)控制信號 countnum計數(shù)輸入 numa,numb兩個方向的倒計時數(shù)值輸出 ra,ga,ya,ga1,rb,gb,yb,gb1發(fā)光二極管輸出分位模塊設(shè)計實體:entity fe

17、nwei is port (numin:in integer range 0 to 25; numa,numb:out integer range 0 to 9 ); end fenwei;功能:把倒計時的數(shù)值分成2個1位的十進(jìn)制數(shù)。 numin:倒計時數(shù)值輸入 numa,numb將數(shù)值分為2個1位的十進(jìn)制輸出譯碼模塊設(shè)計實體:entity display is port(clk2:in std_logic; bb: in std_logic_vector(3 downto 0); ya:out std_logic; yb:out std_logic; yc:out std_logic; yd

18、:out std_logic; ye:out std_logic; yf:out std_logic; yg:out std_logic); end display;功能:根據(jù)控制電路的控制信號,驅(qū)動交通燈的顯示,通過輸入二進(jìn)制數(shù)值,輸出信號點亮二極管。 bb3.0-BCD碼輸入 clk2脈沖輸入 ya,yb,yc,yd,ye,yf,yg七段數(shù)碼管顯示輸出頂層模塊的設(shè)計實體:entity dingceng isport(clkd,resetd,cond,con1d:in std_logic;count1:out std_logic_vector(6 downto 0);count2:out s

19、td_logic_vector(6 downto 0);count3:out std_logic_vector(6 downto 0);count4:out std_logic_vector(6 downto 0);reda,greena,yellowa,greena1: out std_logic;redb,greenb,yellowb,greenb1: out std_logic); end entity dingceng;功能:clkd脈沖輸入 resetd復(fù)位信號 con手動控制信號 con1d狀態(tài)控制信號 count1,count2,count3,count4七段數(shù)碼管顯示 reda

20、,greena,yellowa,greena1,redb,greenb,yellowb,greenb1發(fā)光二極管輸出程序代碼設(shè)計與分析:程序代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dingceng isport(clkd,resetd,cond,con1d:in std_logic;count1:out std_logic_vector(6 downto 0);count2:out std_logic_vector(6 downto 0);count3:out std_

21、logic_vector(6 downto 0);count4:out std_logic_vector(6 downto 0);reda,greena,yellowa,greena1: out std_logic;redb,greenb,yellowb,greenb1: out std_logic);end entity dingceng;architecture one of dingceng iscomponent clk_10port(clk:in std_logic; clk_div10 : out std_logic);end component;component counter

22、port (clk0:in std_logic; con:in std_logic; reset:in std_logic; countnum:buffer integer range 0 to 89);end component;component controllerport ( clk1 : in std_logic; con1 : in std_logic;con2: in std_logic; countnum : in integer range 0 to 89; numa,numb : out integer range 0 to 25; ra,ga,ya,ga1: out st

23、d_logic; rb,gb,yb,gb1 : out std_logic);end component;component fenwei port ( numin:in integer range 0 to 25; numa,numb:out integer range 0 to 9 );end component;component yimaport(clk2:in std_logic; bb: in integer range 0 to 9; ya:out std_logic; yb:out std_logic; yc:out std_logic; yd:out std_logic; y

24、e:out std_logic; yf:out std_logic; yg:out std_logic);end component;signal a,b,c:std_logic;signal ww:integer range 0 to 89;signal yy1,yy2:integer range 0 to 25;signal tt1,tt2,tt3,tt4:integer range 0 to 9;beginu0: clk_10 port map(clk=clkd,clk_div10=a);u1: clk_10 port map(clk=clkd,clk_div10=b);u2: clk_

25、10 port map(clk=b,clk_div10=c);u3:counter port map(clk0=c,con=cond,reset=resetd,countnum=ww);u4:controller port map (clk1=c,con1=cond,con2=con1d,countnum=ww,numa=yy1,numb=yy2,ra=reda,ga=greena,ya=yellowa,ga1=greena1,rb=redb,gb=greenb,yb=yellowb,gb1=greenb1);u5:fenwei port map(numin=yy1,numa=tt1,numb

26、=tt2);u6:fenwei port map (numin=yy2,numa=tt3,numb=tt4);u7:yimaport map(clk2=b,bb=tt1,ya=count1(0),yb=count1(1),yc=count1(2),yd=count1(3),ye=count1(4),yf=count1(5),yg=count1(6);u8:yima port map (clk2=b,bb=tt2,ya=count2(0),yb=count2(1),yc=count2(2),yd=count2(3),ye=count2(4),yf=count2(5),yg=count2(6);u

27、9:yima port map(clk2=b,bb=tt3,ya=count3(0),yb=count3(1),yc=count3(2),yd=count3(3),ye=count3(4),yf=count3(5),yg=count3(6);u10:yima port map(clk2=b,bb=tt4,ya=count4(0),yb=count4(1),yc=count4(2),yd=count4(3),ye=count4(4),yf=count4(5),yg=count4(6);end architecture one;library ieee;use ieee.std_logic_116

28、4.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clk_10 isport( clk : in std_logic; clk_div10 : out std_logic);end clk_10;architecture one of clk_10 issignal clk_temp : std_logic;beginprocess(clk)variable counter : std_logic_vector(2 downto 0);constant md : std_logic_vector(

29、2 downto 0) := 101;beginif(clkevent and clk=1) thenif(counter = md)thencounter := (others =0);clk_temp = not clk_temp;end if;counter := counter + 1 ;end if; end process;clk_div10 = clk_temp;end one;library ieee;use ieee.std_logic_1164.all;entity counter is port ( clk0:in std_logic; con:in std_logic;

30、 reset:in std_logic; countnum:buffer integer range 0 to 89);end counter;architecture one of counter is begin process (reset,clk0) begin if reset=1 then countnum = 0; elsif rising_edge( clk0 ) then if con=1 then countnum = 0; else if countnum=89 then countnum = 0; else countnum = 65then numb=90-count

31、num; numa = 70 then aa := 00011000; else aa := 00101000; numa= 45 then numb = 65-countnum;numa = 50 then aa := 10000100; else aa := 10000010; numb= 20 then numa = 45-countnum;numb = 25 then aa := 01001000; else aa := 00101000; numa = 0 then numa = 20-countnum;numb = 5 then aa := 10000100; else aa :=

32、 10000010; numb = 5-countnum; end if;end if;elseif con1= 1 then numa = 0;numb = 0; if con2 = 1 thenif m = 7 then m = 0;elsem = m + 1;end if;end if;if m = 0 then aa := 01001000;elsif m= 1 then aa := 00101000; elsif m=2 then aa :=10000100; elsif m=3 then aa := 10000010; elsif m=4 then aa := 00011000;

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論