狀態機的寫法
有限狀態機FSM思想廣泛應用于硬件控制電路設計,也是軟件上常用的一種處理方法(軟件上稱為FMM有限消息機)。它把復雜的控制邏輯分解成有限個穩定狀態,在每個狀態上判斷事件,變連續處理為離散數字處理,符合計算機的工作特點。
有限狀態機的工作原理如圖所示,發生事件(event)后,根據當前狀態(cur_state),決定執行的動作(action),并設置下一個狀態號(nxt_state)。
圖 ?有限狀態機工作原理
下圖為一個狀態機實例的狀態轉移圖,它的含義是:
在s0狀態,如果發生e0事件,那么就執行a0動作,并保持狀態不變;
如果發生e1事件,那么就執行a1動作,并將狀態轉移到s1態;
如果發生e2事件,那么就執行a2動作,并將狀態轉移到s2態;
在s1狀態,如果發生e2事件,那么就執行a2動作,并將狀態轉移到s2態;
在s2狀態,如果發生e0事件,那么就執行a0動作,并將狀態轉移到s0態。
圖0一個有限狀態機實例
有限狀態機不僅能夠用狀態轉移圖表示,還可以用二維的表格代表。一般將當前狀態號寫在橫行上,將事件寫在縱列上,如表1所示。其中“--”表示空(不執行動作,也不進行狀態轉移),“an/sn”表示執行動作an,同時將下一狀態設置為sn。下表和圖0表示的含義是完全相同的。
表 ? 圖2狀態機實例的二維表格表示(動作/下一狀態)
時序邏輯電路的數學模型是有限狀態機(FiniteStateMachine)。時序邏輯電路的設計通常用觸發器來實現,狀態機越復雜,設計過程也越復雜。利用MSI(Medium-ScaleIntegration)也可以實現復雜狀態機,雖然設計過程比利用觸發器實現要復雜,但電路相對簡單。在數字邏輯系統中,計數器是基本部件之一。集成計數器芯片類型很多,文中主要討論使用MSI同步計數器74LS161進行復雜狀態機的設計。
74LS161功能介紹
74LS161的引腳排列和邏輯功能如圖1所示。各引出端的邏輯功能如下。1腳為清零端/RD,低電平有效。2腳為時鐘脈沖輸入端CP,上升沿有效(CP↑)。3~6腳為數據輸入端A0~A3,可預置任意四位二進制數。7腳和10腳分別為計數控制端EP和ET,當其中有一腳為低電平時計數器保持狀態不變,當均為高電平時為計數狀態。9腳為同步并行置數控制端/LD,低電平有效。11~14腳為數據輸出端QQ30~。15腳為進位輸出端RCO,高電平有效。
圖1 ? 四位同步二進制計數器74LS161
(a)引線排列圖;(b)邏輯功能圖
設計過程
計數器的狀態轉換一般為順序轉換,電路也很成熟,例如S1→S2、S4→S5等。在實現模M的計數器時,一般也是利用連續狀態進行順序轉換。但如要實現復雜狀態機,則需要充分了解計數器的特性,利用置零端和置數端,完成非順序狀態轉換,例如S1→S0、S4→S6等,從而實現復雜狀態機。下面討論對計數器74LS161的功能進行擴展,實現非順序狀態轉換(圖2)。計數器狀態與符號的對照見表1.
表1 ?計數器狀態與符號的對照表
圖2中,74LS161(0)片和74LS161(1)片的初始狀態均設為0,兩片在CP脈沖到來時同時開始計數,當(1)片循環至狀態S4時,會給(0)片一個置位信號,當第5個CP脈沖到來時,(0)片被置位狀態S7.之后,一直到第9個CP脈沖到來前,由于(1)片Q2端始終為1,故(0)片始終保持狀態S7.當第9個CP脈沖到來時,(1)片和(0)片的狀態分別為S9和S8,此時,(1)片得到(0)片Q3端的置位信號,當下一個CP脈沖到來時,(1)片和(0)片的狀態分別為S4和S9.在第10個CP脈沖作用下,(1)片和(0)片的狀態分別為S4和S9.在第11個CP脈沖作用下,(1)片和(0)片的狀態分別為S4和S7,如此往復。這樣,兩片74LS161(1)片和(0)片并行輸出狀態變化為01000111→01010111→01100111→01110111→10000111→10011000→01001001→01000111,7種狀態非順序的轉換。
圖2 ?非順序狀態轉換電路
如實現非順序更多狀態的轉換,就需要使用更多MSI芯片,圖3為使用三個74LS161芯片實現的復雜狀態機。在圖3中,三個芯片的初始狀態均設為0,并且在CP脈沖到來時同時開始計數,當第7個CP脈沖到來后,實現有效狀態循環000001001001→000001001010→000001001011→000001001100→000001001101→000001001110→000001001111→000001000000→000001010001→000001100010→000001110011→000010000100→000110010101→001010100110→001110110111→010011000111→000011011000→000001001001,為17種非順序狀態的轉換??梢?,實現越復雜的狀態機,轉換的非順序狀態越多,電路越復雜。
圖3 ?復雜狀態機電路圖
可能出現的問題
在實際的電路中,由于使用多個集成電路,可能會出現置0不可靠的情況,這是由多個觸發器的負載不同,置0時間也不完全相同引起的,此時需要在以上電路設計中做一些改進。另外,MSI與負載門電路的連接等問題,可以通過增加上拉電阻、接地電阻及電平轉換等措施解決。
評論
查看更多