日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 有限狀態(tài)機的VHDL優(yōu)化設計

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

          作者: 時間:2017-06-06 來源:網(wǎng)絡 收藏

          1.引言

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

          本文將詳細討論狀態(tài)機編寫的各個步驟對優(yōu)化狀態(tài)機所起到的作用。

          2.狀態(tài)機的分類

          狀態(tài)機由狀態(tài)寄存器和組合邏輯電路構成,能夠根據(jù)控制信號按照預先設定的狀態(tài)進行狀態(tài)轉移,是協(xié)調相關信號動作,完成特定操作的控制中心。

          狀態(tài)機可以分為Moore型和Mealy型兩種基本類型。設計時采用哪種方式的狀態(tài)機要根據(jù)設計的具體情況決定,輸出只由當前狀態(tài)值決定則選用Moore型,輸入信號和狀態(tài)值共同決定輸出則選用Mealy狀態(tài)機。

          設計時在結構上通常遵循一下幾點:

          各模塊只描述一個狀態(tài)機;將無關邏輯減至最少;將狀態(tài)寄存器從其他邏輯中分離出來[2]。

          3.狀態(tài)值編碼方式

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

          3.1 枚舉類型定義狀態(tài)值

          設計中狀態(tài)機的狀態(tài)值定義為枚舉類型,綜合時一般轉化為二進制的序列,因此與二進制編碼方式本質上是相同的。

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

          3.2 格雷碼表示狀態(tài)值

          格雷碼編碼,即相鄰兩個狀態(tài)的編碼只有一位不同,這使得采用格雷碼表示狀態(tài)值的狀態(tài)機,可以較大程度上消除由傳輸延時引起的過渡狀態(tài)。

          該方式使得在相鄰狀態(tài)之間跳轉時,只有一位變化,降低了產(chǎn)生過渡狀態(tài)的概率,但當狀態(tài)轉換有多種路徑時,就無法保證狀態(tài)跳轉時只有一位變化。所以在一定程度上, 格雷碼編碼是二進制的一種變形,總體思想是一致的。

          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’。

          這種結構的狀態(tài)機其穩(wěn)定性優(yōu)于一般結構的狀態(tài)機, 但是它占用的資源更多。其簡單的編碼方式簡化了狀態(tài)譯碼邏輯,提高了狀態(tài)轉換速度,適合于在FPGA 中應用。

          3.4 剩余狀態(tài)與容錯技術

          在狀態(tài)機設計中,不可避免地會出現(xiàn)大量剩余狀態(tài)。若不對剩余狀態(tài)進行合理的處理,狀態(tài)機可能進入不可預測的狀態(tài),后果是對外界出現(xiàn)短暫失控或者始終無法擺脫剩余狀態(tài)而失去正常功能。因此,對剩余狀態(tài)的處理,即容錯技術的應用是必須慎重考慮的問題。但是,剩余狀態(tài)的處理要不同程度地耗用邏輯資源,因此設計者在選用狀態(tài)機結構、狀態(tài)編碼方式、容錯技術及系統(tǒng)的工作速度與資源利用率方面需要做權衡比較,以適應自己的設計要求。

          剩余狀態(tài)的轉移去向大致有如下幾種:

          a)轉入空閑狀態(tài),等待下一個工作任務的到來;

          b)轉入指定的狀態(tài),去執(zhí)行特定任務;

          c)轉入預定義的專門處理錯誤的狀態(tài),如預警狀態(tài)。

          對于前兩種編碼方式可以將多余狀態(tài)做出定義,在以后的語句中加以處理。處理的方法有2種:①在語句中對每一個非法狀態(tài)都做出明確的狀態(tài)轉換指示;②利用others語句對未提到的狀態(tài)作統(tǒng)一處理。對于One-hot編碼方式其剩余狀態(tài)數(shù)將隨有效狀態(tài)數(shù)的增加呈指數(shù)式劇增,就不能采用上述的處理方法。鑒于One-hot編碼方式的特點,任何多于1個觸發(fā)器為“1”的狀態(tài)均為非法狀態(tài)。因此,可編寫一個檢錯程序,判斷是否在同一時刻有多個寄存器為“1”,若有,則轉入相應的處理程序。

          4.狀態(tài)機的描述方法

          VHDL對不同的狀態(tài)機有不同的描述方式,描述方式不同使得綜合出來的門級網(wǎng)表也不同,因此必須根據(jù)數(shù)字電路的特性和可綜合性選擇相應的狀態(tài)機描述方式。

          下面以實踐中激光測距儀中心控制器為例,介紹不同描述方法的設計,并給出仿真圖。
          將整個狀態(tài)機寫到1個進程模塊里,在該模塊中既描述狀態(tài)轉移又描述狀態(tài)的輸入輸出,稱為一段式描述方法,即所謂的單進程狀態(tài)機。其將組合邏輯和時序邏輯在一個進程中描述,該方式的唯一優(yōu)點是可得到鎖存后的輸出信號。但在描述當前狀態(tài)時需考慮下一個狀態(tài)的輸出,整個代碼不清晰,不易于理解、維護,也不利于時序約束、功能更改、調試等,而且不能很好的表示Mealy狀態(tài)機的輸出,容易導致邏輯功能錯誤。另外,這種描述相對于另外兩種描述比較冗長。因此一段式描述是應當避免的描述方式,這里也不再做進一步討論。
          采用2個進程模塊,一個模塊用同步時序描述狀態(tài)轉移;另一個模塊用組合邏輯判斷狀態(tài)轉移條件、描述狀態(tài)轉移規(guī)律及邏輯輸出,稱為兩段式描述方法,這是綜合器理解最好的一種描述方式,也是要求不高的條件下最常用的一種。分析其結構概括為圖1所示框圖。



          設計的控制器時序仿真如圖2所示。



          由圖2可以看到direct輸出信號出現(xiàn)毛刺,對于精密控制器來說這是不允許的。毛刺多由組合邏輯導致的,若在輸出部分加入一個寄存器節(jié)拍,可消除毛刺保證輸出信號的穩(wěn)定性,但輸出就會延遲一個周期,所以當時序允許時該方式是很好的選擇。

          本文引用地址:http://yuyingmama.com.cn/article/201706/349601.htm

          使用3個進程模塊,一個模塊采用同步時序描述狀態(tài)轉移;第二個采用組合邏輯判斷狀態(tài)轉移條件,描述狀態(tài)轉移規(guī)律;第三個模塊使用同步時序電路描述每個狀態(tài)的輸出,該寫法稱為三段式寫法。分析其結構概括為圖3所示框圖。



          改進后的控制器時序仿真如圖4所示。



          三段式與兩段式描述相比,雖然代碼結構復雜了一些,但是換來的優(yōu)勢是做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時序路徑分組,在FPGA上的綜合與布局布線效果更佳。

          一般而言,推薦的狀態(tài)機描述方法是后兩種。其原因:設計最好使用同步時序方式,以提高設計的穩(wěn)定性,消除毛刺。狀態(tài)機實現(xiàn)后,狀態(tài)轉移部分是同步時序電路而狀態(tài)的轉移條件的判斷是組合邏輯。兩段式描述方法雖然有很多好處,但一個明顯的弱點就是其輸出使用組合邏輯描述,易產(chǎn)生毛刺等不穩(wěn)定因素,并且在邏輯器件中過多的組合邏輯會影響實現(xiàn)的速率,而三段式巧妙地根據(jù)下一狀態(tài)的判斷,用同步時序邏輯寄存狀態(tài)機的輸出。

          5.毛刺和競爭處理

          毛刺的產(chǎn)生,一方面由于狀態(tài)機中包含有組合邏輯進程,使得輸出信號在時鐘的有效邊沿產(chǎn)生毛刺;另一方面當狀態(tài)信號是多位值的時候,由于傳輸延遲的存在,各信號線上的值發(fā)生改變的時間會有先后,使得狀態(tài)遷移的時候出現(xiàn)臨時狀態(tài)。當狀態(tài)機的輸出信號作為其他功能模塊的控制信號使用時, 將會使受控模塊發(fā)生誤動作, 造成系統(tǒng)工作混亂。因此,在這種情況下必須通過改變設計消除毛刺。

          消除狀態(tài)機輸出信號的“ 毛刺”一般可從一下幾點改進:
          ①在電路設計時,選用延遲時間較小的器件,且盡可能采用級數(shù)少的電路結構;或者把時鐘信號引入組合進程,用時鐘來同步狀態(tài)遷移, 保證了輸出信號沒有毛刺,但這樣增加了輸出寄存器, 硬件開銷增大, 這對于一些寄存器資源較少的目標芯片是不利的;而且還會限制系統(tǒng)時鐘的最高工作頻率; 由于時鐘信號將輸出加載到附加的寄存器上, 所以在輸出端得到信號值的時間要比狀態(tài)的變化延時一個時鐘周期。

          ②調整狀態(tài)編碼, 使相鄰狀態(tài)間只有1位信號改變,避免毛刺的產(chǎn)生。

          ③直接把狀態(tài)機的狀態(tài)碼作為輸出信號,即采用狀態(tài)碼直接輸出型狀態(tài)機, 使狀態(tài)和輸出信號一致, 使得輸出譯碼電路被優(yōu)化掉了。這種方案, 占用芯片資源少, 信號與狀態(tài)變化同步, 速度快, 是一種較優(yōu)方案。但在設計過程中對狀態(tài)編碼時可能增加狀態(tài)向量, 出現(xiàn)多余狀態(tài)。雖然可用CASE語句中WHEN-OTHERS 來安排多余狀態(tài), 但有時難以有效控制多余狀態(tài), 運行時可能會出現(xiàn)難以預料的情況。因此它適用于狀態(tài)機輸出信號較少的場合。這種方式的缺點是削弱了設計的可讀性和可維護性[3]。

          有限狀態(tài)機綜合中的競爭現(xiàn)象是指由于敏感信號的頻繁變化導致狀態(tài)機在同一個節(jié)拍內多次改變狀態(tài),影響電路的正常工作。當輸出信號反饋回來作為輸入信號的時候,就會發(fā)生競爭。這里要指出的是在綜合前模擬的時候往往不能發(fā)現(xiàn)描述中潛在的競爭現(xiàn)象,只有在綜合后,競爭才會完全暴露出來。消除競爭的辦法是把造成競爭的信號從敏感信號表中除去,而改成由時鐘信號來觸發(fā)進程,這樣就使狀態(tài)一個節(jié)拍只改變一次[4]。

          6.狀態(tài)機的優(yōu)化

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

          7.結論

          有限狀態(tài)機是數(shù)字系統(tǒng)的一個重要組成部分。本文詳細討論了狀態(tài)機各部分及應注意的事項和各種不同寫法的優(yōu)缺點。以上只是作者在項目設計實踐中學習并總結的一些經(jīng)驗與體會,設計時需根據(jù)實際情況做適合的選擇。

          參考文獻

          [1] 吳繼華,王誠.《Verilog設計與驗證》[M],北京:人民郵電出版社,2006。

          [2] 王巍,高德遠.有限狀態(tài)機設計策略 [J].計算機工程與應用,1999,7:54-55.
          [3] 魯玲,劉大年.消除狀態(tài)機毛刺策略探討 [J] .電子技術應用,2006,9:118-119.

          [4] 李春霞,顧新,王君.有限狀態(tài)機的VHDL 描述及綜合 [J].計算機工程與應用,2005,6:111-113.

          [5] 駱珊,黃明達.VHDL 電路結構優(yōu)化設計探討 [J] .計算機應用,2001,4:14-15.



          評論


          技術專區(qū)

          關閉