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