摘 要: 采用軟件控制方式的道路交通信號機在死機時往往失去其綠沖突保護功能,。根據(jù)“綠沖突矩陣”的檢測原理,本文提出一種道路交通信號控制機的信號沖突檢測方案,,采用自頂向下的設計方法,,通過FPGA實現(xiàn)系統(tǒng)的各個功能模塊。該系統(tǒng)可以獨立地檢測綠燈信號沖突這種道路交通的異常情況,,并能立即做出處理,。仿真及實際測試結果表明,該系統(tǒng)時序分配與程序設計合理,,工作穩(wěn)定可靠,,并能夠提高信號機嵌入式系統(tǒng)的實時性。
關鍵詞: 綠沖突,;FPGA,;綠沖突矩陣;校驗
0 引言
隨著各國城市化進程的不斷發(fā)展,,智能交通系統(tǒng)在城市道路交通控制中得到了廣泛的應用,。智能道路交通信號機是智能交通系統(tǒng)的重要組成部分,也是解決城市交通問題的關鍵設備,。信號機中的綠沖突檢測可以提高智能交通系統(tǒng)的安全性和可靠性,。由于過去的綠沖突保護控制方式相對簡單,通常是用簡單的繼電器互鎖或者信號燈的接線實現(xiàn)[1],,隨著多相位,、多時段控制方式和線控,、面控方式的發(fā)展,目前的綠沖突檢測多通過信號機的控制軟件實現(xiàn),。然而,,當這類信號機出現(xiàn)死機導致信號沖突時,其保護功能就失效,。因此研究一種新的綠沖突檢測電路在智能交通控制中具有十分重要的現(xiàn)實意義,。
本文研究的綠沖突檢測電路采用FPGA實現(xiàn)。FPGA適合于組合邏輯和時序邏輯電路設計,,并且具有并發(fā)執(zhí)行的功能,,相對于微控制器的程序設計更加穩(wěn)定可靠[2]。同時,,基于FPGA的綠沖突檢測電路實現(xiàn)信號機的綠沖突檢測功能,,可以減輕信號機CPU的負擔,提高系統(tǒng)的實時性,。
1 綠沖突
綠沖突是指規(guī)定不允許同時放行的信號燈組中的綠色信號燈同時點亮[3],。就目前的交通信號控制機來說,產生綠沖突的原因大概有以下幾類:
?。?)系統(tǒng)軟故障
此類綠沖突通常是由于交通信號機里面的控制系統(tǒng)出現(xiàn)死機或者是一些數(shù)據(jù)處理錯誤等軟故障造成的,。不僅如此,如果交通信號機在較為惡劣的電磁環(huán)境下工作,,也會受到電磁干擾而出現(xiàn)短暫的綠沖突現(xiàn)象,。
(2)硬件故障
由于信號機的硬件變質,、損壞或者溫度變化,、受潮等原因造成的綠沖突。這種情況如果發(fā)生,,就可能長時間持續(xù)下去,,只能對信號機進行維修或者更換里面的部件[4-5]。
2 基于綠沖突矩陣的校驗原理
本文設計的綠沖突檢測是基于綠沖突矩陣的檢測原理,,沖突矩陣的行和列分別對應一個信號燈組,,為一對稱矩陣,如圖1所示,。
在圖1(a)中假設有G0,、G1、G2三個綠燈信號,,設G0和G1同時點亮視為沖突,,G1和G2同時點亮視為沖突,則圖中對應沖突的位置填入1,G0和G2同時點亮不視為沖突的位置填0,,如圖所示,,本文稱之為綠沖突矩陣數(shù)據(jù),因此,,綠沖突矩陣數(shù)據(jù)中的位信息1就是某綠燈對子不允許同時點亮的定義,。校驗過程如下:
當輸入的信號為G0G1G2=010時(1表示綠燈亮,0表示綠燈滅):
?。?)G0為0,,不與G0所在的行校驗,轉下一行,;
?。?)G1為1,,進行校驗,,將輸入信號“010”與G1所在的行“101”相與,即010&101=0,,數(shù)據(jù)正確,;
(3)G2為0,,同理不需要校驗,。
當G0G1G2=110,即G0和G1同時亮時,,與G0所在行相與后結果非0,,說明G0和G1信號沖突,此時,,信號機應立即切斷所有綠燈信號,,轉而執(zhí)行黃閃信號。
本文設計的綠沖突檢測電路對應15路綠燈信號G0~G14,,如東西方向的直行綠燈,、左轉綠燈、右轉綠燈,、掉頭綠燈,、行人綠燈等。在本文中綠沖突矩陣數(shù)據(jù)是以字節(jié)為單位的,,所以15路信號對應的綠沖突矩陣數(shù)據(jù)分成4塊,,每一塊有8字節(jié),按照圖1(b)的編號順序通過FPGA串口寫進FPGA的ROM中,。其中第一塊數(shù)據(jù)用于校驗G0~G7綠信號之間的沖突,,第二塊數(shù)據(jù)用于校驗G8~G14與G0~G7綠信號之間的沖突,第三塊數(shù)據(jù)用于校驗G8~G14綠信號之間的沖突,。第四塊數(shù)據(jù)也是用于校驗G8~G14與G0~G7綠信號之間的沖突,,因此不需要寫進ROM,。在校驗的過程中還應排除Gx與Gx自身的比對,如圖1(b)中斜方向所示,。
3 總體方案
根據(jù)綠沖突矩陣的檢測原理,,采用自頂向下的設計方法將檢測電路分為以下幾個模塊:(1)信號燈的燈組驅動電路,通過SPI方式在正常狀態(tài)下接收信號控制機的燈組數(shù)據(jù),,在黃閃狀態(tài)下接收沖突檢測電路發(fā)送的信號燈黃閃數(shù)據(jù),。(2)沖突檢測電路采用Xilinx的FPGA芯片XC3S50,通過SPI模塊接收信號燈的狀態(tài)數(shù)據(jù),。(3)數(shù)據(jù)接收結束后復位時鐘分頻模塊,,時鐘分頻模塊產生其他模塊所需時鐘,所有模塊都是在統(tǒng)一的時鐘線上運行,,以免發(fā)生時序混亂,。(4)沖突檢測模塊,在檢測時序期間對SPI接收的數(shù)據(jù)即信號燈的狀態(tài)數(shù)據(jù)進行綠沖突校驗,,校驗是根據(jù)上文所說的綠沖突矩陣比對各綠燈信號狀態(tài),,該綠沖突矩陣數(shù)據(jù)存放在FPGA的IP核所生成的ROM里面。(5)黃閃延時判斷模塊,,沖突檢測模塊的檢測結果經過黃閃延時判斷模塊進行延時檢測并確認是否有沖突,。如果沒有沖突,則燈組驅動繼續(xù)接收信號控制機的燈組數(shù)據(jù),;如果有沖突,,則黃閃標志置位,切斷MCU的SPI通道,,沖突檢測電路通過SPI開始發(fā)送黃閃數(shù)據(jù)至燈組驅動,,從而讓燈組驅動切換至黃閃狀態(tài)??傮w方案如圖2所示,。
4 各模塊設計
4.1 SPI模塊
SPI協(xié)議(Serial Peripheral Interface),即串行外圍設備接口,,是一種高速全雙工的通信總線,。SPI總線包含4條總線,分別為NSS,、SCK,、MOSI、MISO,,F(xiàn)PGA SPI時序如圖3所示,。從圖中可以看出,F(xiàn)PGA在時鐘的下降沿采集燈組的數(shù)據(jù),在上升沿發(fā)送數(shù)據(jù),。數(shù)據(jù)的傳輸是從低位開始,,接收的燈組信號存到三組16位寄存器P0、P1,、P2,。P0、P1,、P2的數(shù)據(jù)格式一樣,,如圖4所示,分別表示不同的道路方向,。G是綠燈信號,,Y是黃燈信號,R是紅燈信號,,下標表示不同的形式,,如左轉、右轉等,。另有一組4位的寄存器YS用于存放黃閃數(shù)據(jù),,當處于黃閃狀態(tài)時,YS寄存器的值以時鐘分頻模塊控制的時鐘頻率進行0/1交替改變,,并通過SPI發(fā)送至燈組驅動,從而控制燈組驅動進入黃閃狀態(tài),,SPI模塊如圖5所示,。
4.2 時鐘分頻模塊
時鐘分頻模塊相當于整個電路的驅動模塊,所有沖突檢測模塊都是在時鐘分頻模塊提供的時鐘下工作,。如圖6所示,,輸入的系統(tǒng)時鐘CLKIN被分頻為BUSY、CHCK,、ADR3,、ADR2、ADR1,、ADR0,,頻率為62.5 Hz~2 kHz。分頻器是通過計數(shù)器實現(xiàn)的,,計數(shù)的方式如式(1)所示[6],,當計數(shù)到波形翻轉時間點時將波形輸出取反。BUSY和CHCK的功能如表1所示,,當BUSY為1時,,沖突檢測電路通過SPI開始接收燈組狀態(tài)數(shù)據(jù),如果處于黃閃狀態(tài),則同時發(fā)送黃閃數(shù)據(jù),。ADR3~ADR0是ROM校驗表的地址,,可以尋址16個16位綠沖突矩陣數(shù)據(jù)。CLK4HZ是黃燈閃爍的頻率,,RD信號是ROM的讀數(shù)據(jù)信號,,頻率是4 kHz。由于RD讀信號和ADR地址信號不能同時跳變,,否則數(shù)據(jù)將會不穩(wěn)定,,從而讀不到正確的數(shù)據(jù),因此需要將RD信號與ADR0的地址錯開,,如圖7所示,,程序設計是通過16 kHz時鐘分頻得到4 kHz,但是在復位時計數(shù)器從1開始計數(shù),,最后將4 kHz取反后輸出到RD信號,。
4.3 沖突檢測模塊
綠沖突檢測模塊是本文設計的核心模塊,其檢測周期定為4 ms,。在檢測周期開始時,,先將P0、P1,、P2三燈組中的15路綠燈信號讀入8位寄存器G_SIG0,、G_SIG1,其位置排列如圖8所示,。綠沖突檢測就是尋找綠沖突矩陣數(shù)據(jù)中定義的同時點亮的綠燈對子,,如果找到一個或一個以上的對子就判定發(fā)生了綠沖突。因此,,尋找過程就是一個循環(huán)處理過程,。首先判斷G_SIG0或G_SIG1中的i位是否為1(i為0~14),如果i為1,,說明i位的綠燈亮,;其次,把G_SIG0或G_SIG1中的i位值清零,。i位清零后,,如果G_SIG0或G_SIG1中的值不為零,說明有與Gi成對的綠燈對子存在,。把這個數(shù)值與綠沖突矩陣數(shù)據(jù)中Gi對應的數(shù)據(jù)相與,,若結果不為零,說明有與Gi成對但不允許同時點亮的綠燈對子存在,,即存在綠沖突,,循環(huán)處理結束,,準備輸出黃閃。如果結果為零,,i加1,,進行下一輪比對處理。
按照沖突矩陣的數(shù)據(jù)格式,,需將G0~G15分別與第2節(jié)中描述的綠沖突矩陣數(shù)據(jù)的三塊數(shù)據(jù)進行校驗,,F(xiàn)PGA程序設計如圖9所示。在每次讀信號到來時,,F(xiàn)PGA讀入2字節(jié)數(shù)據(jù),,隨后地址信號ADR加1計數(shù),地址ADR 0~3的區(qū)域為第一塊數(shù)據(jù),,4~7的區(qū)域為第二塊數(shù)據(jù),,8~11的區(qū)域為第三塊數(shù)據(jù)。在滿足時序(BUSY為0,,CHCK為1)與不黃閃的條件下,,讀入的第一塊數(shù)據(jù)用于綠燈狀態(tài)G0~G7與自身的比對,第二塊數(shù)據(jù)用于綠燈狀態(tài)G0~G7與綠燈狀態(tài)G8~G14的比對,,第三塊數(shù)據(jù)用于綠燈狀態(tài)G8~G14與自身的比對,。如果比對處理結果判定為綠沖突,則將綠沖突臨時標志置1,,否則將臨時標志清0,。
4.4 黃閃延時判斷模塊
當信號燈閃爍時,每隔250 ms就要改變一次狀態(tài),,即0和1的交替變化,,這樣沖突臨時標志必然也會變化,從而導致錯誤判斷,。因此需要加入延時判斷,在BUSY上跳變的時候對臨時標志進行判斷,,若是1則計數(shù)器累積加1,,否則清0計數(shù)器。當累計到19時(BUSY周期16 ms,,即計數(shù)時間超過300 ms),,才可確認為沖突信號,觸發(fā)黃閃信號,,程序如圖10所示,。
延時判斷必須在臨時標志被清0之前,從圖11的時序圖中可以看出,,臨時標志位變化是在BUSY上升沿之前,,清0在BUSY上升沿之后,,因此延時判斷的觸發(fā)信號為BUSY的上升沿。
4.5 其他模塊
實際上,,信號沖突檢測電路還包括紅綠沖突檢測,、紅燈滅與綠燈滅檢測電路,這些電路在邏輯上相對簡單,,本文不做描述,。另外,利用Xilinx FPGA的IP核生成的ROM模塊以及RS232串口模塊在本文所列出的相關參考文獻中有詳細的介紹,,這里也不再描述[7-8],。
5 仿真與測試
通過Xilinx的ISE開發(fā)軟件編寫Test Fixture測試文件對各個模塊進行仿真測試,查看各個模塊的波形時序正確后,,對頂層模塊進行整體仿真,。仿真結果表明,本設計時序邏輯正確,,當2個燈組的綠燈狀態(tài)違反綠沖突矩陣數(shù)據(jù)定義時能正確檢測出沖突,,進而進入黃閃。最后利用STM32主控板和FPGA開發(fā)板以及自己焊接的LED信號燈電路對程序進行實際驗證測試,,如圖12所示,。測試表明,信號燈在沒有沖突的時候能正常運行,,沖突時則進入黃閃狀態(tài),。
6 結論
本文詳細介紹了基于FPGA的綠沖突檢測電路各個模塊的原理與設計,經過嚴密的時序分析以及Verilog語言編程,,實現(xiàn)了各個模塊的基本功能,,并通過了功能仿真與實際的硬件測試。結果表明該系統(tǒng)可以正確檢測出各種綠信號沖突并立即做出處理,,使得智能交通系統(tǒng)更加安全可靠,。利用FPGA設計的功能模塊經過編譯后生成實際的時序邏輯電路,更加穩(wěn)定可靠,,而且后期還可以進行功能更改與完善,,方便維護。
參考文獻
[1] 尹征琦,,朱勁,,劉智勇.綠沖突的智能保護及其實現(xiàn)[J].公路交通科技,1998,,15(3):26-29.
[2] 梁赫西,,謝虎城,王建,,等.基于FPGA的智能車牌定位識別系統(tǒng)設計[J].電子技術應用,,2014,,40(11):32-35.
[3] 高雨,葉煒,,沈國江.多相位智能交通控制器的設計[J].江南大學學報(自然科學版),,2006,5(5):556-560.
[4] 史忠科,,黃輝先.交通控制系統(tǒng)導論[M].北京:科學出版社,,2003.
[5] 王錕,張衛(wèi)華,,衛(wèi)立陽.基于綠間隔矩陣的信號配時計算方法研究及應用[J].交通科技,,2014(2):132-134.
[6] 王水魚,馮曉靖.一種新型delta-sigma小數(shù)分頻器的FPGA實現(xiàn)[J].微型機與應用,,2013,,32(5):25-27,31.
[7] 徐文波,,田耕.Xilinx FPGA開發(fā)實用教程(第二版)[M].北京:清華大學出版社,,2012.
[8] 劉東華.Xilinx系列FPGA芯片IP核詳解[M].北京:電子工業(yè)出版社,2013.