基于EDA技術(shù)基礎(chǔ)的交通燈設(shè)計(jì)論文_第1頁
基于EDA技術(shù)基礎(chǔ)的交通燈設(shè)計(jì)論文_第2頁
基于EDA技術(shù)基礎(chǔ)的交通燈設(shè)計(jì)論文_第3頁
基于EDA技術(shù)基礎(chǔ)的交通燈設(shè)計(jì)論文_第4頁
基于EDA技術(shù)基礎(chǔ)的交通燈設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于eda技術(shù)的交通燈設(shè)計(jì) 班 級(jí): 姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 1、緒論1.1課程設(shè)計(jì)背景 隨著世界范圍內(nèi)城市化和機(jī)動(dòng)化進(jìn)程的加快,城市交通越來越成為一個(gè)全球化的問題。城市交通基礎(chǔ)設(shè)施供給滯后于高速機(jī)動(dòng)化增長(zhǎng)需求,道路堵塞日趨加重,交通事故頻繁,環(huán)境污染加劇等問題普遍存在。目前,全國大中城市普遍存在著道路擁擠、車輛堵塞、交通秩序混亂的現(xiàn)象,交通事故頻發(fā),這給人民的生命財(cái)產(chǎn)安全帶來了極大的損失。如何解決城市交通問題已成為全社會(huì)關(guān)注的焦點(diǎn)和大眾的迫切呼聲。探究城市交通發(fā)展中存在問題的原因,無論是從宏觀上還是從微觀上分析,其根本原因在于城市交通系統(tǒng)的管理機(jī)制不適應(yīng)。城市交通控制系統(tǒng)(utc ,

2、urban traffic control system)是現(xiàn)代城市智能交通系統(tǒng)(idj ,intelligent transport system)的組成之一,主要用于城市道路交通的控制與管理。城市平交路口實(shí)現(xiàn)交通信號(hào)控制是城市交通管理現(xiàn)代化的基本標(biāo)志之一,是提高交通管理效能的重要技術(shù)手段。路口信號(hào)控制器是控制交叉路口交通信號(hào)的設(shè)備,它是交通信號(hào)控制的重要組成部分。各種交通控制方案,最終都要由路口信號(hào)控制器來實(shí)現(xiàn)。為了確保十字路口的行人和車輛順利、暢通地通過,往往采用電子控制的交通信號(hào)來進(jìn)行指揮。伴隨著社會(huì)的發(fā)展以及人類生活水平的提高,汽車的數(shù)量在不斷增加,eda技術(shù)的發(fā)展和應(yīng)用領(lǐng)域也在不斷

3、的擴(kuò)大與深入,機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域的重要性日益突出。利用eda技術(shù)設(shè)計(jì)交通燈來完成這個(gè)需求就顯的更加迫切,同樣也是非常的實(shí)用和合理。1.2 課程設(shè)計(jì)目a.掌握十字路口交通燈控制的設(shè)計(jì)原理,并能夠運(yùn)用vhdl編程語言編寫出實(shí)驗(yàn)程序,進(jìn)一步對(duì)所學(xué)的eda知識(shí)進(jìn)行掌握與實(shí)際應(yīng)用。b.學(xué)會(huì)在max+plus 軟件環(huán)境中仿真,熟悉軟件的基本操作和運(yùn)行環(huán)境。c.鍛煉自己獲取信息的能力,以及能夠獨(dú)立自主的思考和解決問題的能力。2、系統(tǒng)分析與總體方案2.1系統(tǒng)分析 通過分析可以知道,所要設(shè)計(jì)的十字路口交通燈控制電路要能夠使南北、東西各四個(gè)燈(紅、黃、綠、左轉(zhuǎn)),四

4、個(gè)燈能夠按順序依次亮滅。而且要求綠燈亮轉(zhuǎn)紅燈亮或者轉(zhuǎn)左轉(zhuǎn)燈亮之前要先轉(zhuǎn)黃燈亮5秒,左轉(zhuǎn)燈亮轉(zhuǎn)紅燈亮之前也要先轉(zhuǎn)黃燈亮5秒,紅燈亮可以直接轉(zhuǎn)綠燈或左轉(zhuǎn)燈亮(四種燈的循環(huán)順序如圖2.1所示)。還要求四種燈的點(diǎn)亮?xí)r間能夠以倒計(jì)時(shí)的形式顯示出來??梢杂胿hdl語言合理設(shè)計(jì)系統(tǒng)功能,使紅黃綠左轉(zhuǎn)燈的轉(zhuǎn)換有一個(gè)準(zhǔn)確的時(shí)間間隔和轉(zhuǎn)換順序。綠燈黃燈左轉(zhuǎn)燈黃燈紅燈圖2.1 四種燈的循環(huán)順序2.2 方案比較實(shí)現(xiàn)路口交通燈的方法很多,可以用標(biāo)準(zhǔn)邏輯器件、可變程序控制器和單片機(jī)等方案來實(shí)現(xiàn)。若用單片機(jī)來實(shí)現(xiàn)的話,模型可以由電源電路、單片機(jī)主控電路、無限收發(fā)控制電路和顯示電路四部分組成。在電源電路中,需要用到+5v的直

5、流穩(wěn)壓電源,無限收發(fā)控制電路和顯示電路應(yīng)由編碼芯片和數(shù)據(jù)發(fā)射模塊兩部分組成,主控電路的主要元件為at89c51。硬件設(shè)計(jì)完成后還要利用計(jì)算機(jī)軟件經(jīng)行軟件部分的設(shè)計(jì)才能夠?qū)崿F(xiàn)相應(yīng)的功能。雖然利用單片機(jī)系統(tǒng)設(shè)計(jì)的交通燈控制器相對(duì)來說比較穩(wěn)定,能夠完成較多功能的實(shí)現(xiàn),但這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上增加了功能修改和系統(tǒng)設(shè)計(jì)與調(diào)試的困難。相反,使用基于fpga的方法具有周期短、使用靈活、易于修改等明顯的優(yōu)點(diǎn)。而且,隨著fpga器件,設(shè)計(jì)語言和電子設(shè)計(jì)自動(dòng)化工具的發(fā)展和改進(jìn),越來越多的電子系統(tǒng)采用fpga來設(shè)計(jì)。未來使用fpga器件設(shè)計(jì)的產(chǎn)品將出現(xiàn)在各個(gè)領(lǐng)域。因此此次的交

6、通燈控制器將基于fpga的設(shè)計(jì)方案來實(shí)現(xiàn)所需要的功能。 2.3 設(shè)計(jì)的總體方案 根據(jù)設(shè)計(jì)要求和系統(tǒng)所具有功能,并參考相關(guān)的文獻(xiàn)資料經(jīng)行方案設(shè)計(jì)畫出如下所示的十字路口交通燈控制器系統(tǒng)框圖,及為設(shè)計(jì)的總體方案,框圖如下圖3.1所示:clk時(shí)鐘分頻模塊交通燈控制及計(jì)時(shí)模塊掃描顯示模塊led顯示數(shù)碼管位碼數(shù)碼管段碼圖2.2 系統(tǒng)的框圖3、硬件電路設(shè)計(jì)3.1分頻器設(shè)計(jì) 分頻器實(shí)現(xiàn)的是將高頻時(shí)鐘信號(hào)轉(zhuǎn)換成低頻時(shí)鐘信號(hào),用于觸發(fā)控制器、計(jì)數(shù)器和掃描顯示電路。具體實(shí)物模塊如圖: 圖3.1 分頻器模塊3.2 狀態(tài)控制電路設(shè)計(jì)狀態(tài)控制器的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值控制各方向上發(fā)光二極管的亮、滅,當(dāng)計(jì)時(shí)時(shí)間到達(dá),狀態(tài)

7、控制器就響應(yīng),自動(dòng)跳轉(zhuǎn)到下一個(gè)狀態(tài)。此外,當(dāng)檢測(cè)到特殊情況(emi =1)發(fā)生時(shí),無條件點(diǎn)亮紅燈的二極管(急救燈按下emi='1',則東西南北都亮紅燈,在這種狀態(tài)下原來的狀態(tài)必須保持,即東西南北方向定時(shí)時(shí)間保持不變。急救燈未按下或者按下后恢復(fù),則繼續(xù)計(jì)時(shí)(計(jì)時(shí)通過計(jì)數(shù)器ct),同時(shí)恢復(fù)東西南北原來燈的狀態(tài))。具體實(shí)物模塊如圖:圖3.2控制電路模塊3.3計(jì)數(shù)器設(shè)計(jì)這里需要的計(jì)數(shù)器的計(jì)數(shù)范圍為0-80。計(jì)到80后,下一個(gè)時(shí)鐘沿回復(fù)到0,開始下一輪計(jì)數(shù)。此外,當(dāng)檢測(cè)到特殊情況(emi =1)發(fā)生是,計(jì)數(shù)器暫停計(jì)數(shù),而系統(tǒng)復(fù)位信號(hào)reset則使計(jì)數(shù)器異步清零。圖3.3計(jì)數(shù)器模塊3.4譯

8、碼顯示電路設(shè)計(jì)根據(jù)狀態(tài)控制器所控制的狀態(tài)和計(jì)數(shù)器的計(jì)時(shí)時(shí)間,選擇當(dāng)前狀態(tài)下的顯示器,使顯示器輸出當(dāng)前狀態(tài)下的數(shù)碼管亮、滅指令,其中數(shù)碼管的顯示采用動(dòng)態(tài)掃描顯示。具體實(shí)物模塊如圖:圖3.4譯碼顯示電路模塊4、實(shí)驗(yàn)程序設(shè)計(jì)一個(gè)完整的vhdl語言程序通常包括實(shí)體(entity)、構(gòu)造體(architecture)、配置、包集合(package)和庫(library)5個(gè)部分組成。下面結(jié)合實(shí)際的程序來加以說明。4.1實(shí)體定義:library ieee;use ieee.std_logic_1164.all;entity traffic_light is port(clk : in std_logic;

9、 - 時(shí)鐘頻率為250khz. start : in std_logic; - 交通燈控制:'1' 開, '0' 關(guān). emi : in std_logic; - 急救燈控制,'1' 所有紅燈亮. ew_rled : out std_logic; -東西紅燈控制,'0' 開, '1' 關(guān). ew_gled : out std_logic; - 東西綠燈控制,'0' 開, '1' 關(guān). ew_yled : out std_logic; - 東西黃燈控制,'0' 開, &

10、#39;1' 關(guān). ew_turnled: out std_logic; - 東西左轉(zhuǎn)燈控制,'0' 開, '1' 關(guān) sn_rled : out std_logic; - 南北紅燈控制,'0' 開, '1' 關(guān) sn_gled : out std_logic; - 南北綠燈控制,'0'開, '1'關(guān) sn_yled : out std_logic; - 南北黃燈控制,'0' 開, '1' 關(guān) sn_turnled: out std_logic; - 南北左轉(zhuǎn)

11、燈控制,'0' 開, '1' 關(guān) l : out std_logic_vector(2 downto 0); -顯示器選取 dled : out std_logic_vector(7 downto 0); -顯示器數(shù)據(jù)輸出end traffic_light;4.2譯碼顯示: architecture control of traffic_light is type eastwest is (ew_red,ew_green,ew_yellow0,ew_yellow1,ew_turnl); type southnorth is (sn_red,sn_green,sn

12、_yellow0,sn_yellow1,sn_turnl); signal ew_state: eastwest; signal sn_state: southnorth; begin process(clk) function display(s:integer range 0 to 9) return std_logic_vector is variable result:std_logic_vector(7 downto 0); begin cases is when 0 => result:=x"fc"-0 when 1 => result:=x&quo

13、t;60"-1 when 2 => result:=x"da"-2 when 3 => result:=x"f2"-3 when 4 => result:=x"66"-4 when 5 => result:=x"b6"-5 when 6 => result:=x"be"-6 when 7 => result:=x"e0"-7 when 8 => result:=x"fe"-8 when 9 => r

14、esult:=x"f6"-9 when others => null; end case; return result;end display; 4.3狀態(tài)轉(zhuǎn)換: variable cnt:integer range 0 to 7; variable ct:integer range 0 to 5; variable ew_secondh,sn_secondh: integer range 0 to 8; variable ew_secondl,sn_secondl: integer range 0 to 9; begin if start='0' t

15、hen 初始化 dled<=x"00" ew_state<=ew_red; sn_state<=sn_green; ew_secondh:=8; ew_secondl:=0; sn_secondh:=5; sn_secondl:=0; ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<='1' sn_rled<='1' sn_gled<='0' sn_yled<='

16、1'sn_turnled<='1' elsif clk'event and clk='1' then - clk rising edge detection cnt:=cnt+1; if emi='1' then ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<='1' sn_rled<='0' sn_gled<='1' sn_yled<=

17、'1'sn_turnled<='1' else ct:=ct+1; case ew_state is when ew_red => ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<='1' - 東西向紅燈 when ew_green => ew_rled<='1' ew_gled<='0' ew_yled<='1' ew_turnled<

18、='1'- 東西向綠燈 when ew_yellow0 => ew_rled<='1' ew_gled<='1' ew_yled<='0'ew_turnled<='1' - 東西向黃燈 when ew_yellow1 => ew_rled<='1' ew_gled<='1' ew_yled<='0'ew_turnled<='1' -東西向黃燈 when ew_turnl => ew_tu

19、rnled<='0'ew_rled<='1' ew_gled<='1' ew_yled<='1' - 東西向左轉(zhuǎn)燈 when others => ew_rled<='0' ew_gled<='1' ew_yled<='1' ew_turnled<='1'- 東西向紅燈 end case; case sn_state is when sn_red => sn_rled<='0' sn_gl

20、ed<='1' sn_yled<='1' sn_turnled<='1' - 南北向紅燈 when sn_green => sn_rled<='1' sn_gled<='0' sn_yled<='1'sn_turnled<='1' - 南北向綠燈 when sn_yellow0 => sn_rled<='1' sn_gled<='1' sn_yled<='0'sn_

21、turnled<='1' - 南北向黃燈 when sn_yellow1 => sn_rled<='1' sn_gled<='1' sn_yled<='0'sn_turnled<='1' - 南北向黃燈 when sn_turnl=> sn_turnled<='0'sn_rled<='1' sn_gled<='1' sn_yled<='1' - 南北向左轉(zhuǎn)燈 when others =&

22、gt; sn_rled<='0' sn_gled<='1' sn_yled<='1'sn_turnled<='1' - 南北向紅燈 end case; end if; if ct=5 then ct:=0; if ew_secondh=0 and ew_secondl=0 then 狀態(tài)結(jié)束 case ew_state is 東西向當(dāng)前狀態(tài) when ew_red => ew_state<=ew_green; ew_secondh:=5; ew_secondl:=0; -下一狀態(tài)的綠燈 when

23、 ew_green => ew_state<=ew_yellow0; ew_secondh:=0; ew_secondl:=5; -下一狀態(tài)的黃燈 when ew_yellow0 => ew_state<=ew_turnl; ew_secondh:=2; ew_secondl:=0; - 下一狀態(tài)的左轉(zhuǎn)燈 when ew_turnl =>ew_state<=ew_yellow1; ew_secondh:=0; ew_secondl:=5; - 下一狀態(tài)的黃燈 when ew_yellow1 =>ew_state<=ew_red; ew_secon

24、dh:=8; ew_secondl:=0; - 下一狀態(tài)的紅燈 when others => ew_state<=ew_red; ew_secondh:=8; ew_secondl:=0; - 下一狀態(tài)的紅燈 end case; elsif ew_secondl=0 then ew_secondl:=9; ew_secondh:=ew_secondh-1; else ew_secondl:=ew_s_secondl-1; end if; if sn_secondh=0 and sn_secondl=0 then 狀態(tài)結(jié)束 case sn_state is 南北向當(dāng)前狀態(tài) when

25、sn_red => sn_state<=sn_green; sn_secondh:=5; sn_secondl:=0; - 下一狀態(tài)的綠燈 when sn_green => sn_state<=sn_yellow0; sn_secondh:=0; sn_secondl:=5; -下一狀態(tài)的黃燈 when sn_yellow0 => sn_state<=sn_turnl; sn_secondh:=2; sn_secondl:=0; -下一狀態(tài)的左轉(zhuǎn)燈 when sn_turnl =>sn_state<=sn_yellow1; sn_secondh:

26、=0; sn_secondl:=5; -下一狀態(tài)的黃燈 when sn_yellow1 =>sn_state<=sn_red; sn_secondh:=8; sn_secondl:=0; -下一狀態(tài)的紅燈 when others => sn_state<=sn_red; sn_secondh:=8; sn_secondl:=0; -下一狀態(tài)的紅燈 end case; elsif sn_secondl=0 then sn_secondl:=9; sn_secondh:=sn_secondh-1; else sn_secondl:=sn_secondl-1; end if;

27、 end if;4.4顯示器片選: case cnt is 顯示時(shí)間 when 0 => l<="000" dled<=display(ew_secondh); when 1 => l<="001" dled<=display(ew_secondl); when 2 => l<="010" dled<=x"00" when 3 => l<="011" dled<=x"00" when 4 => l&

28、lt;="100" dled<=x"00" when 5 => l<="101" dled<=x"00" when 6 => l<="110" dled<=display(sn_secondh); when 7 => l<="111" dled<=display(sn_secondl); end case; end if; end process;end control;5、程序仿真與分析5.1 仿真結(jié)果利用max+

29、plus ii軟件對(duì)本程序進(jìn)行編譯,生成了可以進(jìn)行仿真定時(shí)分析以及下載到可編程器件的相關(guān)文件。仿真結(jié)果如圖5.1所示:圖5.1 仿真結(jié)果5.2 仿真結(jié)果分析通過設(shè)定clk值以及start和emi的初值,就可以得到如上所示的仿真波形圖。由仿真波形圖可以看出波形是由start初值信號(hào)觸發(fā)而顯示出各個(gè)狀態(tài)的。emi高電平信號(hào)輸入時(shí),所有交通燈都變?yōu)榧t燈狀態(tài)(符合任務(wù)書的要求)。由仿真波形圖還可以清楚的看出各時(shí)間段每個(gè)交通燈的狀態(tài)。要得到正確的仿真波形圖就不許設(shè)定合適的時(shí)間信號(hào)clk值。如果clk值設(shè)置的太小則交通燈狀態(tài)變化得太快無法分辨,如果clk值設(shè)置得太大則交通燈狀態(tài)轉(zhuǎn)換緩慢,效果不明顯。其次,

30、要設(shè)定start初值,如果沒有設(shè)定start初值就不可能觸發(fā)而得到仿真圖。最后,就是要設(shè)置一emi高電平信號(hào)來檢測(cè)緊急情況下的交通燈的狀態(tài)。5.3硬件運(yùn)行結(jié)果 將程序下載到實(shí)驗(yàn)板上,經(jīng)過硬件測(cè)試達(dá)到了設(shè)計(jì)要求,實(shí)現(xiàn)了交通燈控制器的基本功能,下圖為運(yùn)行結(jié)果圖:6、心得體會(huì)eda課程設(shè)計(jì)就要結(jié)束了,這次課程設(shè)計(jì)歷時(shí)近二個(gè)星期,通過這兩個(gè)星期的學(xué)習(xí),發(fā)現(xiàn)了自己的很多不足,發(fā)現(xiàn)了很多知識(shí)上的漏洞。同時(shí)也看到了自己的實(shí)踐經(jīng)驗(yàn)還是比較缺乏,理論聯(lián)系實(shí)際的能力還急需提高。這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的eda技術(shù)的理論知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,更令我的創(chuàng)造性思維得到拓展。在課程設(shè)計(jì)中一

31、個(gè)人的力量是遠(yuǎn)遠(yuǎn)不夠的,真正的完成任務(wù)需要共同的智慧與勞動(dòng),團(tuán)結(jié)協(xié)作是我們成功的一項(xiàng)非常重要的保證。在這個(gè)過程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。還有一點(diǎn)是我們做任何事情都無法缺少的,那就是細(xì)心認(rèn)真。此次設(shè)計(jì)我們就深深地體會(huì)到了,由于編程的時(shí)候沒有做到足夠的細(xì)心,導(dǎo)致一串代碼弄混了。但是密密麻麻的英文字母混在一起,我始終沒有發(fā)現(xiàn)。最終在調(diào)試的時(shí)候,就出現(xiàn)了問題。只知道出現(xiàn)了問題,就是不知道到問題的根源在哪里,好長(zhǎng)時(shí)間都沒有找出問題的所在。這也讓我真正的明白了,科學(xué)的嚴(yán)謹(jǐn)性,它不允許出半點(diǎn)差錯(cuò),否則后果會(huì)是比較麻煩的。做其他事情也一樣,都需要我們付出足夠的認(rèn)真去對(duì)待,

32、才能順利的完成。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動(dòng)是人類生存生活永恒不變的話題。雖然我這次做的課程設(shè)計(jì)不是非常的復(fù)雜,但在設(shè)計(jì)和仿真的過程中,我們也遇到了不少的困難,回首整個(gè)過程,卻受益匪淺。對(duì)我而言,知識(shí)上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個(gè)人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財(cái)富,經(jīng)歷是一份擁有。這次課程設(shè)計(jì)必將成為我人生旅途上一個(gè)非常美好的回憶!參考文獻(xiàn)1 閻石 主編,數(shù)字電子技術(shù)基礎(chǔ),高等教育出版社,19982 譚會(huì)生等主編,eda技術(shù)及應(yīng)用,西安電子科技大學(xué)出版社,20013 廖裕評(píng)

33、等主編,cpld數(shù)字電路設(shè)計(jì)使用max+plus入門篇,清華大學(xué)出版社,20014 馮濤等主編,可編程邏輯器件開發(fā)技術(shù):max+plus入門與提高,人民郵電出版社,20025 楊崇志,特殊新型電子元件手冊(cè),遼寧科學(xué)技術(shù)出版社,19996 彭介華,電子技術(shù)課程設(shè)計(jì)指導(dǎo)高等教育出版社.2000年出版.7 mark zwolinski, digital system design with vhdl, 電子工業(yè)出版社,20028 alan b. marcovitz introduction to logic design, 電子工業(yè)出版社,2002附錄a、仿真時(shí)序波形圖附錄b、vhdl源程序代碼li

34、brary ieee;use ieee.std_logic_1164.all;entity traffic_light is port(clk : in std_logic; - 時(shí)鐘頻率為250khz. start : in std_logic; - 交通燈控制:'1' 開, '0' 關(guān). emi : in std_logic; - 急救燈控制,'1' 所有紅燈亮. ew_rled : out std_logic; -東西紅燈控制,'0' 開, '1' 關(guān). ew_gled : out std_logic; -

35、東西綠燈控制,'0' 開, '1' 關(guān). ew_yled : out std_logic; - 東西黃燈控制,'0' 開, '1' 關(guān). ew_turnled: out std_logic; - 東西左轉(zhuǎn)燈控制,'0' 開, '1' 關(guān) sn_rled : out std_logic; - 南北紅燈控制,'0' 開, '1' 關(guān) sn_gled : out std_logic; - 南北綠燈控制,'0'開, '1'關(guān) sn_yled :

36、 out std_logic; - 南北黃燈控制,'0' 開, '1' 關(guān) sn_turnled: out std_logic; - 南北左轉(zhuǎn)燈控制,'0' 開, '1' 關(guān) l : out std_logic_vector(2 downto 0); -顯示器選取 dled : out std_logic_vector(7 downto 0); -顯示器數(shù)據(jù)輸出end traffic_light;architecture control of traffic_light is type eastwest is (ew_red,ew

37、_green,ew_yellow0,ew_yellow1,ew_turnl); type southnorth is (sn_red,sn_green,sn_yellow0,sn_yellow1,sn_turnl); signal ew_state: eastwest; signal sn_state: southnorth; begin process(clk) function display(s:integer range 0 to 9) return std_logic_vector is variable result:std_logic_vector(7 downto 0); be

38、gin cases is when 0 => result:=x"fc"-0 when 1 => result:=x"60"-1 when 2 => result:=x"da"-2 when 3 => result:=x"f2"-3 when 4 => result:=x"66"-4 when 5 => result:=x"b6"-5 when 6 => result:=x"be"-6 when 7 => r

39、esult:=x"e0"-7 when 8 => result:=x"fe"-8 when 9 => result:=x"f6"-9 when others => null; end case; return result;end display; variable cnt:integer range 0 to 7; variable ct:integer range 0 to 5; variable ew_secondh,sn_secondh: integer range 0 to 8; variable ew_s

40、econdl,sn_secondl: integer range 0 to 9; begin if start='0' then 初始化 dled<=x"00" ew_state<=ew_red; sn_state<=sn_green; ew_secondh:=8; ew_secondl:=0; sn_secondh:=5; sn_secondl:=0; ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<='1&#

41、39; sn_rled<='1' sn_gled<='0' sn_yled<='1'sn_turnled<='1' elsif clk'event and clk='1' then - clk rising edge detection cnt:=cnt+1; if emi='1' then ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<=

42、9;1' sn_rled<='0' sn_gled<='1' sn_yled<='1'sn_turnled<='1' else ct:=ct+1; case ew_state is when ew_red => ew_rled<='0' ew_gled<='1' ew_yled<='1'ew_turnled<='1' - 東西向紅燈 when ew_green => ew_rled<='

43、1' ew_gled<='0' ew_yled<='1' ew_turnled<='1'- 東西向綠燈 when ew_yellow0 => ew_rled<='1' ew_gled<='1' ew_yled<='0'ew_turnled<='1' - 東西向黃燈 when ew_yellow1 => ew_rled<='1' ew_gled<='1' ew_yled<=&

44、#39;0'ew_turnled<='1' -東西向黃燈 when ew_turnl => ew_turnled<='0'ew_rled<='1' ew_gled<='1' ew_yled<='1' - 東西向左轉(zhuǎn)燈 when others => ew_rled<='0' ew_gled<='1' ew_yled<='1' ew_turnled<='1'- 東西向紅燈 end c

45、ase; case sn_state is when sn_red => sn_rled<='0' sn_gled<='1' sn_yled<='1' sn_turnled<='1' - 南北向紅燈 when sn_green => sn_rled<='1' sn_gled<='0' sn_yled<='1'sn_turnled<='1' - 南北向綠燈 when sn_yellow0 => sn_rl

46、ed<='1' sn_gled<='1' sn_yled<='0'sn_turnled<='1' - 南北向黃燈 when sn_yellow1 => sn_rled<='1' sn_gled<='1' sn_yled<='0'sn_turnled<='1' - 南北向黃燈 when sn_turnl=> sn_turnled<='0'sn_rled<='1' sn

47、_gled<='1' sn_yled<='1' - 南北向左轉(zhuǎn)燈 when others => sn_rled<='0' sn_gled<='1' sn_yled<='1'sn_turnled<='1' - 南北向紅燈 end case; end if; if ct=5 then ct:=0; if ew_secondh=0 and ew_secondl=0 then 狀態(tài)結(jié)束 case ew_state is 東西向當(dāng)前狀態(tài) when ew_red => ew_state<=ew_green; ew_secondh:=5; ew_secondl:=0; -下一狀態(tài)的綠燈 when ew_green => ew_state<=ew_yellow0; ew_secondh:=0; ew_secondl:=5; -下一狀態(tài)的黃燈 when ew_yellow0 => ew_state<=ew_turnl; ew_secondh:=2; ew_secondl:=0; - 下一狀態(tài)的左轉(zhuǎn)燈 when ew_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論