天天看點

有限狀态機FSM的了解

F.S.M

F:有限

S:狀态

M:機

有限狀态機FSM思想廣泛應用于硬體控制電路設計,也是軟體上常用的一種處理方法(軟 件上稱為FMM--有限消息機)。它把複雜的控制邏輯分解成有限個穩定狀态,在每個狀态 上判斷事件,變連續處理為離散數字處理,符合計算機的工作特點。同時,因為有限狀 态機具有有限個狀态,是以可以在實際的工程上實作。但這并不意味着其隻能進行有限 次的處理,相反,有限狀态機是閉環系統,有限無窮,可以用有限的狀态,處理無窮的 事務。

有限狀态機的工作原理如圖1所示,發生事件(event)後,根據目前狀态(cur_state) ,決定執行的動作(action),并設定下一個狀态号(nxt_state)。

-------------

| |-------->執行動作action

發生事件event ----->| cur_state |

| |-------->設定下一狀态号nxt_state

-------------

目前狀态

圖1 有限狀态機工作原理

e0/a0

--->--

| |

-------->----------

e0/a0 | | S0 |-----

| -<------------ | e1/a1

| | e2/a2 V

---------- ----------

| S2 |-----<-----| S1 |

---------- e2/a2 ----------

圖2 一個有限狀态機執行個體

--------------------------------------------

目前狀态 s0 s1 s2 | 事件

--------------------------------------------

a0/s0 -- a0/s0 | e0

--------------------------------------------

a1/s1 -- -- | e1

--------------------------------------------

a2/s2 a2/s2 -- | e2

--------------------------------------------

表1 圖2狀态機執行個體的二維表格表示(動作/下一狀态)

圖2為一個狀态機執行個體的狀态轉移圖,它的含義是:

在s0狀态,如果發生e0事件,那麼就執行a0動作,并保持狀态不變;

如果發生e1事件,那麼就執行a1動作,并将狀态轉移到s1态;

如果發生e2事件,那麼就執行a2動作,并将狀态轉移到s2态;

在s1狀态,如果發生e2事件,那麼就執行a2動作,并将狀态轉移到s2态;

在s2狀态,如果發生e0事件,那麼就執行a0動作,并将狀态轉移到s0态;

有限狀态機不僅能夠用狀态轉移圖表示,還可以用二維的表格代表。一般将目前狀 态号寫在橫行上,将事件寫在縱列上,如表1所示。其中“--”表示空(不執行動作,也 不進行狀态轉移),“an/sn”表示執行動作an,同時将下一狀态設定為sn。表1和圖2表示 的含義是完全相同的。

繼續閱讀