狀態機(一):抽象的控制流程模型

狀態機是一種抽象的邏輯模型。我們先從一個問題入手談談狀態機的抽象過程。

 

例:串行輸入一個二進制bit序列,先輸入的爲高位,實時檢測其表示的二進制數是否能被三整除。

 

我們可以用一個表格來分析一下這個問題:

        現在狀態    

              輸入1後的下一個狀態            

          輸入0後的下一個狀態          

狀態s0

數據a,能被3整除

2*a+1,被3除餘1

2*a,被3整除

狀態s1

數據a,被3除餘1

2*a+1,被3整除

2*a,被3除餘2

狀態s2

數據a,被3除餘2

2*a+1,被3除餘2

2*a,被3除餘1


進一步,我們把它寫成簡介的狀態轉換表:

  input 1 input 0
S0 S1 S0
S1 S0 S2
S2 S2 S1


對應的,繪製狀態轉換圖: 


有了這樣一個狀態轉換圖,該問題也就迎刃而解。


狀態機抽象建模,有三個要素需要分析,一是狀態的定義,二是狀態跳轉條件,三是輸入與輸出。

狀態的定義是最爲關鍵的,狀態是控制流程中的節點,問題的複雜度決定了狀態的多少。狀態間具有互斥性,既同一時刻,狀態機僅可能具有一個狀態。

狀態跳轉往往由輸入決定,這反映狀態機響應外部事件。當然,也會有自動跳轉的不穩定太,描述時序上的自動控制。

根據輸出的決定因素,狀態機可分爲兩類,

第一類,若輸出只和狀態有關而與輸入無關,則稱爲Moore狀態機

第二類,輸出不僅和狀態有關而且和輸入有關係,則稱爲Mealy狀態機

 

上例中,輸出指示序列數據是否能被3整除,僅由狀態決定,因此是Moore機。

 

從上例中,我們可以看出,使用狀態機模型抽象問題,首先需要用狀態的語言描述問題,定義出有限個不同的狀態,這是抽象解決問題最關鍵的一步;其次,需要分析出狀態的轉換關係,既狀態跳轉條件;最後,將輸出與狀態及輸入關聯起來。

 

在數字邏輯中,狀態機模型應用的最爲廣泛,從簡單的跑馬燈,到複雜的CPU,核心部分都是狀態機電路。數字電路實現狀態機由組合電路和時序電路兩部分構成。一般來講,時序電路里的寄存器結構鎖存狀態信息,組合電路實現狀態轉換的邏輯判定。

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