色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 硬件描述語言Verilog HDL設(shè)計進階之: 典型實例-狀態(tài)機應(yīng)用

          硬件描述語言Verilog HDL設(shè)計進階之: 典型實例-狀態(tài)機應(yīng)用

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

          本文引用地址:http://cafeforensic.com/article/201706/348829.htm

          4.6典型實例6:應(yīng)用

          4.6.1實例的內(nèi)容及目標

          1.實例的主要內(nèi)容

          設(shè)計是HDL設(shè)計里面的精華,幾乎所有的設(shè)計里面都或多或少地使用了的思想。狀態(tài)機,顧名思義,就是一系列狀態(tài)組成的一個循環(huán)機制,這樣的結(jié)構(gòu)使得編程人員能夠更好地使用HDL語言,同時具有特定風(fēng)格的狀態(tài)機也能提高程序的可讀性和調(diào)試性。

          本實例通過設(shè)計一個狀態(tài)機來控制紅色颶風(fēng)II代Xilinx開發(fā)板上面的8個LED燈循環(huán)閃爍。在本實例狀態(tài)機的設(shè)計過程中,讀者需要著重注意狀態(tài)機設(shè)計的一些特性。

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

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

          ·狀態(tài)機的初始化狀態(tài)和默認狀態(tài)(完整狀態(tài)機設(shè)計)。

          ·狀態(tài)機的狀態(tài)定義風(fēng)格(使用parameter參數(shù)定義狀態(tài))。

          ·狀態(tài)機的編寫風(fēng)格(狀態(tài)任務(wù)與狀態(tài)轉(zhuǎn)換分離)

          2.實例目的

          通過本實例,讀者應(yīng)達到下面的目標。

          ·熟悉XilinxISE開發(fā)環(huán)境。

          ·熟悉紅色颶風(fēng)II代Xilinx開發(fā)板的使用。

          ·了解狀態(tài)機設(shè)計輸入方法。

          ·掌握狀態(tài)機在系統(tǒng)設(shè)計中的應(yīng)用。

          4.6.2實例詳解

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

          (1)啟動ISE軟件。

          (2)創(chuàng)建新工程。

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

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

          圖4.2手動編寫狀態(tài)機代碼

          對于簡單的狀態(tài)機,使用手動輸入的方式進行編寫是最直接的。但是如果需要進行復(fù)雜的狀態(tài)機設(shè)計,使用狀態(tài)圖設(shè)計輸入方式則會更加方便。下面介紹使用狀態(tài)圖進行狀態(tài)機設(shè)計的一般步驟。

          使用ISE創(chuàng)建工程后,為工程添加新的設(shè)計輸入,選擇“StateDiagram”選項,如圖4.3所示。

          圖4.3狀態(tài)圖設(shè)計輸入方式

          此時ISE將打開如圖4.4所示的StateCAD工具進行狀態(tài)機設(shè)計。

          圖4.4StateCAD狀態(tài)機設(shè)計工具

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

          (1)創(chuàng)建狀態(tài)機。

          單擊工具欄上的圖標,打開狀態(tài)機輸入向?qū)В鐖D4.5所示。

          在本實例中,我們在向?qū)У?頁設(shè)置一個8狀態(tài)的狀態(tài)機,如圖4.5所示。在該頁中,還可以設(shè)置狀態(tài)機圖形的形狀。在對話框的右側(cè)有圖形的預(yù)覽效果,用戶可根據(jù)自己的喜好設(shè)置圖形的形狀。

          在狀態(tài)機向?qū)У牡?頁,我們?yōu)闋顟B(tài)機使用同步復(fù)位模式,建立一個同步狀態(tài)機,如圖4.6所示。

          圖4.5狀態(tài)機向?qū)?圖4.6同步狀態(tài)機

          在狀態(tài)機向?qū)У牡?頁,可以設(shè)置狀態(tài)機的轉(zhuǎn)換模式,本實例中使用Next轉(zhuǎn)換模式,如圖4.7所示。

          圖4.7狀態(tài)機轉(zhuǎn)換模式

          設(shè)置完畢后,單擊“Finish”按鈕即可完成狀態(tài)機的創(chuàng)建。在StateCAD工具的工作區(qū)將出現(xiàn)如圖4.8所示的狀態(tài)機圖形。

          (2)添加狀態(tài)任務(wù)。

          創(chuàng)建狀態(tài)機后,就要為其中的每一個狀態(tài)添加狀態(tài)任務(wù)。首先,雙擊如圖4.8所示的圖形中的STATE0狀態(tài),為STATE0添加任務(wù)。此時,將出現(xiàn)如圖4.9所示的狀態(tài)任務(wù)編輯器。

          圖4.8創(chuàng)建的狀態(tài)機

          單擊“OutputWizard”按鈕,打開輸出向?qū)υ捒颍鐖D4.10所示。

          圖4.9狀態(tài)任務(wù)編輯器 圖4.10狀態(tài)輸出向?qū)υ捒?/p>

          在輸出向?qū)υ捒蚶锩嬗泻芏嗫梢赃x擇的邏輯,根據(jù)不同的需要選擇邏輯資源,并輸入?yún)?shù)。單擊“OK”按鈕即可完成對STATE0的狀態(tài)任務(wù)編輯。

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

          (3)添加狀態(tài)轉(zhuǎn)換條件。

          設(shè)置完狀態(tài)任務(wù)后,還需要為狀態(tài)之間的轉(zhuǎn)換調(diào)價條件??梢噪p擊兩個狀態(tài)之間的連線設(shè)定狀態(tài)轉(zhuǎn)移條件,此時將出現(xiàn)條件編輯器,如圖4.12所示。

          在該對話框中,可以在“Condition”下面填寫轉(zhuǎn)移條件(例如:cnt=10),也可以單擊“OutputWizard”按鈕打開輸出向?qū)нM行設(shè)置。設(shè)置結(jié)束后,單擊“OK”按鈕,完成兩個狀態(tài)之間的轉(zhuǎn)換條件設(shè)置。

          圖4.11添加任務(wù)的狀態(tài)機圖形

          圖4.12狀態(tài)轉(zhuǎn)換條件編輯器

          按照同樣的方法為需要添加轉(zhuǎn)換條件的狀態(tài)連線加載狀態(tài)轉(zhuǎn)移條件。完成后,得到如圖4.13所示的狀態(tài)機。

          至此,一個基本的狀態(tài)機已經(jīng)建立完畢。這樣的一個狀態(tài)機已經(jīng)可以在我們的系統(tǒng)中使用。不過在使用之前,我們還需要為StateCAD工具做一些設(shè)置,才能使圖形形式的狀態(tài)機轉(zhuǎn)化為HDL語言的形式。

          1.優(yōu)化設(shè)置

          首先對狀態(tài)機進行優(yōu)化設(shè)置,選擇StateCAD工具條上的按鈕,打開優(yōu)化設(shè)置向?qū)?,如圖4.14所示。

          圖4.13添加狀態(tài)轉(zhuǎn)換條件的狀態(tài)機

          圖4.14優(yōu)化設(shè)置向?qū)?/p>

          在如圖4.14所示的向?qū)е校崾緦⑦M行5個步驟的設(shè)置,下面分別介紹。

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

          圖4.15選擇目標器件

          ②選擇狀態(tài)機的優(yōu)化方向,用戶可以選擇速度優(yōu)先、占用面積優(yōu)先以及手動設(shè)置。在本實例中我們選擇速度優(yōu)先,如圖4.16所示。

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

          圖4.16狀態(tài)機優(yōu)化方向

          圖4.17狀態(tài)機性能改善模式

          ④加載優(yōu)化參數(shù)設(shè)置,如圖4.18所示。

          圖4.18加載優(yōu)化參數(shù)設(shè)置

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

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

          經(jīng)過這5個步驟的設(shè)置,就完成了狀態(tài)機的優(yōu)化設(shè)置,可以開始生成Verilog語言形式的狀態(tài)機了。

          選擇StateCAD工具欄上的按鈕,開始生成Verilog狀態(tài)機。如果設(shè)計沒有錯誤,將出現(xiàn)如圖4.20所示的結(jié)果對話框。

          圖4.20狀態(tài)機生成結(jié)果

          單擊“Close”按鈕后,就可以看見生成的與狀態(tài)機名稱相同、后綴為.v的源文件了。

          2.添加設(shè)計輸入

          將使用StateCAD生成的狀態(tài)機源文件加入工程中,即可查看并編輯相關(guān)的狀態(tài)機的代碼了。

          3.設(shè)置器件及管腳約束

          按照開發(fā)板的說明進行相關(guān)的設(shè)置。

          4.下載驗證

          本實例的狀態(tài)機在開發(fā)板上下載后,將能看到開發(fā)板上的8個LED循環(huán)變亮,即實現(xiàn)跑馬燈的功能。

          4.6.3參考設(shè)計

          本實例相關(guān)參考設(shè)計文件在本書實例代碼的“典型實例6”文件夾。



          關(guān)鍵詞: VerilogHDL 狀態(tài)機 FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉