基於Verilog的順序狀態邏輯FSM設計與仿真

2021-01-14 電子產品世界

  硬體描述語言Verilog為數字系統設計人員提供了一種在廣泛抽象層次上描述數字系統的方式,同時,為計算機輔助設計工具在工程設計中的應用提供了方法。該語言支持早期的行為結構設計的概念,以及其後層次化結構設計的實現。這在設計過程中,進行邏輯結構部分設計時可以將行為結構和層次化結構混合起來;為確認正確性還可以將描述進行模擬,並提供一些用於自動設計的綜合工具。因而Verilog語言為設計者進行大型複雜數字系統的設計提供了途徑。超大規模集成電路設計的典型流程如圖1所示。

  本文將以順序狀態邏輯有限狀態機的設計為例介紹用Verilog語言設計數字電路的一般過程。

  1 設計規範與設計構思

  電子設計工程師在設計過程中不可避免地會遇到設計可執行特殊操作序列電路的工作,如用來控制其他電路進行操作的控制器,而有限狀態機(Finite Status Machine,FSM)是設計這種能執行特殊操作序列電路的一種非常有效的模型。FSM的結構通常由當前狀態寄存器、下一狀態邏輯和輸出邏輯三部分構成。FSM也有很多種模型,本文僅以順序狀態邏輯FSM的設計為例來說明用Verilog進行集成電路設計的一般設計過程。為簡單起見,本設計只設計了包含有8個狀態的順序狀態邏輯FSM。8個狀態分別為One、Two、ThreeA、ThreeB、ThTeeC、Dummy、Four、Five。開始狀態為One,各狀態之間的轉換關係如圖2所示。

  

  該順序狀態邏輯FSM的功能及要求如下。

  (1)同步復位信號Reset至少要維持4個時鐘周期的高電平信號,以保證狀態機進入狀態One。

  (2)當狀態機在5個狀態中循環時,A、B、C 3個輸入按優先級使狀態機從狀態Two進入相應的狀態ThreeA、ThreeB、ThreeC、Dummy。

  (3)復位後,如果A持續為高電平,則輸出信號Y1的周期為時鐘周期的5倍,且高電平維持的時間為1個時鐘周期。

  (4)如果A、B維持為低電平,而C維持為高電平,則輸出信號Y3的周期為時鐘周期的5倍,且高電平維持的時間為1個時鐘周期。

  (5)如果A維持低電子,而B維持高電平,則輸出信號Y2與Y1和Y3不同,只維持1個時鐘周期的高電平。因為當狀態機進入狀態ThreeB時,信號BeenInState3B被設置為1,而該信號就會禁止狀態機再次進入狀態ThreeB,直到另一個復位信號出現為止。

  以上是一個時序電路的設計,如何保證正確的時序是設計的關鍵。根據設計要求,該狀態機至少應該有8個埠:5個輸入埠(A、B、C、Reset、Clock),3個輸出埠(Y1、Y2、Y3)。其中輸入端A、B、C和Reset信號均由時鐘邊緣進行觸發,Reset具有最高的優先權,而輸入信號A、B、C的優先權則依次遞減。

  該順序狀態邏輯有限狀態機的埠示意圖和設計構思圖分別如圖3和圖4所示。

  

  

  

  

  

  通常EDA(Electronic Design Automation)工具都為設計人員提供了測試平臺,以驗證數字電子系統設計在功能和時序二方面的正確性。不同的EDA工具提供的平臺會有差別,但是它們都可以實現對被測試對象加載測試信號,並且能夠通過波形輸出或文件記錄輸出等方式來方便地進行觀察及比較仿真結果。而測試用的激勵代碼通常是由設計人員自己編寫。為了便於清楚地觀察、比較仿真結果,本設計對一個340ns時間段進行了模擬,且測試代碼考慮了各種可能出現的激勵情況,具體的測試代碼如下:

  

  

  4 邏輯綜合

  邏輯綜合的目標是將寄存器時間邏輯(RTL)的HDL(HardwareDescriptionLanguage)代碼映射到具體的工藝上加以實現,因而從這一步開始,設計過程與實現工藝相關聯。實現自動綜合的前提是要有邏輯綜合庫的支持。綜合庫內部包含了相應的工藝參數,最典型的有:門級延時、單元面積、扇入扇出係數等。設計一個電子系統,總有相應的設計目標,如時鐘頻率、晶片面積、埠驅動能力等。自動綜合工具將這些設計指標作為綜合過程的約束條件,在給定的包含工藝參數的綜合庫中選取最佳單元,實現綜合過程。 與模擬工具一樣,目前有許多優秀的綜合工具藉助現有的綜合庫能將Verilog語言原始碼進行綜合,轉化成門級電路圖,並且可以根據設計者施加的約束條件對電路進行優化,生成相應的門級網表。Synopsys公司的DC(DesignCompiler)就是一個比較好的邏輯綜合工具。DC邏輯綜合與優化後得到的電路圖如圖6所示。

  

  

  5 門級仿真

  綜合之後所得到的電路是否仍能滿足設計要求,同樣需要通過仿真來確定,邏輯綜合之後的仿真稱為門級仿真。門級網表是使用門電路以及電路之間的連接來描述電路的方式。門級仿真與RTL仿真不同的是,門級仿真包含了門單元的延時信息,因而門級仿真需要相應工藝的仿真庫支持。把綜合後得到的網表中門級延時參數提取出來後,對被測試對象進行反標,然後再進行仿真,得到的結果如圖7所示。

  

  從門級仿真所得到的波形圖輸出結果來看,本設計在功能與時序上是符合設計要求的。

  6 後端設計

  門級仿真通過後,接著就是進行版圖規劃;版圖規劃好以後就進行布局與布線;在版圖的布局布線都已確定後,可以從版圖中進一步提取出連線電阻、電容等參數。

  生成版圖之後,把從版圖中提取出的參數反標到門級網表中,進行包含門延時、連線延時的門級仿真,稱作後仿真。這一步主要是進行時序模擬,如果時序不能滿足設計要求,通常需要修改版圖的布局與布線、邏輯綜合的約束條件,有時也可能回到RTL描述、行為級描述甚至設計規範或算法實現上加以調整。版圖得到驗證後就可以交付生產廠家做到矽片上。

  7 結束語

  由以上的設計過程可以看出,Verilog語言的最大特點是簡潔、靈活、高效,其編程風格和C語言極其相似,所以很容易學習和掌握。同時,Verilog語言還具有底層描述方面的優勢,而且其設計方法與具體工藝無關,這就使得用Verilog語言編寫的功能模塊具有很高的可重用性。隨著集成電路的深亞微米製造技術、設計技術的迅速發展,集成電路已進入片上系統(System on a Chip,SoC)設計時代。SoC設計的最大挑戰之一是IP(Intellectual Property)模塊的有效使用和重用。IP模塊的重用,除能縮短SoC晶片設計的時間外,還能降低設計和製造成本,提高可靠性。在SoC設計中,可重用的IP模塊越多,設計過程的效率就會越高。由此可見,Verilog語言在SoC設計中可以發揮更大的作用。因此,能用Verilog語言進行電路設計是每個電子設計工程師必須掌握的基本技術。


相關焦點

  • Verilog HDL設計進階:有限狀態機的設計原理及其代碼風格
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • Verilog HDL設計進階:有限狀態機的設計原理及其代
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • 基於Verilog HDL的SVPWM算法的設計與仿真
    基於硬體的FPGA/CPLD晶片能滿足該算法對處理速度、實時性、可靠性較高的要求,本文利用Verilog HDL實現空間矢量脈寬調製算法,設計24矢量7段式的實現方法,對轉速調節和轉矩調節進行仿真,驗證了設計的實現結果與預期相符。
  • 利用有限狀態機的交通燈控制系統設計與仿真
    摘要:基於硬體電路設計軟體化的思想,根據路口交通燈控制功能要求,以可編程邏輯器件(FPGA)為硬體基礎,以有限狀態機為設計基礎,通過對系統狀態及其轉移關係的定義,運用多進程方式描述硬體模塊的邏輯關係,用VHDL語言編程實現了交通燈控制系統,經仿真,並在實驗箱上進行功能測試
  • 初學者對有限狀態機(FSM)的設計的認識
    有限狀態機(FSM)是一種常見的電路,由時序電路和組合電路組成。設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。(Mealy型:狀態的轉變不僅和當前狀態有關,而且跟各輸入信號有關;Moore型:狀態的轉變只和當前狀態有關)。
  • 三人表決器電路設計方案匯總(兩種仿真+三種邏輯電路設計)
    打開APP 三人表決器電路設計方案匯總(兩種仿真+三種邏輯電路設計) 發表於 2018-01-17 18:49:21 本文為大家帶來五種三人表決器電路設計方案
  • 基於Verilog硬體描述語言的AES密碼算法實現
    目前許多AES算法的硬體實現採用基於RAM查找表方式來實現算法中最關鍵的SubBytes部分。本文採用複合域來實現SubBytes部分的求逆運算,以便於採用組合邏輯減小面積。同時採用加/解密運算中列變換的部分電路進行復用,從而進一步節省實現面積。這樣可以使AES密碼應用於RFID系統,IC卡等面積要求較小的場合。
  • 基於VeriStand的制導系統半實物仿真平臺的研究
    秒脈衝輸出模塊用來模擬GNSS秒脈衝信號,對箭體計算機進行校對;狀態輸出模塊用來模擬星箭分離信號。秒脈衝輸出模塊和狀態輸出模塊均為自研產品,結構上採用子母板結合的方式,子板的主體為FPGA,它將實現具體的邏輯功能。並將上行和下行數據進行保存。母板的主體為PCI9054,通過CPCI總線,負責FPGA的數據與零槽控制器的數據進行交換。板卡功能結構框圖如圖2所示。
  • 基於有限狀態機的飛行器自毀系統時序控制設計
    分析飛行器自毀系統工作原理,採用複雜可編程邏輯器件(CPLD)實現了飛行器自毀系統設計,結合CPLD的特點,提出一種基於改進型有限狀態機的飛行器自毀系統時序控制的設計方法,並在CPLD中予以實現。仿真及實驗表明,基於有限狀態機的飛行器自毀系統定時精度達到納秒級,可以有效地控制自毀信號輸出並消除毛刺現象,很好地滿足系統性能要求。該方法具有結構簡單緊湊、成本低、可靠性高、精度高等優點。
  • EDA技術設計的常用軟體以及仿真工具介紹
    早期的Protel主要作為印刷板自動布線工具使用,其最新版本為Protel DXP,現在普遍使用的是Protel99SE,它是個完整的全方位電路設計系統,包含了電原理圖繪製、模擬電路與數字電路混合信號仿真、多層印刷電路板設計(包含印刷電路板自動布局布線),可編程邏輯器件設計、圖表生成、電路表格生成、支持宏操作等功能,並具有Client/Server(客戶/服務體系結構),同時還兼容一些其它設計軟體的文件格式
  • 讓Verilog仿真狀態機時可以顯示狀態名
    Situation: 我們平時使用Verilog進行狀態機編碼時,通常使用parameter對狀態名進行定義,這樣寫Case語句的時候就不會對這一串10摸不著頭腦。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 基於單片機的邏輯無環流可逆調速系統設計
    因此,這裡給出一種基於單片機的邏輯無環流可逆調速控制系統設計方案。該系統設計採用全數字電路,實現數字脈衝觸發、數字轉速給定檢測和數字PI算法等功能,由軟體實現轉速、電流調節及邏輯判斷和複雜運算,具有不同於一般模擬電路的最優化、自適應、非線性、智能化等控制規律,而且更改靈活方便。
  • 基於自適應狀態觀測器的混沌同步仿真研究
    目前關於混沌控制與同步的方法已有很多,但大部分都是在驅動系統參數已知、響應系統能夠構建為基礎上的,然而在實際系統中系統的狀態變量並不是都可以得到的,因此可構造狀態觀測器實現混沌系統同步。此外,系統參數總存在一定的攝動,系統不可避免地會受到外界幹擾的影響,而參量的微小變化就會導致系統動態行為的巨大變化。因此近幾年對參數不確定混沌系統的自適應同步控制方法的研究越來越多。
  • 基於Proteus的液晶溫度顯示器仿真設計
    摘要:給出了一種基於Proteus7.5仿真實現的液晶溫度顯示器設計。採用Keil uVision3設計系統軟體的C51源程序並調試。在Proteus 7.5平臺上,對系統進行了軟硬體仿真。仿真結果表明,該系統的測量和顯示精度達到了0.1℃。通過Proteus對液晶溫度顯示器的工作狀態進行模擬,以檢驗和評估設計的可行性,縮短了實際系統開發周期,降低了開發成本,是一種有效可行的仿真方法。
  • 一種基於線性化直升機數學模型的仿真系統
    摘要:為了配合飛行控制系統的設計和開發,本文設計了一種基於線性化直升機數學模型的半物理仿真系統。重點講述了仿真系統的系統結構以及各個組成部分的功能,描述了線性化直升機仿真模型的基本原理和實現過程,並以航線飛行為例給出了仿真過程和仿真結果。實際使用表明,本系統具有結構簡單、仿真準確、可靠性高的特點,達到了設計要求。
  • 基於Verilog HDL的SPWM全數字算法的FPGA實現
    Flash 存儲器讀操作可以從FB陣列、頁面緩衝區或狀態寄存器中讀取數據。  2 數字系統電路總體設計方案  2.1 SPWM算法原理[3]  正弦脈寬調製技術(SPWM)是調製波為正弦波、載波為三角波或鋸齒波的一種脈寬調製法,是現代變頻調速系統中應用最為廣泛的脈寬調製方式,目前有自然採樣法、規則採樣法、等面積法等。
  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真
  • 基於HFSS天線去耦仿真的設計
    因此,一個空間狹窄的無線系統,在其天線設計過程中就必須考慮儘可能好的處理天線間的互耦。在工程中,一般用隔離度表徵天線間的互耦效應,在wifi頻段的天線設計中,通常要求天線隔離度大於15dB。解決天線互耦問題的方法有很多,例如改變天線的間距和極化方式、設計去耦網絡、設計缺陷地結構、設計電流中和線等。