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


評論