1.Mealy和Moore狀態(tài)機(jī)
對(duì)于次態(tài)而言,Mealy和Moore是一樣的,都是由輸入和現(xiàn)態(tài)決定了次態(tài)。
對(duì)于輸出而言,Mealy的輸出由現(xiàn)態(tài)和輸入決定,Moore的則是僅由現(xiàn)態(tài)決定。
所以實(shí)現(xiàn)一樣的功能,Moore的狀態(tài)會(huì)多一些,同時(shí)Moore實(shí)現(xiàn)了輸入和輸出的隔離。
2.標(biāo)準(zhǔn)
好的狀態(tài)機(jī)的標(biāo)準(zhǔn)很多,最重要的幾個(gè)方面如下:
第一,狀態(tài)機(jī)要安全,是指FSM不會(huì)進(jìn)入死循環(huán),特別是不會(huì)進(jìn)入非預(yù)知的狀態(tài),而且由于某些擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快的恢復(fù)到正常的狀態(tài)循環(huán)中來。這里面有兩層含義。其一要求該FSM的綜合實(shí)現(xiàn)結(jié)果無_毛刺等異常擾動(dòng),其二要求FSM要完備,即使受到異常擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快恢復(fù)到正常狀態(tài)。
第二,狀態(tài)機(jī)的設(shè)計(jì)要滿足設(shè)計(jì)的面積和速度的要求。
第三,狀態(tài)機(jī)的設(shè)計(jì)要清晰易懂、易維護(hù)。
需要說明的是,以上各項(xiàng)標(biāo)準(zhǔn),不是割裂的,它們有著直接緊密的內(nèi)在聯(lián)系。在芯片設(shè)計(jì)中,對(duì)綜合結(jié)果評(píng)判的兩個(gè)基本標(biāo)準(zhǔn)為:面積和速度?!懊娣e”是指設(shè)計(jì)所占用的邏輯資源數(shù)量;“速度”指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行所能夠達(dá)到的最高頻率。兩者是對(duì)立統(tǒng)一的矛盾體,要求一個(gè)設(shè)計(jì)同時(shí)具備設(shè)計(jì)面積最小,運(yùn)行頻率最高,這是不現(xiàn)實(shí)的。科學(xué)的設(shè)計(jì)目標(biāo)應(yīng)該是:在滿足設(shè)計(jì)時(shí)序要求(包含對(duì)設(shè)計(jì)最高頻率的要求)的前提下,占用最小的芯片面積,或者在所規(guī)定的面積下,使設(shè)計(jì)的時(shí)序余量更大,頻率更高。另外,如果要求FSM安全,則很多時(shí)候需要使用“full case”的編碼方式,即將狀態(tài)轉(zhuǎn)移變量的所有向量組合情況都在FSM 中有相應(yīng)的處理,這經(jīng)常勢(shì)必意味著要多花更多的設(shè)計(jì)資源,有時(shí)也會(huì)影響FSM的頻率所以,上述的標(biāo)準(zhǔn)要綜合考慮,根據(jù)設(shè)計(jì)的要求進(jìn)行權(quán)衡。
3.狀態(tài)機(jī)編碼
二進(jìn)制編碼(Binary)、格雷碼(Gray-code)編碼使用最少的觸發(fā)器,較多的組合邏輯,而獨(dú)熱碼(One-hot)編碼反之。獨(dú)熱碼編碼的最大優(yōu)勢(shì)在于狀態(tài)比較時(shí)僅僅需要比較一個(gè)位,從而一定程度上簡(jiǎn)化了比較邏輯,減少了毛刺產(chǎn)生的概率。由于CPLD更多地提供組合邏輯資源,而FPGA更多地提供觸發(fā)器資源,所以CPLD多使用二進(jìn)制編碼或格雷碼,而FPGA多使用獨(dú)熱碼編碼。另一方面,對(duì)于小型設(shè)計(jì)使用二進(jìn)制和格雷碼編碼更有效,而大型狀態(tài)機(jī)使用獨(dú)熱碼更高效。