三種狀態機 分析 對比和小結

2021-09-10 05:03:42 字數 3390 閱讀 2302

本文簡化所有邏輯重點講解狀態機的框架。

先給幾點小結:

小結1.在原理圖和實際變現上來說,一段式和三段式完全一致,但在**量大的情況下三段式**更容易維護。

小結2.二段式的輸出由組合邏輯驅動,不僅可能輸出毛刺,而且不利於時許約束、分析。

小結3.狀態機有著流水線的「缺點」:上電之初若不全面指定初始狀態,則可能有若干個時鐘的無效輸出。

狀態機一般有3個基本組成要素:

要素1.新狀態

要素2.當前狀態

要素3.輸出

當每個clk到來,要完成3個任務:

任務1.將「新狀態」賦給「當前狀態」

任務2.產生下乙個「新狀態」(可能包含組合邏輯)

任務3.根據「當前狀態」產生輸出(可能包含組合邏輯)

以下分別給出三種狀態機的框架**、原理圖、**激勵**和**波形圖

一段式:

形式上,丟掉「新狀態」這個媒介,直接把新狀態的值賦給「當前狀態」,故沒有任務2。

形式上,在乙個觸發器裡完成任務1、3,但實際上這需要2個觸發器,因為1個觸發器只有一組輸出/輸入。

二段式:用1個觸發器完成任務1,用乙個組合邏輯完成任務2、3。最後的輸出由組合邏輯驅動,可能會產生毛刺,不利於時序分析和優化。

三段式:

乙個觸發器完成任務1,乙個組合邏輯完成任務2,乙個觸發器完成任務3

**激勵**:

本文邏輯簡單,三種狀態機波形幾乎一致。

描述狀態機的三種方法 小結

author ssszw email szwsongzhengwei 163.com 用乙個 always 模組用時序邏輯電路同時描述狀態轉移和狀態輸出。使用時序邏輯電路和組合邏輯電路同時描述狀態的轉移和輸出 always posedge clk begin case current state s...

三種不同狀態機寫法

1 reg 3 0 cs,ns 2 always posedge clk or negedge rst n begin 3 if rst n begin 4 cs idle 5 cmd 3 b111 6 end 7 else begin 8 case cs 9 idle if wr req begi...

整理 狀態機的兩種寫法對比

狀態機可以用兩種方法實現 豎著寫 在狀態中判斷事件 和橫著寫 在事件中判斷狀態 這兩種實現在本質上是完全等效的,但在實際操作中,效果卻截然不同。豎著寫 在狀態中判斷事件 c 片段 cur state nxt state switch cur state else if e1 event else i...