趙萬里 陳初俠 張濤 鐘聲 張永康 王世龍
摘要:該文基于FPGA芯片EP4CE6E22C8設計了一款交通燈控制系統(tǒng)。首先從設計要求出發(fā),將交通燈控制系統(tǒng)分成多個底層電路模塊并用Verilog HDL語言對其進行設計和仿真,然后調(diào)用已設計好的各底層電路采用原理圖方式進行頂層電路設計,最后將設計好的頂層電路進行管腳鎖定并下載到FPGA芯片中進行硬件驗證。仿真和硬件驗證結果表明,該交通燈控制系統(tǒng)在實現(xiàn)常規(guī)交通指揮功能的同時,還能夠在一定程度上根據(jù)高峰時段和非高峰時段車流量的變化調(diào)節(jié)車輛通行時間,并且還具有在特殊情況時為應急車開道的功能,有效提高了十字路口的通行效率。
關鍵詞:交通燈控制系統(tǒng);FPGA;Verilog HDL;設計
中圖分類號:TP29? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)01-0124-04
1? 引言
交通信號燈在人們的日常生活中,起著至關重要的作用,但是隨著國民經(jīng)濟的快速發(fā)展,城市化建設規(guī)模的不斷擴大,人們對交通信號燈在協(xié)調(diào)交通、管理交通等方面的能力提出了更高的要求[1]。尤其是在當前社會城市化速度不斷加快,城市交通基礎建設已經(jīng)遠遠趕不上實際需求的情況下,城市交通狀況日益惡化,而隨之帶來的各方面問題也漸漸突出[2],如交通擁堵日益嚴重問題、交通事故頻發(fā)問題、交通導致的空氣污染和噪聲污染問題等。因此,設計一款能有效提高十字路口通行效率的交通燈控制系統(tǒng),對緩解日益嚴重的交通擁堵現(xiàn)象具有重大現(xiàn)實意義。
本文使用Verilog HDL語言以QuartusII軟件為平臺設計一款實用的交通燈控制系統(tǒng)[3],主控芯片采用Altera公司CycloneⅣ E系列FPGA芯片EP4CE6E22C8。該系統(tǒng)在實現(xiàn)常規(guī)交通指揮的同時,還能夠在一定程度上根據(jù)高峰時段和非高峰時段車流量的變化調(diào)節(jié)車輛通行時間,另外還具有當發(fā)生特殊緊急情況時,東西、南北路口均設置為禁止通行,為應急車開道的功能[4]。
2 交通燈控制系統(tǒng)設計要求
本文設計的交通燈控制系統(tǒng)具有以下三方面的要求。
1)具有常規(guī)交通指揮的功能,具體表現(xiàn)如下。
① 在交通燈十字路口的南北方向(主干道方向)和東西方向(次干道方向)都設置有紅、黃、綠指示燈,如圖1所示。
② 紅、黃、綠燈的點亮按照綠燈→黃燈→紅燈→綠燈依次循環(huán),其中黃燈亮燈時間為5秒。這里要注意,主、次干道紅黃綠燈的點亮應遵循表1規(guī)則。
③ 主、次干道都有數(shù)碼管,顯示紅黃綠燈點亮的倒數(shù)計時時間。
2)具有應急車通行的功能。當發(fā)生緊急事件時,主、次干道都設為禁止通行,專為應急車開道。
3)具有調(diào)節(jié)車輛通行時間的功能。這里指的是在高峰時段和非高峰時段,車輛通行時間不同。由于主干道車流量大,故通行時間相較于次干道要長。我們規(guī)定,在高峰時段主干道通行(綠燈亮)時間為50秒,次干道通行時間為25秒,如圖2所示;在非高峰時段主干道通行時間為30秒,次干道通行時間為25秒,如圖3所示。
4)具有狀態(tài)保持功能。這里指的是當交通燈控制系統(tǒng)在正常運行時可以通過某個按鍵來控制交通燈是正常運行還是暫停運行,當暫停運行時,交通燈信號和倒數(shù)計時保持原狀態(tài)不變。
3 交通燈控制系統(tǒng)總體設計方案
交通燈控制系統(tǒng)設計框圖如圖4所示。根據(jù)設計要求,本設計將交通燈控制系統(tǒng)分為五個部分,分別為外部輸入、分頻模塊電路、控制模塊電路、選擇模塊電路和顯示輸出電路。外部輸入包含系統(tǒng)時鐘、復位信號、緊急信號、使能信號、選擇信號和動態(tài)掃描復位信號,其中系統(tǒng)時鐘為50MHz的時鐘源,緊急信號為特殊緊急情況時的控制信號,高電平有效。
分頻模塊電路包含分頻模塊1和分頻模塊2,分頻模塊1輸出的為10KHz的掃描時鐘信號,驅(qū)動數(shù)碼管動態(tài)顯示模塊電路工作;分頻模塊2輸出的為1Hz的激勵信號,驅(qū)動控制模塊電路工作??刂颇K電路包含高峰時段控制模塊電路和非高峰時段控制模塊電路,其輸出為主、次干道的紅黃綠燈點亮及倒數(shù)計時情況。選擇模塊電路通過選擇控制信號s來選擇高峰或非高峰時段控制模塊電路的輸出數(shù)據(jù)。顯示輸出電路包含數(shù)碼管動態(tài)顯示模塊電路和紅黃綠燈亮滅的顯示輸出,其中數(shù)碼管動態(tài)顯示模塊電路顯示的為紅黃綠燈點亮時的倒數(shù)計時情況。
4 交通燈控制系統(tǒng)設計
本次設計采用先底層電路設計后頂層電路設計的層次化設計方法。設計過程中,通過Quartus Ⅱ軟件采用Verilog HDL語言和原理圖相結合的設計方式來進行,其中底層電路用Verilog HDL語言來實現(xiàn),頂層電路通過調(diào)用底層電路用原理圖設計方式來實現(xiàn)[5]。
4.1 底層電路設計
底層電路有六個子電路模塊,分別是5000分頻模塊、50000000分頻模塊、高峰時段控制模塊、非高峰時段控制模塊、選擇模塊和數(shù)碼管動態(tài)顯示模塊。
4.1.1? 5000分頻模塊
該模塊的功能是對50MHz系統(tǒng)時鐘進行5000分頻,產(chǎn)生一個10KHz的時鐘信號,驅(qū)動數(shù)碼管動態(tài)顯示模塊電路工作,其元件符號如圖5所示。
圖6為5000分頻模塊仿真波形圖,可以看出,50MHz系統(tǒng)時鐘每輸入一個脈沖就對其進行一次計數(shù),當計數(shù)到2499時,輸出信號clk10KHz進行翻轉,剛好計數(shù)5000次時輸出為一個完整的周期信號,即實現(xiàn)了5000分頻。
4.1.2? 50000000分頻模塊
該模塊的功能是對50MHz系統(tǒng)時鐘進行50000000分頻,產(chǎn)生一個1Hz的時鐘信號,驅(qū)動控制模塊電路工作,其元件符號如圖7所示。
圖8為50000000分頻模塊仿真波形圖,可以看出,50MHz系統(tǒng)時鐘每輸入一個脈沖就對其進行一次計數(shù),當計數(shù)到24999999時,輸出信號clk1Hz進行翻轉,剛好計數(shù)50000000次時輸出為一個完整的周期信號,即實現(xiàn)了50000000分頻。
4.1.3? 高峰時段控制模塊
高峰時段控制模塊通過輸入信號來控制在高峰時期主、次干道的紅黃綠燈亮滅情況,以及點亮時間的倒數(shù)計時情況,其元件符號如圖9所示。輸入信號有1Hz的周期信號clk1Hz、復位信號rst、緊急情況控制信號hold、狀態(tài)轉換使能信號en;輸出信號有主干道倒數(shù)計時cntzhu、次干道倒數(shù)計時cizhu、主干道紅黃綠燈亮滅顯示lightzhu、次干道紅黃綠燈亮滅顯示lightci。
圖10為高峰時段控制模塊仿真波形圖,主、次干道點亮紅燈用“100”表示,點亮黃燈用“010”表示,點亮綠燈用“001”表示。從圖10可看出,當rst、hold、en分別為1、X、X時(X代表未知,可以是0也可以是1,下同),主干道綠燈點亮且倒數(shù)計時為50秒,次干道紅燈點亮且倒數(shù)計時為55秒,屬于復位狀態(tài);當rst、hold、en分別為0、1、X時,主干道紅燈點亮且倒數(shù)計時為50秒,次干道紅燈點亮且倒數(shù)計時為55秒,屬于緊急情況狀態(tài);當rst、hold、en分別為0、0、0時,主、次干道紅黃綠燈亮滅情況保持原來狀態(tài)不變,倒數(shù)計時數(shù)值保持不變,屬于保持狀態(tài);當rst、hold、en分別為0、0、1時,交通燈屬于正常工作狀態(tài),此時主、次干道紅黃綠燈亮滅情況及倒數(shù)計時情況符合圖2中所示,即主干道通行(綠燈亮)時間為50秒,次干道通行時間為25秒。
4.1.4? 非高峰時段控制模塊
非高峰時段控制模塊通過輸入信號來控制在非高峰時期主、次干道的紅黃綠燈亮滅情況,以及點亮時間的倒數(shù)計時情況,其輸入輸出信號與高峰時段控制模塊完全一致,元件符號如圖11所示。
圖12為非高峰時段控制模塊仿真波形圖,可以看出,當rst、hold、en分別為1、X、X時,主干道綠燈點亮且倒數(shù)計時為30秒,次干道紅燈點亮且倒數(shù)計時為35秒,屬于復位狀態(tài);當rst、hold、en分別為0、1、X時,主干道紅燈點亮且倒數(shù)計時為30秒,次干道紅燈點亮且倒數(shù)計時為35秒,屬于緊急情況狀態(tài);當rst、hold、en分別為0、0、0時,主、次干道紅黃綠燈亮滅情況保持原來狀態(tài)不變,倒數(shù)計時數(shù)值保持不變,屬于保持狀態(tài);當rst、hold、en分別為0、0、1時,交通燈屬于正常工作狀態(tài),此時主、次干道紅黃綠燈亮滅情況及倒數(shù)計時情況符合圖3中所示,即主干道通行(綠燈亮)時間為30秒,次干道通行時間為25秒。
4.1.5? 選擇模塊
選擇模塊是一個二選一數(shù)據(jù)選擇器,選擇控制信號為s,輸入數(shù)據(jù)有高峰時段控制模塊的輸出數(shù)據(jù)和非高峰時段控制模塊的輸出數(shù)據(jù)。當處于高峰時段時選擇高峰時段的數(shù)據(jù),否則選擇非高峰時段的數(shù)據(jù),元件符號如圖13所示。
圖14為選擇模塊仿真波形圖,此時高峰時段的數(shù)據(jù)為主干道通行并從50秒開始倒計時,次干道禁止通行并從55秒開始倒計時;非高峰時段的數(shù)據(jù)為主干道禁止通行并從30秒開始倒計時,次干道通行并從25秒開始倒計時。從波形可以看出,當s為1時選擇的是高峰時段的數(shù)據(jù),當s為0時選擇的是非高峰時段的數(shù)據(jù)。
4.1.6數(shù)碼管動態(tài)顯示模塊
數(shù)碼管動態(tài)顯示模塊采用動態(tài)掃描的方式用八段數(shù)碼管來顯示紅黃綠燈倒數(shù)計時的數(shù)值,其元件符號如圖15所示。輸入信號有動態(tài)掃描復位信號reset、掃描時鐘clk10KHz、主次干道倒計時的數(shù)值;輸出數(shù)據(jù)有位選信號sel和段選信號seg。位選信號sel為“10000000”“01000000”時,選擇的是主干道數(shù)據(jù)cntzhu的十位和各位;sel為“00000010”“00000001”時,選擇的是次干道數(shù)據(jù)cntci的十位和各位。段選信號seg為共陽極的八段數(shù)碼管譯碼輸出,當seg為“11111001”時數(shù)碼管顯示為“1”,當seg為“10100100”時數(shù)碼管顯示為“2”。
圖16為數(shù)碼管動態(tài)顯示模塊仿真波形圖,從圖中可以看出,當sel為“10000000”時應選擇主干道的十位數(shù)據(jù)即“2”,而此時seg數(shù)值為“10100100”,在數(shù)碼管上顯示剛好就是“2”,說明仿真波形正確。
4.2? 頂層電路設計
交通燈控制系統(tǒng)頂層電路設計采用原理圖輸入方式進行,通過調(diào)用已生成的各底層模塊元件符號,并將它們做適當連接就可實現(xiàn)頂層電路的設計,電路如圖17所示。
5交通燈控制系統(tǒng)的硬件實現(xiàn)
本設計選用小梅哥AC101-EDA開發(fā)板作為硬件驗證平臺,首先對交通燈控制系統(tǒng)頂層電路的輸入輸出引腳進行鎖定,然后重新編譯并下載到開發(fā)板FPGA芯片EP4CE6E22C8中,最后對交通燈控制系統(tǒng)進行硬件測試驗證。
硬件驗證結果如圖18所示,(a)為非高峰時段交通燈控制系統(tǒng)處于緊急狀態(tài)的情況,此時主干道和次干道都禁止通行,專為應急車開道;(b)為高峰時段交通燈控制系統(tǒng)處于正常運行的情況,此時主干道通行,次干道禁止通行,且主干道倒計時顯示為47秒,次干道倒計時顯示為52秒;(c)為交通燈控制系統(tǒng)處于正常運行的情況,此時主干道由綠燈變成了黃燈,次干道禁止通行,且主干道和次干道倒計時顯示均為3秒;(d)為交通燈控制系統(tǒng)處于正常運行的情況,此時主干道禁止通行,次干道通行,且主干道倒計時顯示為26秒,次干道倒計時顯示為21秒。以上四種情況基本上包含了本交通燈控制系統(tǒng)的運行情況,從硬件驗證結果可以看出,所設計的電路完全實現(xiàn)了本交通燈控制系統(tǒng)的設計要求。
6? 結束語
本文基于FPGA芯片采用層次化的設計方法設計了一款交通燈控制系統(tǒng)。設計過程中,首先將交通燈控制系統(tǒng)分成多個底層電路模塊;然后通過Quartus Ⅱ軟件采用Verilog HDL語言設計各底層電路模塊并對其進行仿真分析;接著把設計好的各底層電路模塊生成元件符號并調(diào)用它們用原理圖設計方式進行交通燈控制系統(tǒng)頂層電路設計;最后把設計好的頂層電路進行管腳鎖定并下載到FPGA芯片EP4CE6E22C8中對其進行硬件測試驗證。仿真和硬件驗證結果表明,本交通燈控制系統(tǒng)在實現(xiàn)常規(guī)交通指揮功能的同時,還能夠在一定程度上根據(jù)高峰時段和非高峰時段車流量的變化調(diào)節(jié)車輛通行時間,并且還具有在特殊情況時為應急車開道的功能,具有一定的實用價值。
參考文獻:
[1] 沈晟.基于FPGA的交通燈控制系統(tǒng)的設計與實現(xiàn)[D].昆明:昆明理工大學,2010.
[2] 孫輝.基于FPGA的實時交通燈控制系統(tǒng)的設計與實現(xiàn)[D].武漢:華中科技大學,2011.
[3] 劉艷昌,王廷雨.基于FPGA的交通燈控制系統(tǒng)設計[J].河南科技學院學報(自然科學版),2013,41(4):67-73.
[4] 林倩,孫晴,李柳群,等.基于FPGA的多相位交通控制系統(tǒng)的設計[J].電聲技術,2015,39(11):37-41.
[5] 張炯,陳初俠,操曉思,等.基于FPGA的出租車計費系統(tǒng)設計[J].電腦知識與技術,2021,17(13):93-95.
【通聯(lián)編輯:朱寶貴】
收稿日期:2021-06-25
基金項目:巢湖學院2021年度國家級大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(項目編號:202110380002);巢湖學院2019年度校級質(zhì)量工程項目(項目編號:ch19yykc01);巢湖學院2020年度校級一流課程建設項目(項目編號:chylkc015);巢湖學院2020年度校級質(zhì)量工程項目(項目編號:ch20jxyj14)
作者簡介:趙萬里(2000—),男,安徽亳州人,本科在讀,主要研究方向為電子電路設計;陳初俠(1984—),男,江西樂安人,通信作者,實驗師,碩士,主要研究方向為EDA技術、數(shù)字圖像處理等。
3073500338209