基于hlghdl的有限狀態(tài)機(jī)的幾種編碼方式_第1頁(yè)
基于hlghdl的有限狀態(tài)機(jī)的幾種編碼方式_第2頁(yè)
基于hlghdl的有限狀態(tài)機(jī)的幾種編碼方式_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于hlghdl的有限狀態(tài)機(jī)的幾種編碼方式

0有限狀態(tài)機(jī)設(shè)計(jì)數(shù)字系統(tǒng)包括以控制為主的系統(tǒng)和以數(shù)據(jù)為主的系統(tǒng)。通常,控制系統(tǒng)的主體是一個(gè)有限狀態(tài)機(jī)(finitestatemachine,FSM),通過(guò)接收外部信號(hào)以及數(shù)據(jù)單元產(chǎn)生的狀態(tài)信息,產(chǎn)生控制信號(hào)序列。在系統(tǒng)設(shè)計(jì)中,能否設(shè)計(jì)出高效可靠的有限狀態(tài)機(jī)已經(jīng)成為關(guān)鍵。傳統(tǒng)的有限狀態(tài)機(jī)的描述方式有狀態(tài)轉(zhuǎn)移圖,狀態(tài)轉(zhuǎn)移列表兩種。隨著EDA技術(shù)的發(fā)展,人們開始用硬件描述語(yǔ)言來(lái)描述有限狀態(tài)機(jī),通過(guò)充分發(fā)揮硬件描述語(yǔ)言的抽象建模能力,對(duì)系統(tǒng)在系統(tǒng)級(jí)或寄存器傳輸級(jí)進(jìn)行描述。使用VerilogHDL描述有限狀態(tài)機(jī)有一定的靈活性,同樣的系統(tǒng)功能可以用多種編碼方式和描述風(fēng)格來(lái)實(shí)現(xiàn),但其綜合出來(lái)的狀態(tài)機(jī)在穩(wěn)定性、速度、面積以及電路復(fù)雜程度上有很大的差別。因此研究FSM的編碼方式和描述風(fēng)格有利于更好地設(shè)計(jì)出高效可靠的有限狀態(tài)機(jī)。1有限狀態(tài)機(jī)性能特點(diǎn)根據(jù)狀態(tài)機(jī)的輸出是否與輸入條件相關(guān),可將有限狀態(tài)機(jī)分為Moore型狀態(tài)機(jī)和Mealy型狀態(tài)機(jī),如圖1所示。前者的輸出僅僅依賴于當(dāng)前狀態(tài),與輸入條件無(wú)關(guān);后者的輸出不僅依賴于當(dāng)前狀態(tài),而且取決于該狀態(tài)的輸入條件。可綜合有限狀態(tài)機(jī)的VerilogHDL設(shè)計(jì)的基本要求:(1)有限狀態(tài)機(jī)要安全,穩(wěn)定性高。這就要求有限狀態(tài)機(jī)不會(huì)進(jìn)入死循環(huán),即使由于某些擾動(dòng)進(jìn)入非法狀態(tài),也能很快的恢復(fù)到正常的狀態(tài)循環(huán)中來(lái)。(2)有限狀態(tài)機(jī)速度快,滿足設(shè)計(jì)的頻率要求。(3)有限狀態(tài)機(jī)面積小,滿足設(shè)計(jì)所占資源要求。(4)有限狀態(tài)機(jī)設(shè)計(jì)要清晰易懂,易維護(hù)。有限狀態(tài)機(jī)的VerilogHDL設(shè)計(jì)的一些基本準(zhǔn)則:(1)一個(gè)Verilog模塊至多描述一個(gè)有限狀態(tài)機(jī)。這樣不僅可以簡(jiǎn)化狀態(tài)的定義、修改和調(diào)試,還可以利用一些EDA工具來(lái)協(xié)助設(shè)計(jì)。(2)使用參數(shù)給狀態(tài)賦值,而不是用宏定義(define)。因?yàn)閐efine宏定義在編譯時(shí)自動(dòng)替換整個(gè)設(shè)計(jì)中所定義的宏,而parameter僅僅定義模塊內(nèi)部的參數(shù),定義的參數(shù)不會(huì)與模塊外的其它狀態(tài)機(jī)混淆。(3)用always模塊寫組合邏輯時(shí),采用阻塞賦值,而在always塊中建立時(shí)序電路時(shí),用非阻塞賦值。這樣才能保證有限狀態(tài)機(jī)綜合前和綜合后仿真的一致性。2獨(dú)熱碼的編碼狀態(tài)編碼又稱為狀態(tài)分配,決定了用以保持狀態(tài)所需的觸發(fā)器的數(shù)量,并且影響著實(shí)現(xiàn)下一個(gè)狀態(tài)和輸出中所用的組合邏輯的復(fù)雜度。編碼方式選擇不當(dāng)可能會(huì)導(dǎo)致狀態(tài)機(jī)所占資源過(guò)大或速度降低。常用的編碼方式有3種:二進(jìn)制碼、格雷碼、獨(dú)熱碼。二進(jìn)制碼和格雷碼屬于壓縮狀態(tài)編碼,這種編碼的優(yōu)點(diǎn)是使用的狀態(tài)向量最少,但是需要較多的邏輯資源用來(lái)狀態(tài)譯碼。二進(jìn)制碼從一個(gè)狀態(tài)轉(zhuǎn)換到相鄰狀態(tài)時(shí),可能有多個(gè)比特位發(fā)生變化,易產(chǎn)生中間狀態(tài)轉(zhuǎn)移問(wèn)題,狀態(tài)機(jī)的速度也要比采用其它編碼方式慢。格雷碼兩個(gè)相鄰的碼值僅有一位就可區(qū)分,這將會(huì)減少電路中相鄰物理信號(hào)線同時(shí)變化的情況,因而可以減少電路中的電噪聲。Johnson碼也有同樣的特點(diǎn),但是要用較多的位數(shù)。獨(dú)熱碼指對(duì)任意給定的狀態(tài),狀態(tài)寄存器中只有1位為1,其余位都為0。n狀態(tài)的有限狀態(tài)機(jī)需要n個(gè)觸發(fā)器,但這種有限狀態(tài)機(jī)只需對(duì)寄存器中的一位進(jìn)行譯碼,簡(jiǎn)化了譯碼邏輯電路,額外觸發(fā)器占用的面積可用譯碼電路省下來(lái)的面積抵消。當(dāng)設(shè)計(jì)中加入更多的狀態(tài)時(shí),譯碼邏輯沒(méi)有變得更加復(fù)雜,有限狀態(tài)機(jī)的速度僅取決于到某特定狀態(tài)的轉(zhuǎn)移數(shù)量,而其它類型有限狀態(tài)機(jī)在狀態(tài)增加時(shí)速度會(huì)明顯下降。獨(dú)熱碼還具有設(shè)計(jì)簡(jiǎn)單、修改靈活、易于綜合和調(diào)試等優(yōu)點(diǎn)。由獨(dú)熱碼衍生出來(lái)簡(jiǎn)化獨(dú)熱碼和零空閑獨(dú)熱碼兩種編碼方式。簡(jiǎn)化獨(dú)熱碼用十進(jìn)制數(shù)指向狀態(tài)寄存器中的某一位,狀態(tài)轉(zhuǎn)移時(shí),把與十進(jìn)制數(shù)相對(duì)應(yīng)的狀態(tài)向量的那一位置1即可,跟獨(dú)熱碼一樣,在任意時(shí)刻,狀態(tài)向量中只有1位為1,其余位都為0。與獨(dú)熱碼相比,這種編碼只須判斷十進(jìn)制數(shù)所指向狀態(tài)向量的對(duì)應(yīng)位是否為1,所以狀態(tài)機(jī)的速度會(huì)相對(duì)較快。零空閑獨(dú)熱碼對(duì)于狀態(tài)之間存在復(fù)雜關(guān)系的設(shè)計(jì)可以產(chǎn)生高效的狀態(tài)機(jī),特別是對(duì)多個(gè)狀態(tài)轉(zhuǎn)向某一特定狀態(tài)的情況。用這種方式編碼時(shí),普通狀態(tài)的編碼方式同簡(jiǎn)化獨(dú)熱碼一樣,只是特殊狀態(tài)用狀態(tài)寄存器全零來(lái)表示。表1總結(jié)了以上幾種編碼方式的定義方式。其中簡(jiǎn)化獨(dú)熱碼和零空閑獨(dú)熱碼中的S0~S4非狀態(tài)編碼,而是代表指向狀態(tài)寄存器中的相應(yīng)位。在實(shí)際設(shè)計(jì)中,具體采用哪一種編碼要視器件結(jié)構(gòu)而定。由于CPLD更多地提供組合邏輯資源,而FPGA觸發(fā)器資源比較豐富,所以CPLD多使用二進(jìn)程制碼和格雷碼,而FPGA多使用獨(dú)熱碼。選擇編碼方式還跟狀態(tài)數(shù)有一定關(guān)系,一般情況下,當(dāng)狀態(tài)數(shù)小于5時(shí),推薦使用二進(jìn)制碼,當(dāng)狀態(tài)數(shù)大于4而小于24時(shí)使用獨(dú)熱碼,狀態(tài)數(shù)大于24時(shí)建議使用格雷碼。3雙進(jìn)程式和3-alws式用Verilog語(yǔ)言描述有限狀態(tài)機(jī)通常有3種描述風(fēng)格:單進(jìn)程式,雙進(jìn)程式和三進(jìn)程式。單進(jìn)程式又稱為One-Always方式,它將狀態(tài)轉(zhuǎn)移判斷的組合邏輯和狀態(tài)寄存器轉(zhuǎn)移的時(shí)序邏輯混寫在同一個(gè)always模塊中,圖2為其結(jié)構(gòu)圖。由于是寄存器輸出,輸出向量不會(huì)產(chǎn)生毛刺。但代碼相對(duì)比較冗長(zhǎng)難于修改和調(diào)試,并且不利于附加約束,編譯器優(yōu)化效果差,往往導(dǎo)致邏輯速度慢、資源消耗多,應(yīng)該盡量避免使用。雙進(jìn)程式又稱為Two-Always方式,在這種方式中,一個(gè)always模塊采用同步時(shí)序描述狀態(tài)轉(zhuǎn)移,另一個(gè)模塊采用組合邏輯給下一狀態(tài)和輸出向量賦值,其結(jié)構(gòu)圖如圖1所示。這種方式使FSM描述清晰簡(jiǎn)潔,易于附加時(shí)序約束,編譯器優(yōu)化效果明顯,可以得到很理想的速度和資源占用率,是目前應(yīng)用最為廣泛的狀態(tài)機(jī)描述風(fēng)格。缺點(diǎn)是組合邏輯輸出可能會(huì)使輸出向量產(chǎn)生毛刺。一般情況下,輸出向量的毛刺對(duì)電路的影響可以忽略不計(jì),但是當(dāng)其作為時(shí)鐘信號(hào)使用時(shí),就必須消除毛刺,否則會(huì)對(duì)后面的電路產(chǎn)生致命的影響。為了消除組合輸出所帶來(lái)的毛刺問(wèn)題,改用時(shí)序邏輯來(lái)描述輸出向量,這就是三進(jìn)程式,又稱為Three-Always方式。這種方式用兩個(gè)時(shí)序always模塊分別用于產(chǎn)生當(dāng)前狀態(tài)向量和輸出向量,一個(gè)組合always用于產(chǎn)生下一狀態(tài)向量,其結(jié)構(gòu)圖如圖3所示。三段式描述與兩段式描述相比,雖然代碼結(jié)構(gòu)復(fù)雜了一些,但是換來(lái)的優(yōu)勢(shì)是使FSM做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于綜合與布局布線。4狀態(tài)編碼和描述以一個(gè)簡(jiǎn)單的有限狀態(tài)機(jī)設(shè)計(jì)—序列檢測(cè)器為例。序列檢測(cè)就是將一個(gè)指定的序列從數(shù)字碼流中識(shí)別出來(lái)。本文將設(shè)計(jì)一個(gè)“111”序列檢測(cè)器,此序列檢測(cè)器要求能夠成功檢測(cè)出序列重疊,其Moore型狀態(tài)轉(zhuǎn)移圖如圖4所示。模塊FSM_JHDR的狀態(tài)編碼采用簡(jiǎn)化獨(dú)熱碼,描述風(fēng)格采用雙進(jìn)程式;模塊FSMDR的狀態(tài)編碼采用獨(dú)熱碼,描述風(fēng)格采用三進(jìn)程式。主要Verilog代碼如表2所示。利用QuartusⅡ6.0工具分別對(duì)兩模塊進(jìn)行編譯和時(shí)序仿真,目標(biāo)器件為Altera公司的EP2C8。編譯后,FSM_JHDR占用了5個(gè)邏輯單元,FSM_DR占用了6個(gè)邏輯單元,但模塊FSM_JHDR的輸出變量由于是組合邏輯輸出,產(chǎn)生了毛刺,而模塊FSM_DR采用三進(jìn)程式描述方式很好的解決了這個(gè)問(wèn)題。圖5為模塊FSMD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論