有限狀態機功能強大,但是不代表提倡;借助綜合工具實現電路功能,對狀態轉移圖或者verilog描述過程產生錯誤或者錯誤理解的話可能會出問題。
對狀態轉移圖充分理解
有限狀態機的狀態不能太多,要盡可能小。
設計一個
三大方程:輸出方程、狀態轉移方程、激勵方程;
moore型速度快,僅受限於輸出邏輯決定,mealy受輸入信號和輸出邏輯影響。
有限狀態機是唯一可以不用知道相關的電路結構,
編碼方式:二進制編碼(功耗大,還存在競爭冒險,最簡化);格雷碼(相鄰狀態跳轉時僅有一個bit發生變化);one-hot編碼(任意狀態跳轉只有2個bit變化)
寫法:兩段式 (狀態轉移方程,輸出方程&激勵方程),三段式(狀態轉移方程,輸出方程,激勵方程)
因為僅有狀態轉移方程在存儲電路中進行
使用case將狀態隔離,
不建議,電路中可能會出問題,即使語法沒問題:next_state=x 初始化,使得系統進入正確狀態;
在if-else或者case語句中,狀態一定要寫完整,即使狀態沒有發生變化也要寫上,分支一定要寫全,每個分枝條件下狀態和輸出都要進行賦值,即使轉態沒有發生變化
兩段式狀態機
優點:把狀態碼的指定與狀態機控制的輸出聯系起來,把狀態的變化直接用作輸出,可以提高輸出信號的開關速度,並節省電路器件。
缺點:輸出開關的維持時間必須與狀態的維持時間一致。