1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      有限狀態(tài)機的VHDL優(yōu)化設(shè)計

      更新時間: 2008-01-11 08:58:41來源: 粵嵌教育瀏覽量:1302

      1.引言
        當(dāng)前以硬件描述語言為工具、邏輯器件為載體的系統(tǒng)設(shè)計越來越廣泛。在設(shè)計中,狀態(tài)機是典型、應(yīng)用廣泛的電路模塊,其在運行速度的高效、執(zhí)行時間的確定性和高可靠性方面都顯現(xiàn)出強大的優(yōu)勢。狀態(tài)機及其設(shè)計技術(shù)水平?jīng)Q定了系統(tǒng)設(shè)計的優(yōu)劣[1]。如何設(shè)計一個化的狀態(tài)機是我們必須面對的問題。
      本文將詳細討論狀態(tài)機編寫的各個步驟對優(yōu)化狀態(tài)機所起到的作用。

      2.狀態(tài)機的分類
        狀態(tài)機由狀態(tài)寄存器和組合邏輯電路構(gòu)成,能夠根據(jù)控制信號按照預(yù)先設(shè)定的狀態(tài)進行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號動作,完成特定操作的控制中心。
        狀態(tài)機可以分為Moore型和Mealy型兩種基本類型。設(shè)計時采用哪種方式的狀態(tài)機要根據(jù)設(shè)計的具體情況決定,輸出只由當(dāng)前狀態(tài)值決定則選用Moore型,輸入信號和狀態(tài)值共同決定輸出則選用Mealy狀態(tài)機。
        設(shè)計時在結(jié)構(gòu)上通常遵循一下幾點:
        各模塊只描述一個狀態(tài)機;將無關(guān)邏輯減至少;將狀態(tài)寄存器從其他邏輯中分離出來[2]。

      3.狀態(tài)值編碼方式
        通常在設(shè)計狀態(tài)機時,狀態(tài)編碼方式的選擇是非常重要的,選得不好,可能會導(dǎo)致速度太慢或占用太多邏輯資源。實際設(shè)計中,必須考慮多方面因素選擇為合適的編碼方式。

      3.1 枚舉類型定義狀態(tài)值
        設(shè)計中狀態(tài)機的狀態(tài)值定義為枚舉類型,綜合時一般轉(zhuǎn)化為二進制的序列,因此與二進制編碼方式本質(zhì)上是相同的。
      實際需要觸發(fā)器的數(shù)目為實際狀態(tài)的以2為底的對數(shù)。這種編碼方式為簡單,綜合后寄存器用量較少,剩余狀態(tài)少,其綜合效率和電路速度在一定程度上將會得到提高。但在狀態(tài)轉(zhuǎn)換過程中,狀態(tài)寄存器的高位翻轉(zhuǎn)和低位翻轉(zhuǎn)時間是不一致的,這樣就會出現(xiàn)過渡狀態(tài),若狀態(tài)機的狀態(tài)值更多的話,產(chǎn)生過渡狀態(tài)的概率更大。因此適合復(fù)雜度較低的設(shè)計。

      3.2 格雷碼表示狀態(tài)值
        格雷碼編碼,即相鄰兩個狀態(tài)的編碼只有一位不同,這使得采用格雷碼表示狀態(tài)值的狀態(tài)機,可以較大程度上消除由傳輸延時引起的過渡狀態(tài)。
        該方式使得在相鄰狀態(tài)之間跳轉(zhuǎn)時,只有一位變化,降低了產(chǎn)生過渡狀態(tài)的概率,但當(dāng)狀態(tài)轉(zhuǎn)換有多種路徑時,就無法保證狀態(tài)跳轉(zhuǎn)時只有一位變化。所以在一定程度上, 格雷碼編碼是二進制的一種變形,總體思想是一致的。

      3.3“ONE-HOT”狀態(tài)值編碼
        One-hot編碼方式是使用N個觸發(fā)器來實現(xiàn)N個狀態(tài)的狀態(tài)機,每個狀態(tài)都由一個觸發(fā)器表示,在任意時刻,其中只有1位有效,該位也稱為“hot”,觸發(fā)器為‘1’,其余的觸發(fā)器置‘0’。
        這種結(jié)構(gòu)的狀態(tài)機其穩(wěn)定性優(yōu)于一般結(jié)構(gòu)的狀態(tài)機, 但是它占用的資源更多。其簡單的編碼方式簡化了狀態(tài)譯碼邏輯,提高了狀態(tài)轉(zhuǎn)換速度,適合于在FPGA 中應(yīng)用。

      3.4 剩余狀態(tài)與容錯技術(shù)
        在狀態(tài)機設(shè)計中,不可避免地會出現(xiàn)大量剩余狀態(tài)。若不對剩余狀態(tài)進行合理的處理,狀態(tài)機可能進入不可預(yù)測的狀態(tài),后果是對外界出現(xiàn)短暫失控或者始終無法擺脫剩余狀態(tài)而失去正常功能。因此,對剩余狀態(tài)的處理,即容錯技術(shù)的應(yīng)用是必須慎重考慮的問題。但是,剩余狀態(tài)的處理要不同程度地耗用邏輯資源,因此設(shè)計者在選用狀態(tài)機結(jié)構(gòu)、狀態(tài)編碼方式、容錯技術(shù)及系統(tǒng)的工作速度與資源利用率方面需要做權(quán)衡比較,以適應(yīng)自己的設(shè)計要求。
        剩余狀態(tài)的轉(zhuǎn)移去向大致有如下幾種:
        a)轉(zhuǎn)入空閑狀態(tài),等待下一個工作任務(wù)的到來;
        b)轉(zhuǎn)入指定的狀態(tài),去執(zhí)行特定任務(wù);
        c)轉(zhuǎn)入預(yù)定義的專門處理錯誤的狀態(tài),如預(yù)警狀態(tài)。
        對于前兩種編碼方式可以將多余狀態(tài)做出定義,在以后的語句中加以處理。處理的方法有2種:①在語句中對每一個非法狀態(tài)都做出明確的狀態(tài)轉(zhuǎn)換指示;②利用others語句對未提到的狀態(tài)作統(tǒng)一處理。對于One-hot編碼方式其剩余狀態(tài)數(shù)將隨有效狀態(tài)數(shù)的增加呈指數(shù)式劇增,就不能采用上述的處理方法。鑒于One-hot編碼方式的特點,任何多于1個觸發(fā)器為“1”的狀態(tài)均為非法狀態(tài)。因此,可編寫一個檢錯程序,判斷是否在同一時刻有多個寄存器為“1”,若有,則轉(zhuǎn)入相應(yīng)的處理程序。

      4.狀態(tài)機的描述方法
        VHDL對不同的狀態(tài)機有不同的描述方式,描述方式不同使得綜合出來的門級網(wǎng)表也不同,因此必須根據(jù)數(shù)字電路的特性和可綜合性選擇相應(yīng)的狀態(tài)機描述方式。
      下面以實踐中激光測距儀中心控制器為例,介紹不同描述方法的設(shè)計,并給出仿真圖。

        將整個狀態(tài)機寫到1個進程模塊里,在該模塊中既描述狀態(tài)轉(zhuǎn)移又描述狀態(tài)的輸入輸出,稱為一段式描述方法,即所謂的單進程狀態(tài)機。其將組合邏輯和時序邏輯在一個進程中描述,該方式的優(yōu)點是可得到鎖存后的輸出信號。但在描述當(dāng)前狀態(tài)時需考慮下一個狀態(tài)的輸出,整個代碼不清晰,不易于理解、維護,也不利于時序約束、功能更改、調(diào)試等,而且不能很好的表示Mealy狀態(tài)機的輸出,容易導(dǎo)致邏輯功能錯誤。另外,這種描述相對于另外兩種描述比較冗長。因此一段式描述是應(yīng)當(dāng)避免的描述方式,這里也不再做進一步討論。
        采用2個進程模塊,一個模塊用同步時序描述狀態(tài)轉(zhuǎn)移;另一個模塊用組合邏輯判斷狀態(tài)轉(zhuǎn)移條件、描述狀態(tài)轉(zhuǎn)移規(guī)律及邏輯輸出,稱為兩段式描述方法,這是綜合器理解的一種描述方式,也是要求不高的條件下常用的一種。分析其結(jié)構(gòu)概括為圖1所示框圖。
                 
        設(shè)計的控制器時序仿真如圖2所示。
          
        由圖2可以看到direct輸出信號出現(xiàn)毛刺,對于精密控制器來說這是不允許的。毛刺多由組合邏輯導(dǎo)致的,若在輸出部分加入一個寄存器節(jié)拍,可消除毛刺保證輸出信號的穩(wěn)定性,但輸出就會延遲一個周期,所以當(dāng)時序允許時該方式是很好的選擇。
        使用3個進程模塊,一個模塊采用同步時序描述狀態(tài)轉(zhuǎn)移;第二個采用組合邏輯判斷狀態(tài)轉(zhuǎn)移條件,描述狀態(tài)轉(zhuǎn)移規(guī)律;第三個模塊使用同步時序電路描述每個狀態(tài)的輸出,該寫法稱為三段式寫法。分析其結(jié)構(gòu)概括為圖3所示框圖。
                
        改進后的控制器時序仿真如圖4所示。
            
        三段式與兩段式描述相比,雖然代碼結(jié)構(gòu)復(fù)雜了一些,但是換來的優(yōu)勢是做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時序路徑分組,在FPGA上的綜合與布局布線效果更佳。
        一般而言,推薦的狀態(tài)機描述方法是后兩種。其原因:設(shè)計使用同步時序方式,以提高設(shè)計的穩(wěn)定性,消除毛刺。狀態(tài)機實現(xiàn)后,狀態(tài)轉(zhuǎn)移部分是同步時序電路而狀態(tài)的轉(zhuǎn)移條件的判斷是組合邏輯。兩段式描述方法雖然有很多好處,但一個明顯的弱點就是其輸出使用組合邏輯描述,易產(chǎn)生毛刺等不穩(wěn)定因素,并且在邏輯器件中過多的組合邏輯會影響實現(xiàn)的速率,而三段式巧妙地根據(jù)下一狀態(tài)的判斷,用同步時序邏輯寄存狀態(tài)機的輸出。

      5.毛刺和競爭處理
        毛刺的產(chǎn)生,一方面由于狀態(tài)機中包含有組合邏輯進程,使得輸出信號在時鐘的有效邊沿產(chǎn)生毛刺;另一方面當(dāng)狀態(tài)信號是多位值的時候,由于傳輸延遲的存在,各信號線上的值發(fā)生改變的時間會有先后,使得狀態(tài)遷移的時候出現(xiàn)臨時狀態(tài)。當(dāng)狀態(tài)機的輸出信號作為其他功能模塊的控制信號使用時, 將會使受控模塊發(fā)生誤動作, 造成系統(tǒng)工作混亂。因此,在這種情況下必須通過改變設(shè)計消除毛刺。
        消除狀態(tài)機輸出信號的“ 毛刺”一般可從一下幾點改進:
       ?、僭陔娐吩O(shè)計時,選用延遲時間較小的器件,且盡可能采用級數(shù)少的電路結(jié)構(gòu);或者把時鐘信號引入組合進程,用時鐘來同步狀態(tài)遷移, 保證了輸出信號沒有毛刺,但這樣增加了輸出寄存器, 硬件開銷增大, 這對于一些寄存器資源較少的目標芯片是不利的;而且還會限制系統(tǒng)時鐘的工作頻率; 由于時鐘信號將輸出加載到附加的寄存器上, 所以在輸出端得到信號值的時間要比狀態(tài)的變化延時一個時鐘周期。
       ?、谡{(diào)整狀態(tài)編碼, 使相鄰狀態(tài)間只有1位信號改變,避免毛刺的產(chǎn)生。
       ?、壑苯影褷顟B(tài)機的狀態(tài)碼作為輸出信號,即采用狀態(tài)碼直接輸出型狀態(tài)機, 使狀態(tài)和輸出信號一致, 使得輸出譯碼電路被優(yōu)化掉了。這種方案, 占用芯片資源少, 信號與狀態(tài)變化同步, 速度快, 是一種較優(yōu)方案。但在設(shè)計過程中對狀態(tài)編碼時可能增加狀態(tài)向量, 出現(xiàn)多余狀態(tài)。雖然可用CASE語句中WHEN-OTHERS 來安排多余狀態(tài), 但有時難以有效控制多余狀態(tài), 運行時可能會出現(xiàn)難以預(yù)料的情況。因此它適用于狀態(tài)機輸出信號較少的場合。這種方式的缺點是削弱了設(shè)計的可讀性和可維護性[3]。
        有限狀態(tài)機綜合中的競爭現(xiàn)象是指由于敏感信號的頻繁變化導(dǎo)致狀態(tài)機在同一個節(jié)拍內(nèi)多次改變狀態(tài),影響電路的正常工作。當(dāng)輸出信號反饋回來作為輸入信號的時候,就會發(fā)生競爭。這里要指出的是在綜合前模擬的時候往往不能發(fā)現(xiàn)描述中潛在的競爭現(xiàn)象,只有在綜合后,競爭才會完全暴露出來。消除競爭的辦法是把造成競爭的信號從敏感信號表中除去,而改成由時鐘信號來觸發(fā)進程,這樣就使狀態(tài)一個節(jié)拍只改變一次[4]。

      6.狀態(tài)機的優(yōu)化
        優(yōu)化的目標主要有兩個: 速度和規(guī)模,但是速度條件越苛刻, 所需規(guī)模就越大, 因此優(yōu)化電路結(jié)構(gòu)時, 應(yīng)綜合考慮各方面因素, 選擇化方案。電路結(jié)構(gòu)分為邏輯電路和時序電路。邏輯電路的優(yōu)化包括布爾表達式的優(yōu)化等, 時序電路包括通常的時序電路和狀態(tài)機。狀態(tài)機優(yōu)化包括選擇合適狀態(tài)和編碼等, 比如合理的歸并以及減少狀態(tài)的數(shù)量等都能大大簡化電路,在編程時應(yīng)盡量把可歸并的邏輯放入同一結(jié)構(gòu)體中, 這樣可以有效優(yōu)化電路結(jié)構(gòu)[5]。

      7.結(jié)論
        有限狀態(tài)機是數(shù)字系統(tǒng)的一個重要組成部分。本文詳細討論了狀態(tài)機各部分及應(yīng)注意的事項和各種不同寫法的優(yōu)缺點。以上只是作者在項目設(shè)計實踐中學(xué)習(xí)并總結(jié)的一些經(jīng)驗與體會,設(shè)計時需根據(jù)實際情況做適合的選擇。
      參考文獻
        [1] 吳繼華,王誠.《Verilog設(shè)計與驗證》[M],北京:人民郵電出版社,2006。
        [2] 王巍,高德遠.有限狀態(tài)機設(shè)計策略 [J].計算機工程與應(yīng)用,1999,7:54-55.
        [3] 魯玲,劉大年.消除狀態(tài)機毛刺策略探討 [J] .電子技術(shù)應(yīng)用,2006,9:118-119.
        [4] 李春霞,顧新,王君.有限狀態(tài)機的VHDL 描述及綜合 [J].計算機工程與應(yīng)用,2005,6:111-113.
        [5] 駱珊,黃明達.VHDL 電路結(jié)構(gòu)優(yōu)化設(shè)計探討 [J] .計算機應(yīng)用,2001,4:14-15.

      免費預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲丁香婷婷综合久久 | 亚洲精品视频在线播放 | 日韩~欧美一中文字幕 | 亚洲无玛中文字幕久久婷婷 | 一本久久a久久免费综合 | 久久国产亚洲视频 |