楊 東,王學春
(黃河科技學院 嵌入式系統(tǒng)應用技術實驗室,河南 鄭州450063)
傳統(tǒng)的交通信號燈控制電路的設計是基于中、小規(guī)模集成電路,電路元件多、焊接復雜、故障率高、可靠性低,而且控制系統(tǒng)的功能擴展及調試都需要硬件電路的支持,為日常維護和管理增加了難度。目前很多城市的交通信號燈還是應用傳統(tǒng)的電路設計,一旦交通信號燈出現(xiàn)故障,不能及時維修和處理,勢必會造成道路的交通混亂。通過技術的改進,采用基于EDA技術的交通信號燈控制電路彌補了傳統(tǒng)設計中的缺點,通過VHDL語言編寫系統(tǒng)控制程序,利用軟件控制整個系統(tǒng)的硬件電路,還可以利用EDA集成開發(fā)環(huán)境對交通信號燈的設計進行仿真,驗證設計結果是否實現(xiàn)。改進后的交通信號燈電路組成元器件少,可靠性高,操作簡單,實現(xiàn)可擴展功能[1]。
基于FPGA的交通信號燈控制電路主要用于甲乙兩條車道匯合點形成的十字交叉路口,甲乙兩車道各有一組紅、黃、綠燈和倒計時顯示器,用以指揮車輛和行人有序的通行。兩組紅綠燈分別對兩個方向上的交通運行狀態(tài)進行管理,紅燈亮表示該道路禁止通行,黃燈表示停車,綠燈表示可以通行;倒計時顯示器是用來顯示允許通行或禁止通行的時間,以倒計時方式顯示交通燈閃亮持續(xù)時間[2]。為每個燈的閃亮狀態(tài)設置一個初始值,指示燈狀態(tài)改變后,開始按照初始值倒計時,倒計時歸零后,燈的狀態(tài)將會改變至下一個狀態(tài)。交通燈兩車道的指示燈閃亮狀態(tài)是相關的,每個方向的燈閃亮狀態(tài)影響著另一個方向的指示燈閃亮狀態(tài),這樣才能夠協(xié)調兩個方向的車流。甲乙兩車道交通燈工作狀態(tài)如表1所示,其中“1”代表點亮,“0”代表熄滅。
表1 交通燈工作狀態(tài)Tab.1 The traffic light state
當甲車道綠燈亮時,乙車道對應紅燈亮,由綠燈轉換紅燈的過渡階段黃燈亮。同理,乙車道綠燈亮時,甲車道的交通燈也遵循此規(guī)則。當出現(xiàn)特殊情況時,各方向均亮紅燈,倒計時停止,特殊運行狀態(tài)結束后,控制器恢復原來狀態(tài),繼續(xù)運行[3]。
根據(jù)交叉路口交通燈工作原理,圖1為交通信號燈控制電路的原理圖。該電路包含了1個FPGA芯片,2個七段LED數(shù)碼顯示管,6個發(fā)光二極管分別表示甲乙兩車道上指示燈,以及一個緊急按鈕。FPGA芯片采用EP1C12Q240C8,作為系統(tǒng)總體控制部分;利用外接發(fā)光二極管模擬交通信號燈的紅、黃、綠,控制甲乙兩車道車輛運行狀態(tài);2個數(shù)碼管顯示交通信號燈閃亮持續(xù)時間,并采用動態(tài)掃描方式[4]。
圖1 交通燈控制電路原理圖Fig.1 The traffic light control circuit diagram
十字交叉路口的交通燈指揮行人和車輛的安全運行,在甲、乙車道的交叉路口設計一個交通控制,根據(jù)“紅燈停,綠燈行,黃燈等待”的交通規(guī)則,實現(xiàn)如下功能:
1)甲車道和乙車道的車輛交替運行,每次通行時間設為30 s;
2)每次黃燈先亮5 s,才能變換運行車道;
3)黃燈亮時,要求每秒鐘閃亮一次;
4)信號燈點亮時間可預置;
5)特殊情況下可通過開關單獨控制,顯示器停止計時并閃爍顯示。
通過對電路實現(xiàn)功能分析,整個系統(tǒng)主要由分頻模塊、狀態(tài)控制模塊、譯碼模塊以及顯示電路構成。如圖2所示,其中clk為系統(tǒng)外加時鐘信號,jin為特殊狀態(tài)禁止通行信號。
圖2 交通燈系統(tǒng)模塊圖Fig.2 Block the traffic light system
分頻模塊主要是把基準時鐘信號轉換為激勵信號,由于系統(tǒng)的外接時鐘信號設為1 kHz,而系統(tǒng)計時所需時鐘信號為1 Hz,因此首先通過分頻器把外部高頻率的時鐘信號轉換為內部需要的激勵信號,驅動狀態(tài)控制模塊工作。所謂分頻器實際上就是一個計數(shù)器,計數(shù)器對1 kHz信號進行計數(shù),每當999時輸出一個脈沖信號,從而得到1 Hz時鐘信號,其仿真波形如圖3所示。
圖3 分頻模塊仿真波形Fig.3 Frequency module simulation waveform
狀態(tài)控制模塊是本系統(tǒng)的核心模塊,它的作用是根據(jù)計時賦值標志位和時鐘信號,判斷、調整和控制系統(tǒng)的工作狀態(tài),提供適當?shù)闹甘緹艨刂菩盘?。其中對應輸出的工作狀態(tài)有 4種,分別是 st1、st2、st3和 st4??刂萍?、乙車道的紅、黃、綠燈的信號分別用 ra、ya、ga 和 rb、yb、gb 表示,其值為‘1’表示燈亮,為‘0’表示燈滅。
狀態(tài)控制模塊在脈沖信號作用下分別對甲乙車道的計數(shù)進行減1計數(shù),并監(jiān)測計數(shù)器的計數(shù)值,當計數(shù)器到臨界計數(shù)值時,在下一秒脈沖為計數(shù)器裝載新的計數(shù)初值,同時改變車道的指示燈狀態(tài)。當出現(xiàn)特殊情況時,控制按鍵輸入禁止通行信號,即jin為‘1’,計數(shù)器暫停計數(shù),各方向車輛都處于禁止運行狀態(tài)。各狀態(tài)及特殊情況指示燈工作仿真波形如圖4所示。
圖4 控制模塊仿真波形Fig.4 The simulation waveform control module
當工作狀態(tài)為 st1 時 ra=’0’、ya=’0’、ga=’1’, 即甲車道綠燈亮;rb=’1’、yb=’0’、gb=’0’,即乙車道紅燈亮;此時計數(shù)器 qh=3,ql=0, 即 30s。 當工作狀態(tài)為 st2 時 ra=’0’、ya=’1’、ga=’0’,即甲車道黃燈亮;rb=’0’、yb=’1’、gb=’0’,即乙車道黃燈亮;此時計數(shù)器qh=0,ql=5,即5s。同理,當工作狀態(tài)處于st3時,甲車道紅燈亮,乙車道綠燈亮,計數(shù)器置初值30;當工作狀態(tài)處于st4時,甲乙車道都點亮黃燈,計數(shù)器置初值5。在特殊情況 jin=’1’時,ra=’1’,rb=’1’,此時甲乙車道紅燈都點亮,禁止各方向車輛通行,同時計數(shù)器停止計數(shù)[5]。
譯碼模塊的作用是根據(jù)根據(jù)狀態(tài)控制模塊中設置的計時初值顯示交通燈的閃亮持續(xù)時間,并將燈亮時間以倒計時的形式顯示出來。即將狀態(tài)控制模塊中計數(shù)器計數(shù)位各數(shù)值進行譯碼,輸出譯碼信號,驅動七段數(shù)碼管,由數(shù)碼管顯示器顯示當前計數(shù)值。當顯示黃燈點亮持續(xù)時間和特殊情況時數(shù)碼管顯示器實現(xiàn)閃爍顯示功能[6]。
譯碼模塊根據(jù)七段數(shù)碼管顯示控制規(guī)則,將狀態(tài)控制模塊計數(shù)器中數(shù)值按規(guī)則輸入譯碼信號,驅動數(shù)碼管各控制端。其中數(shù)碼管各顯示控制信號與數(shù)值顯示關系如表2所示。
譯碼模塊仿真波形如圖5。其中one存放計數(shù)器個位數(shù)值,ten存放計數(shù)器十位數(shù)值,seg7_1,seg7_2分別代表個位和十位數(shù)碼管顯示控制信號。根據(jù)計數(shù)器存放數(shù)值,seg7_1,seg7_2分別輸出對應控制信號,以便驅動數(shù)碼管顯示對應數(shù)值,例如:當one=6時seg7_1輸出“1011111”信號驅動數(shù)碼管顯示數(shù)字6;當ten=0時seg7_2輸出“1111110”信號驅動數(shù)碼管顯示數(shù)字0。
表2 數(shù)碼管顯示對應關系Tab.2 Digital tube display corresponding relationship
交通信號燈控制電路仿真波形如圖6所示。
圖6 交通燈時序仿真波形Fig.6 The traffic light timing simulation waveform
系統(tǒng)輸入的基準時鐘脈沖Clk=1 kHz,經過分頻后得到系統(tǒng)電路需要的時鐘激勵信號1 Hz。當工作狀態(tài)stx=st1時,甲車道綠燈信號 ga=’1’,乙車道紅燈信號 rb=’1’,并且計數(shù)器置入初始值30(qh=3,ql=0),數(shù)碼管開始倒計時顯示時間,此時甲車道綠燈亮,允許車輛通行30s,乙車道紅燈亮,禁止車輛通行;當工作狀態(tài)stx=st2時,甲車道黃燈信號ya=’1’,乙車道黃燈信號yb=’1’,并且計數(shù)器置入初始值5(qh=0,ql=5),數(shù)碼管開始倒計時閃爍顯示時間,此時甲乙兩車道黃燈亮,兩車道車輛運行狀態(tài)進入轉換階段;當工作狀態(tài)stx=st3時,甲車道紅燈信號 ra=’1’,乙車道綠燈信號gb=’1’,并且計數(shù)器置入初始值30,數(shù)碼管開始倒計時顯示時間,此時甲車道紅燈亮,禁止車輛通行,乙車道綠燈亮,允許車輛通行30s;當工作狀態(tài)stx=st4時如同工作狀態(tài)st2。
如圖中所示,在正常運行時出現(xiàn)特殊情況時,啟動特殊控制開關,使禁止通行信號 jin=’1’,此時 ra=’1’,rb=’1’,甲乙兩車道都亮紅燈,禁止各方向車輛運行,此時數(shù)碼管停止計時并閃爍顯示,當特殊狀態(tài)結束后[7],恢復正常運行,數(shù)碼管繼續(xù)計時顯示。
基于EDA技術的交通信號燈控制電路設計改變了基于單片機的傳統(tǒng)交通燈不穩(wěn)定和不利于擴展的缺點,突破了單片機的種種限制。通過VHDL語言編程,對交通信號燈控制電路做了改進:增加了指示燈倒計時和閃爍提醒功能,以便讓司機控制過交叉路口的車速,使交通更加安全有序;增加了全紅燈的特殊狀態(tài),保證了緊急情況下公務車能順利通行。
[1]唐俊英,韓會山,陳麗.EDA技術應用實例教程[M].北京:電子工業(yè)出版社,2008.
[2]李忠波,袁宏.電子設計與訪真技術 [M].北京:機械工業(yè)出版社,2004.
[3]徐志軍.EDA技術與VHDL設計[M].北京:電子工業(yè)出版社,2009.
[4]王正勇.基于FPGA的交通信號控制器的設計[J].電子測量技術,2008,31(10):188-190.WANG Zheng-yong.Design of traffic light control system based on FPGA [J].Electronic Measurement Technology,2008,31(10):188-190.
[5]周功明,周陳琛.城市交通信號燈控制系統(tǒng)的設計與仿真[J].綿陽師范學院學報,2009,28(2):28-32.ZHOU Gong-ming,ZHOU Chen-chen.Design and simulation of the control system of city traffic lights [J].Journal of Mianyang Normal University,2009,28(2):28-32.
[6]羅海濤.基于VHDL的交通信號燈設計與實現(xiàn)[J].電腦知識與技術,2008(15):1050-1052.LUO Hai-tao.Implementation of traffic signal lights based on VHDL[J].Computer Knowledge and Technology,2008(15):1050-1052.
[7]施先旺,劉婷婷,李國良.采用有限狀態(tài)機實現(xiàn)控制指令的可靠檢測[J].火箭推進 ,2011(5):63-68.SHIXian-wang,LIU Ting-ting,LIGuo-liang.Control instruction detection realized by finite state machine[J].Journal of Rocket Propulsion,2011(5):63-68.