FSM 分兩大類:米里型和摩爾型。
組成要素有輸入(包括復位),狀態(包括當前狀態的操作),狀態轉移條件,狀態的輸出條件。
設計FSM 的方法和技巧多種多樣,但是總結起來有兩大類:第一種,將狀態轉移和狀態的操作和判斷等寫到一個模塊(process、block)中。另一種是將狀態轉移單獨寫成一個模塊,將狀態的操作和判斷等寫到另一個模塊中(在Verilog 代碼中,相當于使用兩個“always” block)。其中較好的方式是后者。其原因
如下:
首先FSM 和其他設計一樣,最好使用同步時序方式設計,好處不再累述。而狀態機實現后,狀態轉移是用寄存器實現的,是同步時序部分。狀態的轉移條件的判斷是通過組合邏輯判斷實現的,之所以第二種比第一種編碼方式合理,就在于第二種編碼將同步時序和組合邏輯分別放到不同的程序塊(process,block) 中實現。這樣做的好處不僅僅是便于閱讀、理解、維護,更重要的是利于綜合器優化代碼,利于用戶添加合適的時序約束條件,利于布局布線器實現設計。顯式的 FSM 描述方法可以描述任意的FSM(參考Verilog 第四版)P181 有限狀態機的說明。兩個 always 模塊。其中一個是時序模塊,一個為組合邏輯。時序模塊設計與書上完全一致,表示狀態轉移,可分為同步與異步復位。
標簽:
狀態
上傳時間:
2013-10-23
上傳用戶:yupw24