利用有限狀態機的交通燈控制系統設計與仿真
2.3.2 控制與倒計時模塊的VHDL描述
用VHDL設計有限狀態機并沒有固定的格式,但需要遵循一定的編碼風格。一般采用進程(process)描述,有限狀態機描述方式有如下3種:三進程描述、雙進程描述和單進程描述。這里采用雙進程描述:一個是時鐘進程,控制狀態機在時鐘有效沿,根據時鐘有效沿和某些輸入信號條件得到下一狀態并進行狀態遷移;另一個是組合進程,不受時鐘控制,由輸出相關的信號觸發,該進程根據觸發信號決定狀態機的輸出信號值,即通過簡便地定義狀態變量,將狀態描述成進程,每個狀態均可表達為CASE_WHEN語句結構中的一條CASE語句,狀態的轉移通過IF_THEN_ELSE語句實現,并輸出信號以控制其他進程,從而實現狀態的轉移。
在時序進程中,狀態機是隨時鐘脈沖信號clk以同步方式工作,同時還受異步復位信號rst的控制。在rst=1時,狀態機復位,當rst=0(復位無效)而clk發生變化時,狀態機的狀態發生變化,轉向狀態機的下一狀態;在組合進程中,狀態機根據外部輸入的控制信號(如hold),以及來自狀態機內部(如cnt)信號,或當前狀態機的狀態值,確定其下一狀態的走向。
基于有限狀態機的VHDL交通燈控制與倒計時模塊的源程序的實體和結構體部分如下:


評論