交通燈是城市交通監(jiān)管系統(tǒng)的重要組成部分,對(duì)于保證機(jī)動(dòng)車輛的安全運(yùn)行,維持城市道路的順暢起到了重要作用。目前很多城市交叉路口的交通燈實(shí)行的是定時(shí)控制,燈亮的時(shí)間是預(yù)先設(shè)定好的,在時(shí)間和空間方面的應(yīng)變性能較差,一定程度上造成了交通資源的浪費(fèi),加重了道路交通壓力。本文在EDA技術(shù)的基礎(chǔ)上,利用FPGA的相關(guān)知識(shí)設(shè)計(jì)了交通燈控制系統(tǒng),可以根據(jù)實(shí)際情況對(duì)燈亮?xí)r間進(jìn)行自由調(diào)整,整個(gè)設(shè)計(jì)系統(tǒng)通過(guò)Max+PlusⅡ軟件進(jìn)行了模擬仿真,并下載到FPGA器件中進(jìn)行硬件的調(diào)試,驗(yàn)證了設(shè)計(jì)的交通信號(hào)燈控制電路完全可以實(shí)現(xiàn)預(yù)定的功能,具有一定的實(shí)用性。
1 系統(tǒng)設(shè)計(jì)要求
設(shè)計(jì)的交通信號(hào)燈控制電路,主要適用于在兩條干道匯合點(diǎn)形成的十字交叉路口,路口設(shè)計(jì)兩組紅綠燈分別對(duì)兩個(gè)方向上的交通運(yùn)行狀態(tài)進(jìn)行管理。交通燈的持續(xù)閃亮?xí)r間由鍵盤輸入控制。燈亮?xí)r序如圖1所示,當(dāng)B方向的紅燈亮?xí)r,A方向?qū)?yīng)綠燈亮,由綠燈轉(zhuǎn)換成紅燈的過(guò)渡階段黃燈亮,即B方向紅燈亮的時(shí)間等于A方向綠燈和黃燈亮的時(shí)間之和。同理,當(dāng)A方向的紅燈變亮?xí)r,B方向的交通燈也遵循此規(guī)則。各干道上安裝有數(shù)碼管,以倒計(jì)時(shí)的形式顯示本道各信號(hào)燈閃亮的時(shí)間。當(dāng)出現(xiàn)特殊情況時(shí),各方向上均亮紅燈,倒計(jì)時(shí)停止。特殊運(yùn)行狀態(tài)結(jié)束后,控制器恢復(fù)原來(lái)的狀態(tài),繼續(xù)運(yùn)行。
2 系統(tǒng)整體設(shè)計(jì) 整個(gè)系統(tǒng)設(shè)計(jì)如圖2所示,該系統(tǒng)主要由計(jì)數(shù)模塊、控制模塊、分頻模塊、分位模塊以及顯示電路構(gòu)成。其中分頻模塊主要將系統(tǒng)輸入的基準(zhǔn)時(shí)鐘信號(hào)轉(zhuǎn)換為1 Hz的激勵(lì)信號(hào),驅(qū)動(dòng)計(jì)數(shù)模塊和控制模塊工作??刂颇K根據(jù)計(jì)數(shù)器的計(jì)數(shù)情況對(duì)交通燈的亮滅及持續(xù)時(shí)間進(jìn)行控制,并通過(guò)分位電路將燈亮?xí)r間以倒計(jì)時(shí)的形式通過(guò)數(shù)碼管顯示出來(lái)。圖中Reset是復(fù)位信號(hào),高電平有效,可以實(shí)現(xiàn)對(duì)計(jì)數(shù)器的異步清零。Hold為保持信號(hào),當(dāng)Hold為“1”,計(jì)數(shù)器暫停計(jì)數(shù),表示出現(xiàn)特殊情況,各方向車輛都處于禁行狀態(tài)。 3 主要功能模塊設(shè)計(jì)及仿真 3.1 計(jì)數(shù)模塊設(shè)計(jì) 計(jì)數(shù)模塊主要實(shí)現(xiàn)累加循環(huán)計(jì)數(shù),計(jì)數(shù)的最大值由鍵盤輸入控制,輸出的計(jì)數(shù)值為控制模塊的燈控提供參考,計(jì)數(shù)器的主程序設(shè)計(jì)如下: 計(jì)數(shù)模塊的仿真如圖3所示,從圖中可以看出,在時(shí)鐘的驅(qū)動(dòng)下,計(jì)數(shù)值不斷自加,當(dāng)計(jì)數(shù)值countnum等于鍵盤輸入值32(key=32)時(shí),計(jì)數(shù)返回到0,開始下一輪計(jì)數(shù)。當(dāng)Hold檢測(cè)到特殊情況時(shí)置‘1’,使計(jì)數(shù)器暫停計(jì)數(shù)。 3.2 控制器模塊的仿真設(shè)計(jì) 在控制器模塊中,紅、綠、黃三盞燈工作的總時(shí)間由鍵盤輸入,各交通燈時(shí)間分配規(guī)則如下:紅燈時(shí)間占總時(shí)間的1/2,綠燈時(shí)間占3/8,黃燈時(shí)間占1/8,本設(shè)計(jì)中鍵盤輸入值為32(key=32),正常情況下紅燈亮16 s,綠燈亮12 s,黃燈亮4 s。 控制器仿真情況如圖4所示,當(dāng)hold為低電平,計(jì)數(shù)值countnum<12時(shí),greenA輸出高電平,A東西方向綠燈亮起車輛通行,此時(shí)與之相對(duì)應(yīng)的redB輸出高電平,B方向紅燈亮起車輛禁行。A方向顯示交通燈閃爍持續(xù)時(shí)間的數(shù)碼管numA從12開始遞減,同時(shí)B方向顯示交通燈閃爍持續(xù)時(shí)間的數(shù)碼管numB從16開始遞減。當(dāng)12<countnum<16時(shí),yellowA輸出高電平,A方向黃燈亮起,numA從數(shù)值4開始倒計(jì)時(shí),此時(shí)greenB仍處于低電平,numB繼續(xù)倒計(jì)時(shí),B方向紅燈閃亮車輛仍處于禁行狀態(tài)。當(dāng)countnum>16,redA輸出高電平,A方向紅燈亮起車輛禁行,numA從數(shù)值16開始倒計(jì)時(shí),此時(shí)greenB輸出高電平,B方向綠燈亮起車輛通行,numB從數(shù)值12開始遞減。當(dāng)16<countnum<28時(shí),redA繼續(xù)處于高電平狀態(tài),numA繼續(xù)倒計(jì)時(shí),A方向車輛禁行,而此時(shí)yellowB輸出高電平,B方向黃燈亮起,numB從數(shù)值4開始遞減。當(dāng)hold為‘1’時(shí),表示進(jìn)入緊急狀態(tài),F(xiàn)LASH置‘1’,各方向的紅燈均亮起,所有機(jī)動(dòng)車禁行。 3.3 分位模塊設(shè)計(jì) 分位模塊的設(shè)計(jì)主要是將燈亮?xí)r間分為十位和個(gè)位,通過(guò)兩個(gè)相應(yīng)的數(shù)碼管分別顯示出來(lái)。本設(shè)計(jì)中燈亮?xí)r間最長(zhǎng)不超過(guò)40 s(numin<40),numA,numB分別表示十位、個(gè)位上的數(shù)字,分位模塊程序設(shè)計(jì)的流程圖如圖5所示。 分位模塊的仿真如圖6所示,numin的數(shù)值大小可以通過(guò)numA,numB的組合以十進(jìn)制數(shù)值顯示,從而實(shí)現(xiàn)了分位功能。 4 系統(tǒng)的硬件設(shè)計(jì)及調(diào)試 本系統(tǒng)的主要邏輯設(shè)計(jì)由一片EPlK30TC144-3芯片完成,編寫的VHDL源程序在Altera公司的邏輯綜合工具M(jìn)ax+PlusⅡ下經(jīng)過(guò)編譯和功能仿真測(cè)試后,針對(duì)下載芯片進(jìn)行管腳配置,下載到EPlK30TC144-3芯片中,進(jìn)行相應(yīng)的硬件調(diào)試,調(diào)試結(jié)果與軟件仿真的結(jié)果相吻合,驗(yàn)證了設(shè)計(jì)完成了預(yù)定功能。 5 結(jié) 語(yǔ) 本文利用硬件描述語(yǔ)言VHDL編程,借助Altera公司的Max+PlusⅡ軟件環(huán)境下進(jìn)行了編譯及仿真測(cè)試,通過(guò)FPGA芯片實(shí)現(xiàn)了一個(gè)實(shí)用的交通信號(hào)燈控制系統(tǒng),設(shè)計(jì)由于采用了EDA技術(shù),不但大大縮短了開發(fā)研制周期,提高了設(shè)計(jì)效率,而且使系統(tǒng)具有設(shè)計(jì)靈活,實(shí)現(xiàn)簡(jiǎn)單,性能穩(wěn)定的特點(diǎn)。