有限狀態機在程式設計中作用和意義
阿新 • • 發佈:2019-02-08
1.簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。
2.關於狀態機的一個極度確切的描述是它是一個有向圖形,由一組節點和一組相應的轉移函式組成。狀態機通過響應一系列事件而“執行”。每個事件都在屬於“當前” 節點的轉移函式的控制範圍內,其中函式的範圍是節點的一個子集。函式返回“下一個”(也許是同一個)節點。這些節點中至少有一個必須是終態。當到達終態, 狀態機停。。
3.包含一組狀態集(states)、一個起始狀態(start state)、一組輸入符號集(alphabet)、一個對映輸入符號和當前狀態到下一狀態的轉換函式(transition function)的計算模型。當輸入符號串,模型隨即進入起始狀態。它要改變到新的狀態,依賴於轉換函式。在有限狀態機中,會有有許多 變數,例如,狀態
機有很多與動作(actions)轉換(Mealy機)或狀態(摩爾機)關聯的動作,多重起始狀態,基於沒有輸入符號的轉換,或者指定符號和狀態(非定有 限狀態機)的多個轉換,指派給接收狀態(識別者)的一個或多個狀態,等等。
4.
傳統應用程式的控制流程基本是順序的:遵循事先設定的邏輯,從頭到尾地執行。很少有事件能改變標準執行流程;而且這些事件主要涉及異常情況。“命令列實用程式”是這種傳統應用程式的典型例子。 另一類應用程式由外部發生的事件來驅動——換言之,事件在應用程式之外生成,無法由應用程式或程式設計師來控制。具體需要執行的程式碼取決於接收到的事件,或者它 相對於其他事件的抵達時間。所以,控制流程既不能是順序的,也不能是事先設定好的,因為它要依賴於外部事件。狀態機簡介
狀態機簡寫為FSM(Finite State Machine),主要分為2大類:第一類,若輸出只和狀態有關而與輸入無關,則稱為Moore狀態機;第二類,輸出不僅和狀態有關而且和輸入有關係,則稱為Mealy狀態機。要特別注意的是,因為Mealy狀態機和輸入有關,輸出會受到輸入的干擾,所以可能會產生毛刺(Gitch)現象,使用時應當注意。事實上現在市面上有很多EDA工具可以很方便的將狀態圖的描述轉換成可以綜合的VHDL程式程式碼。-------------------------------------------------------------------------------------------------------------------------------------------