利用有限狀態(tài)機的交通燈控制系統(tǒng)設計與仿真
摘要:基于硬件電路設計軟件化的思想,根據(jù)路口交通燈控制功能要求,以可編程邏輯器件(FPGA)為硬件基礎,以有限狀態(tài)機為設計基礎,通過對系統(tǒng)狀態(tài)及其轉移關系的定義,運用多進程方式描述硬件模塊的邏輯關系,用VHDL語言編程實現(xiàn)了交通燈控制系統(tǒng),經(jīng)仿真,并在實驗箱上進行功能測試,正確實現(xiàn)了預期功能。僅用一片可編程邏輯器件,即完成需要的控制功能,設計思路清晰,實現(xiàn)過程靈活。
關鍵詞:有限狀態(tài)機;交通燈;控制系統(tǒng);設計
實現(xiàn)路口交通燈控制器系統(tǒng)的方法很多,可以用標準邏輯器件、可編程序控制器PLC、單片機等方案來實現(xiàn)。但是這些方法在進行功能修改及調(diào)試時,都涉及硬件電路的調(diào)整,在一定程度上增加了工作的難度。隨著電子技術的迅猛發(fā)展,集成電路的設計方法也在不斷地更新,傳統(tǒng)的“固定功能集成電路+連線”的手工電子設計方法已被現(xiàn)代的對“芯片”進行設計的電子設計自動化(EDA)的設計方法所替代,使用“語言”進行電子電路設計已成為一種趨勢。筆者設計開發(fā)的交通信號燈控制器系統(tǒng),采用EDA技術和可編程邏輯器件FPGA,應用VHDL有限狀態(tài)機來設計控制系統(tǒng)的控制功能,并可根據(jù)實際情況對燈亮時間進行自由調(diào)整,整個系統(tǒng)通過OuartusⅡ軟件平臺進行了仿真,并下載到FPGA器件EP1C120240C8中進行調(diào)試,驗證了設計的交通信號燈控制電路完全可以實現(xiàn)預定的功能。該系統(tǒng)可以較好地緩解交通壓力,并可實現(xiàn)對突發(fā)事件進行緊急處理,具有一定的實用性。
1 有限狀態(tài)機的基本特性
有限狀態(tài)機FSM(finite state machine)由有限的狀態(tài)及其相互之間的轉移關系構成。從有限狀態(tài)機的角度看,許多數(shù)字系統(tǒng)中的時序電路都可以用其來描述,因此,有限狀態(tài)機是一種重要的、易于建立的、比較規(guī)范、以描述控制特性為主的建模方法,它可以應用于從系統(tǒng)分析到設計的所有階段。同時,因為有限狀態(tài)機具有有限個狀態(tài),所以可以在實際的工程上實現(xiàn)。但這并不意味著其只能進行有限次的處理。相反,有限狀態(tài)機是閉環(huán)系統(tǒng),可以用有限的狀態(tài),處理無窮的事務。
在用VHDL語言來設計實用系統(tǒng)的控制功能時,通常會選用有限狀態(tài)機方法來實現(xiàn),因為無論與VHDL的其他設計方案相比,還是與可完成相同功能的CPU相比,有限狀態(tài)機有其獨特的、難以超越的優(yōu)越性,主要表現(xiàn)在以下幾個方面:
1)有限狀態(tài)機由純硬件來實現(xiàn),工作方式是根據(jù)控制信號按照預先設定的狀態(tài)進行順序運行,在運行和控制方式上類似于控制靈活和方便的CPU,而在設計中能使用各種完整的容錯技術,使其在運行速度和工作可靠性方面又都優(yōu)于CPU。
2)用VHDL設計有限狀態(tài)機,設計流程和方案相對固定,程序?qū)哟畏置?,程序結構簡單清晰,特別是可以定義符號化枚舉類型的狀態(tài),使VHDL綜合器對狀態(tài)機具有強大的優(yōu)化功能。
3)狀態(tài)機容易構成性能良好的同步時序模塊,為了消除電路中的毛刺現(xiàn)象,在有限狀態(tài)機設計中有多種設計方案可供選擇,相比其他硬件設計方法,電路的完善性更能得到保證。
因此,在控制靈活、高速、高可靠性要求的系統(tǒng)設計中應用VHDL設計有限狀態(tài)機將是非常實用的選擇。
利用VHDL的有限狀態(tài)機設計不同實用邏輯控制系統(tǒng)時,通常采用枚舉類型來定義狀態(tài)機的狀態(tài),這樣可以獲得可綜合的、高效的VHDL描述,并且使用多進程方式來描述狀態(tài)機的內(nèi)部邏輯。例如:可用兩個進程來描述,一個進程描述時序邏輯功能,通常稱為時序進程;另一個進程描述組合邏輯功能,即組合進程,必要時還可以引入第3個進程完成其他的邏輯功能,另外還需要相應的說明部分,在說明部分用TYPE定義新的數(shù)據(jù)類型和狀態(tài)名,以及在此新數(shù)據(jù)下定義的狀態(tài)變量。
2 基于有限狀態(tài)機的交通燈控制系統(tǒng)設計
2.1 功能分析
作為一個十字路口交通信號燈控制系統(tǒng),每條道路都需要有一組紅、綠、黃燈和倒計時計數(shù)器,用于指揮車輛的有序通行。為便于區(qū)分,將十字路口交通信號燈分為主路a和支路b,應具有以下功能:
1)主路a和支路b各設置兩組(雙向)紅燈、綠燈、黃燈,以指示通行狀態(tài):同時還設置數(shù)字式的時間顯示,以倒計時方式顯示每一路允許通行或禁止通行的剩余時間。
2)具有復位功能,當出現(xiàn)故障時,可復位回到初始設置狀態(tài)。
3)當主路a或支路b出現(xiàn)緊急情況時,按緊急情況鍵可進入緊急情況狀態(tài),各方向(兩路)均亮紅燈,倒計時停止。當特殊情況結束時,控制其恢復到電路的原來狀態(tài)繼續(xù)運行。
4)主路a或支路b的通行時間可在一定范圍自定義設置。
2.2 交通燈控制系統(tǒng)整體設計
按照功能分析的要求,自頂向下,設計交通燈控制系統(tǒng)的整體組成框圖如圖1所示,它主要由分頻模塊,交通燈控制與倒計時模塊和動態(tài)掃描顯示控制模塊組成。分頻電路用于產(chǎn)生倒計時控制電路所需的周期為1 s的時鐘信號頻率;倒計時控制電路控制交通信號燈(紅、綠、黃)的亮燈時間和亮燈順序。根據(jù)對VHDL的使用熟悉程度,可對各模塊繼續(xù)分解,可視情而定。
2.3 控制與倒計時模塊的有限狀態(tài)機設計
2.3.1 建立狀態(tài)轉移圖
在交通燈控制系統(tǒng)中,交通燈控制與倒計時模塊是系統(tǒng)的核心部分,采用有限狀態(tài)機設計實現(xiàn)。主路a和支路b分別控制該方向上紅、綠、黃信號燈的亮燈時間和亮燈順序,正常工作時共有St0、St1、St2、St3 4種狀態(tài),每個狀態(tài)之間的具體關系如表1所示,其中,red1_cn t、green1_cnt、yellow1_cnt和red2_cnt、green2_cnt、yellow2_cnt分別表示主路a和支路b上紅綠黃燈所亮燈的時間,這里可自己定義倒計時時間。其狀態(tài)轉換圖如圖2所示。ent為倒計時的計數(shù)值,同時用它來判斷是否進入下一個狀態(tài)。
評論