Verilog 狀態機的設計 -學習筆記

Verilog 狀態機的設計。
包括三個部分:
1,下一個狀態機的邏輯電路
2,存儲狀態機的當前實現邏輯電路
3,輸入組合邏輯電路。
根據狀態機的輸出信號是否與電路的輸入有關分爲 Mealy 型狀態機和 Moore 型狀態
機。電

狀態機的描述通常有三種方法,稱爲一段式狀態機,二段式狀態機和三段式狀態機。
狀態機的描述通常包含以下四部分

1)利用參數定義語句 parameter 描述狀態機各個狀態名稱,即狀態編碼。狀態編碼
通常有很多方法包含自然二進制編碼,One-hot 編碼,格雷編碼碼等;
2)用時序的 always 塊描述狀態觸發器實現狀態存儲;
3)使用敏感表和 case 語句(也採用 if-else 等價語句)描述狀態轉換邏輯;
4)描述狀態機的輸出邏輯。
下面根據狀態機的三種方法,來比較各種方法的優劣
一段式狀態機是應該避免使用的,該寫法僅僅適用於非常簡單的狀態機設計,不符合組合邏輯與時序邏輯分開的原則,整個結構代碼也不清晰,不利用維護和修。
兩段式狀態機採用兩個 always 模塊實現狀態機的功能,其中一個 always 採用同步時序邏輯描述狀態轉移,另一個 always 採用組合邏輯來判斷狀態條件轉移。兩段式狀態機是推薦的狀態機設計方法。
三段式狀態機在第一個 always 模塊採用同步時序邏輯方式描述狀態轉移,第二個always 模塊採用組合邏輯方式描述狀態轉移規律,第三個 always 描述電路的輸出。通常讓輸出信號經過寄存器緩存之後再輸出,消除電路毛刺。這種狀態機也是比較推崇的,主要是由於維護方便,組合邏輯與時序邏輯完全獨立。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章