狀態(tài)機(jī)的寫法
有限狀態(tài)機(jī)FSM思想廣泛應(yīng)用于硬件控制電路設(shè)計(jì),也是軟件上常用的一種處理方法(軟件上稱為FMM有限消息機(jī))。它把復(fù)雜的控制邏輯分解成有限個(gè)穩(wěn)定狀態(tài),在每個(gè)狀態(tài)上判斷事件,變連續(xù)處理為離散數(shù)字處理,符合計(jì)算機(jī)的工作特點(diǎn)。
有限狀態(tài)機(jī)的工作原理如圖所示,發(fā)生事件(event)后,根據(jù)當(dāng)前狀態(tài)(cur_state),決定執(zhí)行的動(dòng)作(action),并設(shè)置下一個(gè)狀態(tài)號(hào)(nxt_state)。

圖 ?有限狀態(tài)機(jī)工作原理
下圖為一個(gè)狀態(tài)機(jī)實(shí)例的狀態(tài)轉(zhuǎn)移圖,它的含義是:
在s0狀態(tài),如果發(fā)生e0事件,那么就執(zhí)行a0動(dòng)作,并保持狀態(tài)不變;
如果發(fā)生e1事件,那么就執(zhí)行a1動(dòng)作,并將狀態(tài)轉(zhuǎn)移到s1態(tài);
如果發(fā)生e2事件,那么就執(zhí)行a2動(dòng)作,并將狀態(tài)轉(zhuǎn)移到s2態(tài);
在s1狀態(tài),如果發(fā)生e2事件,那么就執(zhí)行a2動(dòng)作,并將狀態(tài)轉(zhuǎn)移到s2態(tài);
在s2狀態(tài),如果發(fā)生e0事件,那么就執(zhí)行a0動(dòng)作,并將狀態(tài)轉(zhuǎn)移到s0態(tài)。

圖0一個(gè)有限狀態(tài)機(jī)實(shí)例
有限狀態(tài)機(jī)不僅能夠用狀態(tài)轉(zhuǎn)移圖表示,還可以用二維的表格代表。一般將當(dāng)前狀態(tài)號(hào)寫在橫行上,將事件寫在縱列上,如表1所示。其中“--”表示空(不執(zhí)行動(dòng)作,也不進(jìn)行狀態(tài)轉(zhuǎn)移),“an/sn”表示執(zhí)行動(dòng)作an,同時(shí)將下一狀態(tài)設(shè)置為sn。下表和圖0表示的含義是完全相同的。
表 ? 圖2狀態(tài)機(jī)實(shí)例的二維表格表示(動(dòng)作/下一狀態(tài))

時(shí)序邏輯電路的數(shù)學(xué)模型是有限狀態(tài)機(jī)(FiniteStateMachine)。時(shí)序邏輯電路的設(shè)計(jì)通常用觸發(fā)器來實(shí)現(xiàn),狀態(tài)機(jī)越復(fù)雜,設(shè)計(jì)過程也越復(fù)雜。利用MSI(Medium-ScaleIntegration)也可以實(shí)現(xiàn)復(fù)雜狀態(tài)機(jī),雖然設(shè)計(jì)過程比利用觸發(fā)器實(shí)現(xiàn)要復(fù)雜,但電路相對(duì)簡單。在數(shù)字邏輯系統(tǒng)中,計(jì)數(shù)器是基本部件之一。集成計(jì)數(shù)器芯片類型很多,文中主要討論使用MSI同步計(jì)數(shù)器74LS161進(jìn)行復(fù)雜狀態(tài)機(jī)的設(shè)計(jì)。
74LS161功能介紹
74LS161的引腳排列和邏輯功能如圖1所示。各引出端的邏輯功能如下。1腳為清零端/RD,低電平有效。2腳為時(shí)鐘脈沖輸入端CP,上升沿有效(CP↑)。3~6腳為數(shù)據(jù)輸入端A0~A3,可預(yù)置任意四位二進(jìn)制數(shù)。7腳和10腳分別為計(jì)數(shù)控制端EP和ET,當(dāng)其中有一腳為低電平時(shí)計(jì)數(shù)器保持狀態(tài)不變,當(dāng)均為高電平時(shí)為計(jì)數(shù)狀態(tài)。9腳為同步并行置數(shù)控制端/LD,低電平有效。11~14腳為數(shù)據(jù)輸出端QQ30~。15腳為進(jìn)位輸出端RCO,高電平有效。

圖1 ? 四位同步二進(jìn)制計(jì)數(shù)器74LS161
(a)引線排列圖;(b)邏輯功能圖
設(shè)計(jì)過程
計(jì)數(shù)器的狀態(tài)轉(zhuǎn)換一般為順序轉(zhuǎn)換,電路也很成熟,例如S1→S2、S4→S5等。在實(shí)現(xiàn)模M的計(jì)數(shù)器時(shí),一般也是利用連續(xù)狀態(tài)進(jìn)行順序轉(zhuǎn)換。但如要實(shí)現(xiàn)復(fù)雜狀態(tài)機(jī),則需要充分了解計(jì)數(shù)器的特性,利用置零端和置數(shù)端,完成非順序狀態(tài)轉(zhuǎn)換,例如S1→S0、S4→S6等,從而實(shí)現(xiàn)復(fù)雜狀態(tài)機(jī)。下面討論對(duì)計(jì)數(shù)器74LS161的功能進(jìn)行擴(kuò)展,實(shí)現(xiàn)非順序狀態(tài)轉(zhuǎn)換(圖2)。計(jì)數(shù)器狀態(tài)與符號(hào)的對(duì)照見表1.

表1 ?計(jì)數(shù)器狀態(tài)與符號(hào)的對(duì)照表
圖2中,74LS161(0)片和74LS161(1)片的初始狀態(tài)均設(shè)為0,兩片在CP脈沖到來時(shí)同時(shí)開始計(jì)數(shù),當(dāng)(1)片循環(huán)至狀態(tài)S4時(shí),會(huì)給(0)片一個(gè)置位信號(hào),當(dāng)?shù)?個(gè)CP脈沖到來時(shí),(0)片被置位狀態(tài)S7.之后,一直到第9個(gè)CP脈沖到來前,由于(1)片Q2端始終為1,故(0)片始終保持狀態(tài)S7.當(dāng)?shù)?個(gè)CP脈沖到來時(shí),(1)片和(0)片的狀態(tài)分別為S9和S8,此時(shí),(1)片得到(0)片Q3端的置位信號(hào),當(dāng)下一個(gè)CP脈沖到來時(shí),(1)片和(0)片的狀態(tài)分別為S4和S9.在第10個(gè)CP脈沖作用下,(1)片和(0)片的狀態(tài)分別為S4和S9.在第11個(gè)CP脈沖作用下,(1)片和(0)片的狀態(tài)分別為S4和S7,如此往復(fù)。這樣,兩片74LS161(1)片和(0)片并行輸出狀態(tài)變化為01000111→01010111→01100111→01110111→10000111→10011000→01001001→01000111,7種狀態(tài)非順序的轉(zhuǎn)換。

圖2 ?非順序狀態(tài)轉(zhuǎn)換電路
如實(shí)現(xiàn)非順序更多狀態(tài)的轉(zhuǎn)換,就需要使用更多MSI芯片,圖3為使用三個(gè)74LS161芯片實(shí)現(xiàn)的復(fù)雜狀態(tài)機(jī)。在圖3中,三個(gè)芯片的初始狀態(tài)均設(shè)為0,并且在CP脈沖到來時(shí)同時(shí)開始計(jì)數(shù),當(dāng)?shù)?個(gè)CP脈沖到來后,實(shí)現(xiàn)有效狀態(tài)循環(huán)000001001001→000001001010→000001001011→000001001100→000001001101→000001001110→000001001111→000001000000→000001010001→000001100010→000001110011→000010000100→000110010101→001010100110→001110110111→010011000111→000011011000→000001001001,為17種非順序狀態(tài)的轉(zhuǎn)換。可見,實(shí)現(xiàn)越復(fù)雜的狀態(tài)機(jī),轉(zhuǎn)換的非順序狀態(tài)越多,電路越復(fù)雜。

圖3 ?復(fù)雜狀態(tài)機(jī)電路圖
可能出現(xiàn)的問題
在實(shí)際的電路中,由于使用多個(gè)集成電路,可能會(huì)出現(xiàn)置0不可靠的情況,這是由多個(gè)觸發(fā)器的負(fù)載不同,置0時(shí)間也不完全相同引起的,此時(shí)需要在以上電路設(shè)計(jì)中做一些改進(jìn)。另外,MSI與負(fù)載門電路的連接等問題,可以通過增加上拉電阻、接地電阻及電平轉(zhuǎn)換等措施解決。
電子發(fā)燒友App
















































評(píng)論