基于FPGA的交通系統(tǒng)遠程網(wǎng)絡(luò)控制設(shè)計
摘要 為了緩解城市交通擁堵問題,提出一種基于FPGA平臺遠程網(wǎng)絡(luò)控制的城市交通控制系統(tǒng)設(shè)計。系統(tǒng)采用TCP/IP傳輸協(xié)議實現(xiàn)控制中心發(fā)送控制信息給交通系統(tǒng)??刂浦行牟捎肣t圖形化界面實現(xiàn),清楚直觀;交通系統(tǒng)依據(jù)控制信息選擇相應(yīng)配時方案進行顯示。經(jīng)測試,該系統(tǒng)工作穩(wěn)定、控制精確、可靠性高,且成本較低。
關(guān)鍵詞 FPGA;TCP/IP;Qt;交通系統(tǒng);遠程控制;車流量
隨著社會經(jīng)濟的快速發(fā)展和人民生活水平的不斷提高,城市中車流量呈現(xiàn)出急劇增長的趨勢,導致城市交通出現(xiàn)了巨大的壓力。因此,改善十字路口的交通信號燈運行模式,提高十字路口的通行效率,對緩解城市交通堵塞有著重要的現(xiàn)實意義。而目前城市的交通控制,是固定的紅綠燈轉(zhuǎn)換周期,不靈活,在不同的時間段,十字路口的兩個方向會出現(xiàn)車流量大小不平衡的情況,同時白天與夜間的車流量相差也較大,如采用固定的定時機制將嚴重降低實際十字路口的通行效率。由此,有人提出使用地感線圈檢測車流量,根據(jù)車流量自動配時,但鋪設(shè)地感線圈成本過高,且容易出現(xiàn)誤差,公路網(wǎng)的現(xiàn)有網(wǎng)絡(luò)資源也未得到充分利用。
鑒于以上原因,本文提出了基于FPGA的遠程控制交通系統(tǒng),能有效地利用公路網(wǎng)現(xiàn)有的網(wǎng)絡(luò)資源,動態(tài)調(diào)節(jié)交通系統(tǒng)中車輛的通行時間,既提高了十字路口的車輛通行效率,又降低了成本。
1 系統(tǒng)總體設(shè)計與架構(gòu)
該系統(tǒng)主要由交通系統(tǒng)自動配時模塊、顯示模塊和控制中心遠程控制模塊組成,如圖1所示。
交通系統(tǒng)自動配時模塊采用50 MHz時鐘源按照不同的配時方案進行定時計數(shù),采用Altera公司的Cyclone IV代系列EP4CE15F17C8芯片作為主控芯片,利用Verilog HDL硬件語言完成整個交通燈定時配時控制模塊的設(shè)計;交通系統(tǒng)顯示模塊是根據(jù)配時模塊選擇的方案對交通燈運行狀態(tài)和數(shù)碼管數(shù)字顯示進行控制顯示;控制中心遠程控制模塊使用Qt界面編程技術(shù)和TCP/IP傳輸協(xié)議,使得遠程操作方便直觀且控制信息傳輸可靠。
2 交通系統(tǒng)自動配時模塊
此部分主要包括配時模塊設(shè)計和定時計數(shù)模塊設(shè)計兩部分,主要實現(xiàn)配時方案的預(yù)存與計時。
2.1 交通系統(tǒng)自動配時模塊設(shè)計
十字路口的交通分為主干道和副干道兩個方向。主干道方向具有紅燈(R1)、黃燈(Y1)、直行綠燈(G1)和左轉(zhuǎn)綠燈(L1),副干道方向也具有紅燈 (R2)、黃燈(Y2)、直行綠燈(G2)和左轉(zhuǎn)綠燈(L2)。在交通高峰時期,十字路口兩個方向的燈必須按照合理的順序亮滅,根據(jù)十字路口的實際交通運行情況,此時系統(tǒng)的工作情況如下:
主干道方向的交通燈工作順序為:綠燈→黃燈→左轉(zhuǎn)綠燈→黃燈→紅燈→黃燈。
副干道方向的交通燈工作順序為:紅燈→黃燈→綠燈→黃燈→左轉(zhuǎn)綠燈→黃燈。
在實際交通中,兩個方向交通信號燈的狀態(tài)有著密切的聯(lián)系,一個方向的交通信號燈狀態(tài)影響著另一個方向的交通信號燈狀態(tài),只有這樣才能協(xié)調(diào)好兩個方向的車流,若兩個方向的交通信號燈都各自獨立變化,交通系統(tǒng)則會產(chǎn)生混亂。
其一個周期的交通狀態(tài)對應(yīng)情況如表1所示,狀態(tài)從S0~S7,其中1表示燈亮,0表示燈滅。在文中編程實現(xiàn)時,可將主干道和副干道的狀態(tài)分開進行,所以針對主干道S4~S7狀態(tài)可合并,針對副干道S0~S3狀態(tài)可合并。
實際交通中,白天和夜間的車流量相差較大,同時白天期間的主副干道車流量也會出現(xiàn)不均衡的現(xiàn)象,這就要求準備多套配時方案,以適應(yīng)不同的需求。針對白天正常情況下,主干道車流量大于副干道車流量時,配時時間設(shè)置如表2所示,視為方案1;針對白天主干道車流量小于副干道車流量時,配時時間如表3所示,視為方案2;針對夜間車流量較小的情況下,配時時間可如表4所示設(shè)置,視為方案3;當發(fā)生交通事故或者有救護車、消防車等應(yīng)急車輛需要優(yōu)先通行時,所有路口均將紅燈置亮,保證應(yīng)急車輛的通行。這3種配時方案的選擇是由控制中心綜合所得到的交通信息之后,通過網(wǎng)絡(luò)遠程控制選擇。
2.2 定時計數(shù)模塊設(shè)計
系統(tǒng)使用50MHz時鐘晶振,所以1 s對應(yīng)50 000 000個時鐘節(jié)拍,每過50 000 000個時鐘節(jié)拍清零再重新計數(shù),之后根據(jù)各盞燈的持續(xù)時間作為預(yù)置數(shù)按照1 s為一個單位遞減計數(shù),減到1以后再根據(jù)運行狀態(tài)和配時時間重新預(yù)置數(shù),依次循環(huán)。此模塊無需設(shè)計單獨的分頻模塊,整個系統(tǒng)可采用同一時鐘信號,設(shè)計上更統(tǒng)一且不會出現(xiàn)時鐘不匹配的問題。
3 交通系統(tǒng)顯示模塊
顯示模塊部分主要涉及交通紅綠燈的顯示和數(shù)碼管的顯示兩部分,其中交通紅綠燈的顯示比較簡單,F(xiàn)PGA以4位Alamp變量控制主干道上的4盞燈,其中Alamp[0]控制左轉(zhuǎn)綠燈,Alamp[1]控制黃燈,Alamp[2]控制紅燈,Alamp[3]控制綠燈,其值為1則表示相應(yīng)的燈亮,如Alamp為4’b0001表示左轉(zhuǎn)綠燈亮;同時以4位Blamp變量控制副干道上的4盞燈,其設(shè)置與Alamp類似。每個燈的亮滅持續(xù)時間都是按照配時模塊設(shè)置的。
數(shù)碼管的顯示相比于交通紅綠燈的顯示更復(fù)雜,因為需要加上加碼、動態(tài)掃描等部分。整個交通信號燈系統(tǒng)實際需要4對共8個數(shù)碼管,由于相對的路口倒計時完全相同,所以為了節(jié)省邏輯資源,簡化設(shè)計,可讓相對路口共用一對數(shù)碼管,所以只需對2對共4個數(shù)碼管。數(shù)碼管是共陽的,4個數(shù)碼管的段選信號均共用同樣的引腳,且均為低電平有效。文中主干道的倒計時時間設(shè)置為Number_Data1,副干道的倒計時時間設(shè)置為Number_Data2,數(shù)碼管的顯示設(shè)計思路如圖2所示。
由圖中可看出,通過“十位取位模塊”分別對Number_Data1和Number_Data2進行取位的操作,將其十位和個位劃分;之后通過“SMG加碼模塊”,即數(shù)碼管顯示加碼模塊,轉(zhuǎn)換成數(shù)碼管顯示碼;最后由“同步動態(tài)掃描模塊”驅(qū)動點亮數(shù)碼管。現(xiàn)針對每一個模塊進行分析。
(1)十位取位模塊。就是利用數(shù)學運算符“%”和“/”分別取得主副干道計時時間的十位和個位,將十位和個位分開進行處理。
(2)SMG加碼模塊。就是分別將兩個路口倒計時時間的十位與個位的數(shù)字轉(zhuǎn)換成數(shù)碼管可顯示的碼型,每一個數(shù)字均是7段數(shù)碼管a,b,c,d,e,f,g每段置亮置滅組合而成的,數(shù)碼管顯示示意圖如圖3所示。
(3)同步動態(tài)掃描模塊。同步動態(tài)掃描模塊利用時分原理和人類的視覺暫留效應(yīng),由于每個數(shù)碼管點亮時間為1 ms,輪流驅(qū)動點亮4個數(shù)碼管,人眼無法識別,所以目測為4個數(shù)碼管同時點亮。此模塊由兩部分組成,分別為行掃描模塊和列掃描模塊,由于FPGA是可并行操作的,所以這兩個模塊可并行執(zhí)行,達到真正的同步。列掃描模塊相當于對數(shù)碼管進行片選,每隔1 ms就使能不同的數(shù)碼管;而行掃描模塊是輸出不同的SMG碼,根據(jù)列掃描對數(shù)碼管的片選使能,輸出當前數(shù)碼管的SMG碼。
4 控制中心遠程監(jiān)控模塊
此模塊采用以太網(wǎng)技術(shù)將接收到的交通信息分析處理后,通過TCP/IP傳輸協(xié)議將控制信息發(fā)送給FPGA,F(xiàn)PGA根據(jù)控制信息選擇配時模塊當中的一套配時方案,將顯示模塊中的交通紅綠燈和數(shù)碼管按照配時方案顯示出來。其中,F(xiàn)PGA控制整個交通系統(tǒng)作為服務(wù)端,控制中心作為客戶端,其界面采用Qt編程技術(shù)。
4.1 服務(wù)端設(shè)計
服務(wù)端采用SOPC技術(shù)構(gòu)建軟核,移植TCP/IP協(xié)議棧實現(xiàn)網(wǎng)絡(luò)通信。TCP/IP協(xié)議較為復(fù)雜,內(nèi)容較多,主要是適合PC機的通信,針對FPGA服務(wù)端設(shè)計,文中采用精簡的TCP/IP協(xié)議,既能達到設(shè)計要求,也能簡化設(shè)計的復(fù)雜程度,其傳輸流程圖如圖4所示。
此協(xié)議棧中,需使用以下幾個主要函數(shù),實現(xiàn)數(shù)據(jù)接收:
(1)void init_ip_arp_udp_tcp(unsigned char * mymac,unsigned char * myip,unsigned char wwwp)。
此函數(shù)為初始化傳輸,主要用于填寫MAC、IP、端口參數(shù)。函數(shù)返回值為空。
(2)unsigned char eth_type_is_arp_and_my_ip(unsigned char * buf,unsigned int len)。
此函數(shù)為數(shù)據(jù)包解析,是否接收到指向本地IP的ARP請求,若是返回值為1,若不是則返回值為0。
(3)chareth_type_is_ip_and_my_ip(unsigned char* buf,unsigned int len)。
此函數(shù)為數(shù)據(jù)包解析,是否接收到發(fā)送給本地IP的IP數(shù)據(jù)包,若是返回值為1,若不是則返回值為0。
(4)unsigned int get_tcp_data_pointer(void)。
此函數(shù)為獲取有效數(shù)據(jù)位置,若有數(shù)據(jù)返回值為有效數(shù)據(jù)位置,若無數(shù)據(jù)則返回值為0。
4.2 客戶端設(shè)計
Qt是一款跨平臺的C++用戶界面應(yīng)用程序框架(C++GUI),能為應(yīng)用程序開發(fā)者提供藝術(shù)級圖形用戶界面所需的所有功能,可以在不同的系統(tǒng)平臺下使用,通用性好,具有良好的信號/槽封裝機制,還有豐富的API函數(shù),能夠降低用戶開發(fā)難度,其豐富的可擴展性使得圖形化界面更加直觀。在客戶端設(shè)計中,為了能直觀地顯示IP地址、端口號以及接收到的交通信息等參數(shù),同時能更加方便地發(fā)送控制信息,控制中心客戶端采用Qt Creator工具實現(xiàn)了Qt界面設(shè)計。
這里使用QTextBrowser控件作為交通信息顯示框,QLineEdit控件輸入IP地址和端口號,QPushButton控件觸發(fā)網(wǎng)絡(luò)連接和相關(guān)控制信息的發(fā)送。由于設(shè)計中需要使用QTcp So cket網(wǎng)絡(luò)套接字編程實現(xiàn)網(wǎng)絡(luò)通信傳輸,所以需要在工程的pro文件中添加“QT+=network”,并添加QTcpSocket頭文件,之后需要設(shè)置連接的IP地址和端口號,創(chuàng)建QTcpSocker對象tcpclient,連接服務(wù)器語句為:tcpclient.connectToHost(* ip,port)。連接成功后,需點擊控制信息按鈕,發(fā)射信號,從而觸發(fā)數(shù)據(jù)發(fā)送槽函數(shù)的執(zhí)行,其發(fā)送函數(shù)語句為:tcpclient.write(msg.toLoca18Bit())??刂浦行牡木W(wǎng)絡(luò)傳輸流程如圖5所示。
為了實現(xiàn)更友好的界面顯示,這里在Qt程序中添加了中文顯示,具體設(shè)置語句如下:
QTextCodec::setCodecForLocale(QTextCodec::codecForName(“UTF-8”));
QTextCodec::setCodecForTr(QTextCodec::codec ForName(“UTF-8”));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“UTF-8”)。
5 系統(tǒng)調(diào)試
將所有模塊搭建連接好之后,在控制中心界面處,輸入FPGA的IP地址及其間的端口號,點擊“連接”,就建立起了FPGA與控制中心的通信,控制中心的圖形化界面如圖6所示。圖中左邊的文本框顯示的是交通信息,根據(jù)圖中交通信息可知先前主干道車流量大于副干道車流量,所以這里需要點擊“日間模式1”按鈕,F(xiàn)PGA控制交通系統(tǒng)選用方案1,其運行結(jié)果如圖7所示。之后,圖中出現(xiàn)一個車輛的呼救信息,所以需點擊“緊急停止”按鈕,終止交通系統(tǒng)的運行,處理事故,其運行結(jié)果如圖8所示。
“日間模式2”按鈕對應(yīng)配時方案2的運行效果,“夜間模式”按鈕對應(yīng)配時方案3的運行效果,其實際測試結(jié)果正常,運行穩(wěn)定,達到了控制中心遠程精確控制交通系統(tǒng)的目的。
6 結(jié)束語
本設(shè)計以FPGA作為開發(fā)平臺,使用Verilog HDL語言完成了交通系統(tǒng)自動配時模塊和顯示模塊的設(shè)計,同時采用SOPC技術(shù)在FPGA上構(gòu)建軟核實現(xiàn)控制中心通過網(wǎng)絡(luò)控制交通系統(tǒng),控制中心的界面采用Qt設(shè)計,美觀、操作方便且通用性好。整個設(shè)計較好地利用了現(xiàn)有公路的網(wǎng)絡(luò)資源,配合智能車載系統(tǒng)車輛信息遠程發(fā)送技術(shù),能精確有效地控制整個交通系統(tǒng),相比于其他依靠傳感器,控制交通系統(tǒng)運行情況的設(shè)計,其可靠性更高,然而成本卻相對較低。