摘 要:交通燈控制系統在城市交通監管中起著極其重要的作用。應用VHDL語言,在Altera公司的Max+Plus Ⅱ軟件環境下,通過模塊化編程完成了燈亮時間可調的交通燈控制系統設計,并進行了邏輯綜合、仿真和硬件下載,系統的軟件仿真和實驗測試結果滿足了設計要求,達到了預期的效果。由于設計采用了EDA技術,不但大大縮短了開發研制周期,提高了設計效率,而且使系統具有設計靈活,實現簡單,性能穩定的特點。
關鍵詞:交通燈控制;FPGA;VHDL;仿真
中圖分類號:TP312 文獻標識碼:B 文章編號:1004373X(2008)1719003
Design of Traffic Light Controller Based on FPGA
LI Guodong,REN Zhiping
(School of Electronic Engineering,Xi′an Shiyou University,Xi′an,710065,China)
Abstract:The traffic light controller has become an indispensable part of the traffic systems,playing an important role in the traffic supervision.This paper realizes the design of traffic light controller whose flickering times is adaptively changeable with VHDL.The Max+Plus Ⅱ software automatically completed the VHDL resource program analysis,logic synthesis,optimization and device programming.The results of simulation meet scheme design.With EDA technology,the design has the advantages of facility design,convenient operation,high reliability and the design efficiency is also improved.
Keywords:traffic light control;FPGA;VHDL;simulation
交通燈是城市交通監管系統的重要組成部分,對于保證機動車輛的安全運行,維持城市道路的順暢起到了重要作用。目前很多城市交叉路口的交通燈實行的是定時控制,燈亮的時間是預先設定好的,在時間和空間方面的應變性能較差,一定程度上造成了交通資源的浪費,加重了道路交通壓力。本文在EDA技術的基礎上,利用FPGA的相關知識設計了交通燈控制系統,可以根據實際情況對燈亮時間進行自由調整,整個設計系統通過Max+Plus Ⅱ軟件進行了模擬仿真,并下載到FPGA 器件中進行硬件的調試,驗證了設計的交通信號燈控制電路完全可以實現預定的功能,具有一定的實用性。
1 系統設計要求
所設計的交通信號燈控制電路,主要適用于在兩條干道匯合點形成的十字交叉路口,路口設計兩組紅綠燈分別對兩個方向上的交通運行狀態進行管理。交通燈的持續閃亮時間由鍵盤輸入控制。燈亮時序如圖1所示,當B方向的紅燈亮時,A方向對應綠燈亮,由綠燈轉換成紅燈的過渡階段黃燈亮,即B方向紅燈亮的時間等于A方向綠燈和黃燈亮的時間之和。同理,當A方向的紅燈變亮時,B方向的交通燈也遵循此規則。各干道上安裝有數碼管,以倒計時的形式顯示本道各信號燈閃亮的時間。當出現特殊情況時,各方向上均亮紅燈,倒計時停止。特殊運行狀態結束后,控制器恢復原來的狀態,繼續運行。

2 系統整體設計
整個系統設計如圖2所示,該系統主要由計數模塊、控制模塊、分頻模塊、分位模塊以及顯示電路構成。其中分頻模塊主要將系統輸入的基準時鐘信號轉換為1 Hz的激勵信號,驅動計數模塊和控制模塊工作。控制模塊根據計數器的計數情況對交通燈的亮滅及持續時間進行控制,并通過分位電路將燈亮時間以倒計時的形式通過數碼管顯示出來。圖中Reset是復位信號,高電平有效,可以實現對計數器的異步清零。Hold為保持信號,當Hold為“1”,計數器暫停計數,表示出現特殊情況,各方向車輛都處于禁行狀態。

3 主要功能模塊設計及仿真
3.1 計數模塊設計
計數模塊主要實現累加循環計數,計數的最大值由鍵盤輸入控制,輸出的計數值為控制模塊的燈控提供參考,計數器的主程序設計如下:
entity counter is
port
(clock:in std_logic;
reset:in std_logic;---復位信號
hold:in std_logic;
A,B,C:in std_logic_vector(3 downto 0);---鍵盤輸入值
key:out integer range 0 to 255;
countnum:buffer integer range 0 to 255); ---計數值
end;
architecture behavior of counter is
signal keyin: integer range 0 to 255;
begin
keyin<=conv_integer(A)*100+conv_integer(B)*10+conv_integer(C);
process(reset,clock)
begin
if reset=′1′ then
countnum<=0;
elsif rising_edge(clock) then
if hold=′1′ then---出現緊急情況,計數器暫停計數
countnum<=countnum;
elsif countnum=keyin then
countnum<=0;
else
countnum<=countnum+1;
end if;
end if;
end process;
key<=keyin;
end;
計數模塊的仿真如圖3所示,從圖中可以看出,在時鐘的驅動下,計數值不斷自加,當計數值countnum等于鍵盤輸入值32(key=32)時, 計數返回到0,開始下一輪計數。當Hold檢測到特殊情況時置‘1’,使計數器暫停計數。
3.2 控制器模塊的仿真設計
在控制器模塊中,紅、綠、黃三盞燈工作的總時間由鍵盤輸入,各交通燈時間分配規則如下:紅燈時間占總時間的1/2,綠燈時間占3/8,黃燈時間占1/8,本設計中鍵盤輸入值為32(key=32),正常情況下紅燈亮16 s,綠燈亮12 s,黃燈亮4 s。

控制模塊仿真圖控制器仿真情況如圖4所示,當hold為低電平,計數值countnum<12時,greenA輸出高電平,A東西方向綠燈亮起車輛通行,此時與之相對應的redB輸出高電平,B方向紅燈亮起車輛禁行。A方向顯示交通燈閃爍持續時間的數碼管numA從12開始遞減,同時B方向顯示交通燈閃爍持續時間的數碼管numB從16開始遞減。當12 3.3 分位模塊設計 分位模塊的設計主要是將燈亮時間分為十位和個位,通過兩個相應的數碼管分別顯示出來。本設計中燈亮時間最長不超過40 s(numin<40),numA,numB分別表示十位、個位上的數字,分位模塊程序設計的流程圖如圖5所示。 分位模塊的仿真如圖6所示,numin的數值大小可以通過numA,numB的組合以十進制數值顯示,從而實現了分位功能。 4 系統的硬件設計及調試 本系統的主要邏輯設計由一片EP1K30TC144-3芯片完成,編寫的VHDL源程序在Altera公司的邏輯綜合工具Max+Plus Ⅱ下經過編譯和功能仿真測試后,針對下載芯片進行管腳配置,下載到EP1K30TC144-3芯片中,進行相應的硬件調試,調試結果與軟件仿真的結果相吻合,驗證了設計完成了預定功能。 5 結 語 本文利用硬件描述語言VHDL編程,借助Altera公司的Max+Plus Ⅱ軟件環境下進行了編譯及仿真測試,通過 FPGA芯片實現了一個實用的交通信號燈控制系統,設計由于采用了EDA技術,不但大大縮短了開發研制周期,提高了設計效率,而且使系統具有設計靈活,實現簡單,性能穩定的特點。 參 考 文 獻 [1]張明.VHDL實用教程.計算機技術與發展,2008,18(3):181-183. [2]譚會生,張昌凡,EDA 技術及應用[M].西安:西安電子科技大學出版社,2001. [3]潘松,王國棟,VHDL 實用教程[M].西安:西安電子科技大學出版社,2000. [4]張順興,數字電路與系統設計[M].南京:東南大學出版社,20004. [5]徐志軍,徐光輝,PLD/FPGA 的開發與應用[M].北京:電子工業出版社,2002. [6]蔣璇,臧春華,數字系統設計與PLD應用技術[M].北京:電子工業出版社,2006. [7]王永華,現代電氣控制及PLD技術[M].北京:北京航空航天大學出版社,2005. [8]王成勇,智能交通燈控制系統[J].廣東技術師范學院學報,2006(4):92-94. [9]張海英,余臻,陳燕萍,模糊控制在智能交通燈監控系統中的應用[J].計算機技術與發展,2008,18(3):181-183
