<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          作者: 時間:2016-10-16 來源:網(wǎng)絡(luò) 收藏

          傳統(tǒng)的控制電路的是基于中、小規(guī)模集成電路,電路元件多、焊接復(fù)雜、故障率高、可靠性低,而且控制系統(tǒng)的功能擴(kuò)展及調(diào)試都需要硬件電路的支持,為日常維護(hù)和管理增加了難度。目前很多城市的還是應(yīng)用傳統(tǒng)的電路,一旦出現(xiàn)故障,不能及時維修和處理,勢必會造成道路的交通混亂。通過技術(shù)的改進(jìn),采用基于EDA技術(shù)的交通信號燈控制電路彌補(bǔ)了傳統(tǒng)中的缺點(diǎn),通過VHDL語言編寫系統(tǒng)控制程序,利用軟件控制整個系統(tǒng)的硬件電路,還可以利用EDA集成開發(fā)環(huán)境對交通信號燈的設(shè)計(jì)進(jìn)行,驗(yàn)證設(shè)計(jì)結(jié)果是否。改進(jìn)后的交通信號燈電路組成元器件少,可靠性高,操作簡單,可擴(kuò)展功能。

          本文引用地址:http://www.ex-cimer.com/article/201610/308041.htm

          1 交通信號燈控制電路

          1.1 交通信號燈工作原理

          基于FPGA的交通信號燈控制電路主要用于甲乙兩條車道匯合點(diǎn)形成的十字交叉路口,甲乙兩車道各有一組紅、黃、綠燈和倒計(jì)時顯示器,用以指揮車輛和行人有序的通行。兩組紅綠燈分別對兩個方向上的交通運(yùn)行狀態(tài)進(jìn)行管理,紅燈亮表示該道路禁止通行,黃燈表示停車,綠燈表示可以通行;倒計(jì)時顯示器是用來顯示允許通行或禁止通行的時間,以倒計(jì)時方式顯示交通燈閃亮持續(xù)時間。為每個燈的閃亮狀態(tài)設(shè)置一個初始值,指示燈狀態(tài)改變后,開始按照初始值倒計(jì)時,倒計(jì)時歸零后,燈的狀態(tài)將會改變至下一個狀態(tài)。交通燈兩車道的指示燈閃亮狀態(tài)是相關(guān)的,每個方向的燈閃亮狀態(tài)影響著另一個方向的指示燈閃亮狀態(tài),這樣才能夠協(xié)調(diào)兩個方向的車流。甲乙兩車道交通燈工作狀態(tài)如表1所示,其中“1”代表點(diǎn)亮,“0”代表熄滅。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          當(dāng)甲車道綠燈亮?xí)r,乙車道對應(yīng)紅燈亮,由綠燈轉(zhuǎn)換紅燈的過渡階段黃燈亮。同理,乙車道綠燈亮?xí)r,甲車道的交通燈也遵循此規(guī)則。當(dāng)出現(xiàn)特殊情況時,各方向均亮紅燈,倒計(jì)時停止,特殊運(yùn)行狀態(tài)結(jié)束后,控制器恢復(fù)原來狀態(tài),繼續(xù)運(yùn)行。

          1.2 交通信號燈電路結(jié)構(gòu)

          根據(jù)交叉路口交通燈工作原理,圖1為交通信號燈控制電路的原理圖。該電路包含了1個FPGA芯片,2個七段LED數(shù)碼顯示管,6個發(fā)光二極管分別表示甲乙兩車道上指示燈,以及一個緊急按鈕。FPGA芯片采用EP1C12Q240C8,作為系統(tǒng)總體控制部分;利用外接發(fā)光二極管模擬交通信號燈的紅、黃、綠,控制甲乙兩車道車輛運(yùn)行狀態(tài);2個數(shù)碼管顯示交通信號燈閃亮持續(xù)時間,并采用動態(tài)掃描方式。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          2 交通信號燈控制電路的VHDL設(shè)計(jì)與

          十字交叉路口的交通燈指揮行人和車輛的安全運(yùn)行,在甲、乙車道的交叉路口設(shè)計(jì)一個交通控制,根據(jù)“紅燈停,綠燈行,黃燈等待”的交通規(guī)則,如下功能:

          1)甲車道和乙車道的車輛交替運(yùn)行,每次通行時間設(shè)為30 s;

          2)每次黃燈先亮5 s,才能變換運(yùn)行車道;

          3)黃燈亮?xí)r,要求每秒鐘閃亮一次;

          4)信號燈點(diǎn)亮?xí)r間可預(yù)置;

          5)特殊情況下可通過開關(guān)單獨(dú)控制,顯示器停止計(jì)時并閃爍顯示。

          通過對電路實(shí)現(xiàn)功能分析,整個系統(tǒng)主要由分頻模塊、狀態(tài)控制模塊、譯碼模塊以及顯示電路構(gòu)成。如圖2所示,其中clk為系統(tǒng)外加時鐘信號,jin為特殊狀態(tài)禁止通行信號。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          2.1 分頻模塊

          分頻模塊主要是把基準(zhǔn)時鐘信號轉(zhuǎn)換為激勵信號,由于系統(tǒng)的外接時鐘信號設(shè)為1 kHz,而系統(tǒng)計(jì)時所需時鐘信號為1 Hz,因此首先通過分頻器把外部高頻率的時鐘信號轉(zhuǎn)換為內(nèi)部需要的激勵信號,驅(qū)動狀態(tài)控制模塊工作。所謂分頻器實(shí)際上就是一個計(jì)數(shù)器,計(jì)數(shù)器對1 kHz信號進(jìn)行計(jì)數(shù),每當(dāng)999時輸出一個脈沖信號,從而得到1 Hz時鐘信號,其波形如圖3所示。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          2.2 狀態(tài)控制模塊

          狀態(tài)控制模塊是本系統(tǒng)的核心模塊,它的作用是根據(jù)計(jì)時賦值標(biāo)志位和時鐘信號,判斷、調(diào)整和控制系統(tǒng)的工作狀態(tài),提供適當(dāng)?shù)闹甘緹艨刂菩盘?。其中對?yīng)輸出的工作狀態(tài)有4種,分別是st1、st2、st3和st4。控制甲、乙車道的紅、黃、綠燈的信號分別用ra、ya、ga和rb、yb、gb表示,其值為‘1’表示燈亮,為‘0’表示燈滅。

          狀態(tài)控制模塊在脈沖信號作用下分別對甲乙車道的計(jì)數(shù)進(jìn)行減1計(jì)數(shù),并監(jiān)測計(jì)數(shù)器的計(jì)數(shù)值,當(dāng)計(jì)數(shù)器到臨界計(jì)數(shù)值時,在下一秒脈沖為計(jì)數(shù)器裝載新的計(jì)數(shù)初值,同時改變車道的指示燈狀態(tài)。當(dāng)出現(xiàn)特殊情況時,控制按鍵輸入禁止通行信號,即jin為‘1’,計(jì)數(shù)器暫停計(jì)數(shù),各方向車輛都處于禁止運(yùn)行狀態(tài)。各狀態(tài)及特殊情況指示燈工作仿真波形如圖4所示。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          當(dāng)工作狀態(tài)為st1時ra=‘0’、ya=‘0’、ga=‘1’,即甲車道綠燈亮;rb=‘1’、yb=‘0’、gb=‘0’,即乙車道紅燈亮;此時計(jì)數(shù)器qh=3,ql=0,即30s。當(dāng)工作狀態(tài)為st2時ra=‘0’、ya=‘1’、ga=‘0’,即甲車道黃燈亮;rb=‘0’、yb=‘1’、gb=‘0’,即乙車道黃燈亮;此時計(jì)數(shù)器qh=0,ql=5,即5s。同理,當(dāng)工作狀態(tài)處于st3時,甲車道紅燈亮,乙車道綠燈亮,計(jì)數(shù)器置初值30;當(dāng)工作狀態(tài)處于st4時,甲乙車道都點(diǎn)亮黃燈,計(jì)數(shù)器置初值5。在特殊情況jin=‘1’時,ra=‘1’,rb=‘1’,此時甲乙車道紅燈都點(diǎn)亮,禁止各方向車輛通行,同時計(jì)數(shù)器停止計(jì)數(shù)。

          2.3 譯碼模塊

          譯碼模塊的作用是根據(jù)根據(jù)狀態(tài)控制模塊中設(shè)置的計(jì)時初值顯示交通燈的閃亮持續(xù)時間,并將燈亮?xí)r間以倒計(jì)時的形式顯示出來。即將狀態(tài)控制模塊中計(jì)數(shù)器計(jì)數(shù)位各數(shù)值進(jìn)行譯碼,輸出譯碼信號,驅(qū)動七段數(shù)碼管,由數(shù)碼管顯示器顯示當(dāng)前計(jì)數(shù)值。當(dāng)顯示黃燈點(diǎn)亮持續(xù)時間和特殊情況時數(shù)碼管顯示器實(shí)現(xiàn)閃爍顯示功能。

          譯碼模塊根據(jù)七段數(shù)碼管顯示控制規(guī)則,將狀態(tài)控制模塊計(jì)數(shù)器中數(shù)值按規(guī)則輸入譯碼信號,驅(qū)動數(shù)碼管各控制端。其中數(shù)碼管各顯示控制信號與數(shù)值顯示關(guān)系如表2所示。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          譯碼模塊仿真波形如圖5。其中one存放計(jì)數(shù)器個位數(shù)值,ten存放計(jì)數(shù)器十位數(shù)值,seg7_1,seg7_2分別代表個位和十位數(shù)碼管顯示控制信號。根據(jù)計(jì)數(shù)器存放數(shù)值,seg7_ 1,seg7_2分別輸出對應(yīng)控制信號,以便驅(qū)動數(shù)碼管顯示對應(yīng)數(shù)值,例如:當(dāng)one=6時seg7_1輸出“1011111”信號驅(qū)動數(shù)碼管顯示數(shù)字6;當(dāng)ten=0時seg7_2輸出“1111110”信號驅(qū)動數(shù)碼管顯示數(shù)字0。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          2.4 交通信號燈整體電路仿真分析

          交通信號燈控制電路仿真波形如圖6所示。

          基于EDA的交通信號燈電路的設(shè)計(jì)與仿真

          系統(tǒng)輸入的基準(zhǔn)時鐘脈沖Clk=1 kHz,經(jīng)過分頻后得到系統(tǒng)電路需要的時鐘激勵信號1 Hz。當(dāng)工作狀態(tài)stx=st1時,甲車道綠燈信號ga=‘1’,乙車道紅燈信號rb=‘1’,并且計(jì)數(shù)器置入初始值30(qh=3,ql=0),數(shù)碼管開始倒計(jì)時顯示時間,此時甲車道綠燈亮,允許車輛通行30s,乙車道紅燈亮,禁止車輛通行;當(dāng)工作狀態(tài)stx=st2時,甲車道黃燈信號ya=‘1’,乙車道黃燈信號yb=‘1’,并且計(jì)數(shù)器置入初始值5(qh=0,ql=5),數(shù)碼管開始倒計(jì)時閃爍顯示時間,此時甲乙兩車道黃燈亮,兩車道車輛運(yùn)行狀態(tài)進(jìn)入轉(zhuǎn)換階段;當(dāng)工作狀態(tài)stx=st3時,甲車道紅燈信號ra=‘1’,乙車道綠燈信號gb=‘1’,并且計(jì)數(shù)器置入初始值30,數(shù)碼管開始倒計(jì)時顯示時間,此時甲車道紅燈亮,禁止車輛通行,乙車道綠燈亮,允許車輛通行30s;當(dāng)工作狀態(tài)stx=st4時如同工作狀態(tài)st2。

          如圖中所示,在正常運(yùn)行時出現(xiàn)特殊情況時,啟動特殊控制開關(guān),使禁止通行信號jin=‘1’,此時ra=‘1’,rb=‘1’,甲乙兩車道都亮紅燈,禁止各方向車輛運(yùn)行,此時數(shù)碼管停止計(jì)時并閃爍顯示,當(dāng)特殊狀態(tài)結(jié)束后,恢復(fù)正常運(yùn)行,數(shù)碼管繼續(xù)計(jì)時顯示。

          3 結(jié)束語

          基于EDA技術(shù)的交通信號燈控制電路設(shè)計(jì)改變了基于單片機(jī)的傳統(tǒng)交通燈不穩(wěn)定和不利于擴(kuò)展的缺點(diǎn),突破了單片機(jī)的種種限制。通過VHDL語言編程,對交通信號燈控制電路做了改進(jìn):增加了指示燈倒計(jì)時和閃爍提醒功能,以便讓司機(jī)控制過交叉路口的車速,使交通更加安全有序;增加了全紅燈的特殊狀態(tài),保證了緊急情況下公務(wù)車能順利通行。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();