學習筆記 狀態機

2021-10-20 16:32:54 字數 2597 閱讀 1716

狀態機是有限狀態自動機的簡稱,是現實事物執行規則抽象而成的一種數學模型

將電路的全部工作方式,分成幾個場景,這些場景的工作方式明顯不同,然後將這些場景通過數學模型表示出來

輸出只和狀態有關而與輸入無關

狀態表

輸出不僅和狀態有關而且和輸入有關係

狀態表

人有三個狀態健康, 感冒,**中。

觸發的條件有淋雨(t1),吃藥(t2),打針(t3),休息(t4)。

所以狀態機就是

健康-> (t4) ->健康;

健康-> (t1) ->感冒;

感冒-> (t2) ->**中;

感冒-> (t3) ->健康;

**中- (t45->健康,等等。

就是這樣狀態在不同的條件下跳轉到自己或不同狀態的圖。簡單的講就是狀態轉換圖,如果學過模電的話,對於狀態轉換圖應該比較熟悉。狀態轉換圖如下所示:

上圖所示代表,我們現有四個狀態,在s0狀態下我收到00那麼我就跳轉到s1狀態,如果在s1狀態下我收到10那麼我們就跳轉到s2。如果在s2狀態如果收到10就跳轉到s0,如果收到00那麼就跳轉到s3。

記憶當前狀態機所處的狀態——就是我當前是什麼狀態我就寫什麼狀態,00就表示s1狀態,01就表示s2狀態。

根據輸入訊號和當前狀態決定下一狀態

當前狀態和輸入訊號決定當前狀態的輸出

1.狀態機要安全。

要求我們的狀態機要 完備不能進入死迴圈,特別是不能進入非預知的狀態。

2.狀態機的設計要滿足面積和速度的要求。

要求設計簡潔、高效的狀態機。

3.狀態機的設計要清晰易懂,易維護。

乙個狀態機至少要包含兩個狀態。例如自動門,有 open 和 closed 兩個狀態。

事件就是執行某個操作的觸發條件或者口令。對於自動門,「按下開門按鈕」就是乙個事件。

事件發生以後要執行動作。例如事件是「按開門按鈕」,動作是「開門」。程式設計的時候,乙個 action 一般就對應乙個函式。

也就是從乙個狀態變化為另乙個狀態。例如「開門過程」就是乙個變換。

三段式狀態機一般包含以下三段:當前狀態、下一狀態和輸出。

//第乙個程序,同步時序always模組,格式化描述次態暫存器遷移到現態寄

存器always @ (posedge clk or negedge rst_ n)begin

if(!rst_ n)begin

current state <= idle:

endelse begin

current state <= next state;

//注意,使用的是非阻塞賦值

endend

//第二個程序,組合邏輯always模組,描述狀態轉移條件判斷

always @ (

*)begin //電平觸發

case

(current_ state)begin

s1:begin

if..

.begin

next_ state= s2;

//阻 塞賦值

else begin

next_ state= s1;

endend

s2:begin

if..

.begin

.....

.default

: begin //狀態機要完 備

next state= idle;

endendcase

end

//第三個程序,同步時序always模組,格式化描述暫存器輸出

always @ (posedge clk or negedge rst_ n) begin

if(!rst_ n)begin

...//初始化

endelse

if(current_ state==s1)begin

out1<=

1'b1;

//注意 是非阻塞邏輯

endelse begin

out1 <='"b0;

endend

1.三段always模組中,第乙個和第三個always模組是同步時序always,用非阻塞賦值(「<=」);第二個always模組是組合邏輯always模組,用阻塞賦值(「=」)。關於阻塞賦值的含義可查閱資料

2.第二部分為組合邏輯always模組,對於always的敏感列表必須採用always@ (*)的方式。

3.第二部分,組合邏輯always模組,裡面判斷條件一定要包含所有情況!可以用else保證包含完全。

4.需要注意:第二部分case中的條件應該為當前態( current state)。

5.三段式並不是一定要寫為3個always塊,如果輸出更多,就不止3段了。

狀態機學習筆記(一)

狀態機可歸納為4個要素,即現態 條件 動作 次態。詳解如下 現態 是指當前所處的狀態。條件 又稱為 事件 當乙個條件被滿足,將會觸發乙個動作,或者執行一次狀態的遷移。動作 條件滿足後執行的動作。動作執行完畢後,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足後,也可以不執行任何動...

狀態機學習筆記(一)

狀態機可歸納為4個要素,即現態 條件 動作 次態。詳解如下 現態 是指當前所處的狀態。條件 又稱為 事件 當乙個條件被滿足,將會觸發乙個動作,或者執行一次狀態的遷移。動作 條件滿足後執行的動作。動作執行完畢後,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足後,也可以不執行任何動...

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...