新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 硬件描述語言Verilog HDL設計進階之: 典型實例-狀態機應用

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

        作者: 時間:2017-06-05 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201706/348829.htm

        4.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個步驟的設置,下面分別介紹。

        ①選擇目標器件。本實例中選擇,如圖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”文件夾。



        關鍵詞: VerilogHDL 狀態機 FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 同江市| 屏山县| 汤原县| 韶关市| 定兴县| 丰原市| 广安市| 乾安县| 札达县| 宝丰县| 泸溪县| 维西| 根河市| 永新县| 无棣县| 安陆市| 武鸣县| 沅江市| 海林市| 仁化县| 江陵县| 宝丰县| 沂水县| 望奎县| 通道| 白水县| 惠来县| 卓资县| 镇坪县| 许昌县| 榆林市| 潜山县| 黎城县| 弥勒县| 满洲里市| 五家渠市| 克东县| 巫山县| 秦安县| 交城县| 太仓市|