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表示 的含義是完全相同的。