硬體描述語言Verilog HDL設計進階之: 典型實例-狀態機應用

2021-01-14 電子產品世界

本文引用地址:http://www.eepw.com.cn/article/201706/348829.htm4.6典型實例6:狀態機應用4.6.1實例的內容及目標1.實例的主要內容

狀態機設計是HDL設計裡面的精華,幾乎所有的設計裡面都或多或少地使用了狀態機的思想。狀態機,顧名思義,就是一系列狀態組成的一個循環機制,這樣的結構使得編程人員能夠更好地使用HDL語言,同時具有特定風格的狀態機也能提高程序的可讀性和調試性。

本實例通過設計一個狀態機來控制紅色颶風II代Xilinx開發板上面的8個LED燈循環閃爍。在本實例狀態機的設計過程中,讀者需要著重注意狀態機設計的一些特性。

·FSM設計方法(米勒型和摩爾型)。

·狀態機的編碼(Binary、gray-code、one-hot等)。

·狀態機的初始化狀態和默認狀態(完整狀態機設計)。

·狀態機的狀態定義風格(使用parameter參數定義狀態)。

·狀態機的編寫風格(狀態任務與狀態轉換分離)

2.實例目的

通過本實例,讀者應達到下面的目標。

·熟悉XilinxISE開發環境。

·熟悉紅色颶風II代Xilinx開發板的使用。

·了解狀態機設計輸入方法。

·掌握狀態機在系統設計中的應用。

4.6.2實例詳解

本實例的具體步驟可參見2.6節,在此不再詳述,僅給出主要的操作流程以及狀態機的設計輸入方法。

(1)啟動ISE軟體。

(2)創建新工程。

(3)編寫狀態機Verilog代碼。

狀態機的代碼可以直接進行手動編寫,如圖4.2所示。

圖4.2手動編寫狀態機代碼

對於簡單的狀態機,使用手動輸入的方式進行編寫是最直接的。但是如果需要進行複雜的狀態機設計,使用狀態圖設計輸入方式則會更加方便。下面介紹使用狀態圖進行狀態機設計的一般步驟。

使用ISE創建工程後,為工程添加新的設計輸入,選擇「StateDiagram」選項,如圖4.3所示。

圖4.3狀態圖設計輸入方式

此時ISE將打開如圖4.4所示的StateCAD工具進行狀態機設計。

圖4.4StateCAD狀態機設計工具

在這個專門的工具中,讀者就可以很方便地進行狀態機的設計。使用這個工具進行狀態機設計的步驟主要分為3個,下面分別介紹。

(1)創建狀態機。

單擊工具欄上的圖標,打開狀態機輸入嚮導,如圖4.5所示。

在本實例中,我們在嚮導第1頁設置一個8狀態的狀態機,如圖4.5所示。在該頁中,還可以設置狀態機圖形的形狀。在對話框的右側有圖形的預覽效果,用戶可根據自己的喜好設置圖形的形狀。

在狀態機嚮導的第2頁,我們為狀態機使用同步復位模式,建立一個同步狀態機,如圖4.6所示。

圖4.5狀態機嚮導 圖4.6同步狀態機

在狀態機嚮導的第3頁,可以設置狀態機的轉換模式,本實例中使用Next轉換模式,如圖4.7所示。

圖4.7狀態機轉換模式

設置完畢後,單擊「Finish」按鈕即可完成狀態機的創建。在StateCAD工具的工作區將出現如圖4.8所示的狀態機圖形。

(2)添加狀態任務。

創建狀態機後,就要為其中的每一個狀態添加狀態任務。首先,雙擊如圖4.8所示的圖形中的STATE0狀態,為STATE0添加任務。此時,將出現如圖4.9所示的狀態任務編輯器。

圖4.8創建的狀態機

單擊「OutputWizard」按鈕,打開輸出嚮導對話框,如圖4.10所示。

圖4.9狀態任務編輯器 圖4.10狀態輸出嚮導對話框

在輸出嚮導對話框裡面有很多可以選擇的邏輯,根據不同的需要選擇邏輯資源,並輸入參數。單擊「OK」按鈕即可完成對STATE0的狀態任務編輯。

按照相同的方法分別為每個狀態加載任務,得到如圖4.11所示的狀態機。

(3)添加狀態轉換條件。

設置完狀態任務後,還需要為狀態之間的轉換調價條件。可以雙擊兩個狀態之間的連線設定狀態轉移條件,此時將出現條件編輯器,如圖4.12所示。

在該對話框中,可以在「Condition」下面填寫轉移條件(例如:cnt=10),也可以單擊「OutputWizard」按鈕打開輸出嚮導進行設置。設置結束後,單擊「OK」按鈕,完成兩個狀態之間的轉換條件設置。

圖4.11添加任務的狀態機圖形

圖4.12狀態轉換條件編輯器

按照同樣的方法為需要添加轉換條件的狀態連線加載狀態轉移條件。完成後,得到如圖4.13所示的狀態機。

至此,一個基本的狀態機已經建立完畢。這樣的一個狀態機已經可以在我們的系統中使用。不過在使用之前,我們還需要為StateCAD工具做一些設置,才能使圖形形式的狀態機轉化為HDL語言的形式。

1.優化設置

首先對狀態機進行優化設置,選擇StateCAD工具條上的按鈕,打開優化設置嚮導,如圖4.14所示。

圖4.13添加狀態轉換條件的狀態機

圖4.14優化設置嚮導

在如圖4.14所示的嚮導中,提示將進行5個步驟的設置,下面分別介紹。

①選擇目標器件。本實例中選擇FPGA,如圖4.15所示。

圖4.15選擇目標器件

②選擇狀態機的優化方向,用戶可以選擇速度優先、佔用面積優先以及手動設置。在本實例中我們選擇速度優先,如圖4.16所示。

③對狀態機的性能改善方式進行選擇,如圖4.17所示,本實例選擇保證覆蓋面積模式。

圖4.16狀態機優化方向

圖4.17狀態機性能改善模式

④加載優化參數設置,如圖4.18所示。

圖4.18加載優化參數設置

⑤為狀態機選擇輸出的HDL語言形式以及綜合的EDA工具。在本實例中,選擇Verilog語言及XilinxXST綜合工具,如圖4.19所示。

圖4.19選擇目標HDL語言和EDA工具

經過這5個步驟的設置,就完成了狀態機的優化設置,可以開始生成Verilog語言形式的狀態機了。

選擇StateCAD工具欄上的按鈕,開始生成Verilog狀態機。如果設計沒有錯誤,將出現如圖4.20所示的結果對話框。

圖4.20狀態機生成結果

單擊「Close」按鈕後,就可以看見生成的與狀態機名稱相同、後綴為.v的源文件了。

2.添加設計輸入

將使用StateCAD生成的狀態機源文件加入工程中,即可查看並編輯相關的狀態機的代碼了。

3.設置器件及管腳約束

按照開發板的說明進行相關的設置。

4.下載驗證

本實例的狀態機在開發板上下載後,將能看到開發板上的8個LED循環變亮,即實現跑馬燈的功能。

4.6.3參考設計

本實例相關參考設計文件在本書實例代碼的「典型實例6」文件夾。

相關焦點

  • Verilog HDL設計進階:有限狀態機的設計原理及其代碼風格
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • 如何設計一個穩定可靠的狀態機
    隨著大規模和超大規模FPGA/CPLD器件的誕生和發展,以HDL(硬體描述語言)為工具、FPGA/CPLD器件為載體的EDA技術的應用越來越廣泛.從小型電子系統到大規模SOC(Systemonachip)設計,已經無處不在.在FPGA/CPLD設計中,狀態機是最典型、應用最廣泛的時序電路模塊,如何設計一個穩定可靠的狀態機是我們必須面對的問題.
  • 基於Verilog硬體描述語言的AES密碼算法實現
    解密過程與加密過程類似,但執行順序與描述內容有所不同,因此AES算法的加解密運算需要分別實現。  2 AES算法的硬體設計  根據AES算法的原理和基本結構,將整個AES算法模塊分成4個相對獨立的子模塊:接口模塊、控制單元模塊、加解密運算模塊、密鑰擴展模塊。
  • Verilog HDL設計進階:有限狀態機的設計原理及其代
    由於Verilog HDL和 VHDL 行為描述用於綜合的歷史還只有短短的幾年,可綜合風格的Verilog HDL 和VHDL的語法只是它們各自語言的一個子集。又由於HDL的可綜合性研究近年來非常活躍,可綜合子集的國際標準目前尚未最後形成,因此各廠商的綜合器所支持的HDL子集也略有所不同。
  • 基於Verilog HDL的SVPWM算法的設計與仿真
    摘要:空間矢量脈寬調製算法是電壓型逆變器控制方面的研究熱點,廣泛應用於三相電力系統中。基於硬體的FPGA/CPLD晶片能滿足該算法對處理速度、實時性、可靠性較高的要求,本文利用Verilog HDL實現空間矢量脈寬調製算法,設計24矢量7段式的實現方法,對轉速調節和轉矩調節進行仿真,驗證了設計的實現結果與預期相符。
  • Verilog HDL基礎之:與C語言的區別與聯繫(獨家)
    如果要設計一個專門的電路來進行這種對速度有要求的實時數據處理,除了以上介紹的C程序外,還需編寫硬體描述語言(如Verilog HDL或 VHDL)的程序。然後進行仿真以便從電路結構上保證算法能在規定的時間內完成,並能與前端和後端的設備或器件正確無誤地交換數據。
  • 狀態機重新優化業務流程
    完整操作的信息沒有直接在表中描述,只能使用腳註添加。包含完整動作信息的FSM定義可以使用狀態表(另請參見虛擬有限狀態機)。UML狀態機統一建模語言有一個描述狀態機的符號。UML狀態機克服了傳統有限狀態機的局限性,同時保留了它們的主要優點。UML狀態機引入了層次嵌套狀態和正交區域的新概念,同時擴展了操作的概念。UML狀態機具有Mealy機器和Moore機器的特性。
  • 基於Verilog硬體描述語言實現SHA-1算法的設計
    基於Verilog硬體描述語言實現SHA-1算法的設計 黃諄,白國強,陳弘 發表於 2020-11-28 10:16:16 單向散列函數是密碼學中一種重要的工具,它可以將一個較長的位串映射成一個較短的位串
  • Verilog HDL基礎之:程序基本結構
    Verilog HDL是一種用於數字邏輯電路設計的語言。用Verilog HDL描述的電路設計就是該電路的Verilog HDL模型。Verilog HDL既是一種行為描述的語言,也是一種結構描述的語言。也就是說,既可以用電路的功能描述,也可以用元器件和它們之間的連接來建立所設計電路的Verilog HDL模型。
  • 基於Verilog的順序狀態邏輯FSM設計與仿真
    硬體描述語言Verilog為數字系統設計人員提供了一種在廣泛抽象層次上描述數字系統的方式,同時,為計算機輔助設計工具在工程設計中的應用提供了方法。該語言支持早期的行為結構設計的概念,以及其後層次化結構設計的實現。
  • 如何在FPGA中實現狀態機
    對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。本文引用地址:http://www.eepw.com.cn/article/266770.htm  理論上講,狀態機可以分為Moore狀態機和Mealy狀態機兩大類。
  • 基於Verilog HDL的SPWM全數字算法的FPGA實現
    實現SPWM控制算法的方法很多,其中模擬比較法因電路複雜、且不易與數字系統連接而很少採用;傳統的微處理器因不能滿足電機控制所要求的較高採樣頻率(≥1 kHz)而逐漸被高性能的DSP硬體系統所取代,但該系統成本高、設計複雜。
  • 單片機之狀態機淺談
    說到單片機編程,不得不說到狀態機,狀態機做為軟體編程的主要架構已經在各種語言中應用,當然包括C語言,在一個思路清晰而且高效的程序中,必然有狀態機的身影浮現。靈活的應用狀態機不僅是程序更高效,而且可讀性和擴展性也很好。狀態無處不在,狀態中有狀態,只要掌握了這種思維,讓它成為您編程中的一種習慣,相信您會受益匪淺。
  • LabVIEW設計模型——狀態機
    狀態機是在工程應用中使用最多的設計模型。使用狀態機,我們可以很容易的實現程序流程圖中的判斷、分支。 狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。
  • 用STATECAD快速設計有限狀態機
    有限狀態機設計的關鍵是如何把一個實際的時序邏輯關係抽象成一個時序邏輯函數,傳統的電路圖輸入法通過直接設計寄存器組來實現各個狀態之間的轉換, 而用硬體描述語言來描述有限狀態機, 往往是通過充分發揮硬體描述語言的抽象建模能力,通過對系統在系統級或寄存器傳輸級進行描述來建立有限狀態機。EDA 工具的快速發展,使通過CAD快速設計有限狀態機自動化成為可能。
  • NiMotion一體化電機在PLC上應用案例---TCP轉CAN通訊
    完美的替換了CANopen總線特殊模塊,降低用戶的使用成本的同時大大簡化了工程設計和工程實施的難度。本實例NiMotion一體化閉環步進電機TCP/IP通信實例介紹工程硬體連接、實例報文、關於乙太網轉CAN通信轉換器、總結。
  • 各大公司IC設計筆試試題
    與門陣列等其它ASIC(Application Specific IC)相比,它們又具有設計開發周期短、設計製造成本低、開發工具先進、標準產品無需測試、質量穩定以及可實時在線檢驗等優點 3、什麼叫做OTP片、掩膜片,兩者的區別何在?(仕蘭微面試題目) 4、你知道的集成電路設計的表達方式有哪幾種?(仕蘭微面試題目) 5、描述你對集成電路設計流程的認識。
  • 利用74LS161實現複雜狀態機
    > 有限狀態機FSM思想廣泛應用於硬體控制電路設計,也是軟體上常用的一種處理方法(軟體上稱為FMM有限消息機)。 圖  有限狀態機工作原理 下圖為一個狀態機實例的狀態轉移圖,它的含義是: 在s0狀態,如果發生e0事件,那麼就執行a0動作,並保持狀態不變; 如果發生e1事件,那麼就執行a1動作,
  • 一篇文章說清楚數字晶片是怎麼設計的
    今天先來說下數字晶片的設計流程是怎麼樣的。通常,定義一個SOC,需要確定前期的系統設計需求。確定好了大的功能之後,然後開始分解。分解軟體和硬體的接口,然後硬體再分成很多個小的子模塊。SOC開發流程之軟硬體模塊劃分
  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真