已看第五章VHDL有限狀態(tài)機設(shè)計_第1頁
已看第五章VHDL有限狀態(tài)機設(shè)計_第2頁
已看第五章VHDL有限狀態(tài)機設(shè)計_第3頁
已看第五章VHDL有限狀態(tài)機設(shè)計_第4頁
已看第五章VHDL有限狀態(tài)機設(shè)計_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、VHDL有限狀態(tài)機設(shè)計有限狀態(tài)機設(shè)計 內(nèi)容內(nèi)容 u有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 uVHDL語言描述狀態(tài)機語言描述狀態(tài)機 u狀態(tài)機設(shè)計舉例狀態(tài)機設(shè)計舉例 u三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u毛刺信號的數(shù)字排除方式毛刺信號的數(shù)字排除方式 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u狀態(tài)機是一種思想方法狀態(tài)機是一種思想方法 狀態(tài)機的本質(zhì)就是對具有邏輯順序或時序規(guī)律狀態(tài)機的本質(zhì)就是對具有邏輯順序或時序規(guī)律 事件的一種描述方法。具有邏輯順序和時序規(guī)事件的一種描述方法。具有邏輯順序和時序規(guī) 律的事件都適合用狀態(tài)機描述。律的事

2、件都適合用狀態(tài)機描述。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 某學(xué)生在學(xué)校的學(xué)習(xí)生活可以簡單地概括為宿某學(xué)生在學(xué)校的學(xué)習(xí)生活可以簡單地概括為宿 舍、教室、食堂之間的周而復(fù)始。舍、教室、食堂之間的周而復(fù)始。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 右圖也是一張標(biāo)準(zhǔn)右圖也是一張標(biāo)準(zhǔn) 的狀態(tài)轉(zhuǎn)移圖,通過的狀態(tài)轉(zhuǎn)移圖,通過 狀態(tài)機的方式我們再狀態(tài)機的方式我們再 次清晰地描述另一個次清晰地描述另一個 學(xué)生的在校生活方式。學(xué)生的在校生活方式。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u例:設(shè)計一個以秒為單位的例:設(shè)計一個以秒為單位的4位流水燈。要求:位流水燈。要求: 每秒只能點亮每秒只

3、能點亮1個個LED,點亮方式為高電平有效。,點亮方式為高電平有效。 u例:設(shè)計一個串行數(shù)據(jù)流檢測器。要求:輸入連例:設(shè)計一個串行數(shù)據(jù)流檢測器。要求:輸入連 續(xù)的二進制數(shù),當(dāng)檢測到連續(xù)續(xù)的二進制數(shù),當(dāng)檢測到連續(xù)“1”的個數(shù)大于的個數(shù)大于2 個的時候,輸出個的時候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出“0”。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u有限狀態(tài)機的定義有限狀態(tài)機的定義 所謂有限狀態(tài)機是指那些輸出取決于過去輸入所謂有限狀態(tài)機是指那些輸出取決于過去輸入 部分和當(dāng)前輸入部分的時序邏輯電路。部分和當(dāng)前輸入部分的時序邏輯電路。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u狀態(tài)機的

4、本質(zhì)狀態(tài)機的本質(zhì) 對具有對具有“邏輯順序邏輯順序”和和“時序規(guī)律時序規(guī)律”事件的一事件的一 種描述方法。種描述方法。 u應(yīng)用思路應(yīng)用思路 從狀態(tài)變量入手,分析每個狀態(tài)的輸入,狀態(tài)從狀態(tài)變量入手,分析每個狀態(tài)的輸入,狀態(tài) 轉(zhuǎn)移和輸出,從而完成電路的功能。轉(zhuǎn)移和輸出,從而完成電路的功能。 首先明確電路的輸出關(guān)系,這些輸出相當(dāng)于狀首先明確電路的輸出關(guān)系,這些輸出相當(dāng)于狀 態(tài)的輸出,回溯規(guī)劃每個狀態(tài)和狀態(tài)轉(zhuǎn)移條件態(tài)的輸出,回溯規(guī)劃每個狀態(tài)和狀態(tài)轉(zhuǎn)移條件 與狀態(tài)輸入。與狀態(tài)輸入。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u狀態(tài)機的基本要素狀態(tài)機的基本要素 狀態(tài):也叫狀態(tài)變量。在邏輯設(shè)計中,使用狀狀

5、態(tài):也叫狀態(tài)變量。在邏輯設(shè)計中,使用狀 態(tài)劃分邏輯順序和時序規(guī)律。態(tài)劃分邏輯順序和時序規(guī)律。 輸出:輸出指在某一個狀態(tài)時特定發(fā)生的事件。輸出:輸出指在某一個狀態(tài)時特定發(fā)生的事件。 輸入:指狀態(tài)機中進入每個狀態(tài)的條件,有的輸入:指狀態(tài)機中進入每個狀態(tài)的條件,有的 狀態(tài)機沒有輸入條件,其中的狀態(tài)轉(zhuǎn)移較為簡狀態(tài)機沒有輸入條件,其中的狀態(tài)轉(zhuǎn)移較為簡 單,有的狀態(tài)機有輸入條件,當(dāng)某個輸入條件單,有的狀態(tài)機有輸入條件,當(dāng)某個輸入條件 存在時才能轉(zhuǎn)移到相應(yīng)的狀態(tài)。存在時才能轉(zhuǎn)移到相應(yīng)的狀態(tài)。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u有限狀態(tài)機的組成有限狀態(tài)機的組成 組合邏輯組合邏輯 組合邏輯又可分為

6、次態(tài)邏輯和輸出邏輯兩個部分。其組合邏輯又可分為次態(tài)邏輯和輸出邏輯兩個部分。其 中:次態(tài)邏輯的功能是用來確定有限狀態(tài)機的下一個中:次態(tài)邏輯的功能是用來確定有限狀態(tài)機的下一個 狀態(tài);輸出邏輯是用來確定有限狀態(tài)機的輸出。狀態(tài);輸出邏輯是用來確定有限狀態(tài)機的輸出。 時序邏輯時序邏輯 時序邏輯:時序邏輯:同步時序方式工作下運轉(zhuǎn)及狀態(tài)轉(zhuǎn)換。同步時序方式工作下運轉(zhuǎn)及狀態(tài)轉(zhuǎn)換。 寄存器邏輯寄存器邏輯 寄存器邏輯的功能:用來存儲有限狀態(tài)機的內(nèi)部狀態(tài)。寄存器邏輯的功能:用來存儲有限狀態(tài)機的內(nèi)部狀態(tài)。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u狀態(tài)機實現(xiàn)三個功能狀態(tài)機實現(xiàn)三個功能 狀態(tài)譯碼:根據(jù)輸入以及系統(tǒng)當(dāng)

7、前的狀態(tài),狀態(tài)譯碼:根據(jù)輸入以及系統(tǒng)當(dāng)前的狀態(tài), 由狀態(tài)方程來決定下一狀態(tài)的狀態(tài)碼。由狀態(tài)方程來決定下一狀態(tài)的狀態(tài)碼。 狀態(tài)輸出:根據(jù)當(dāng)前的狀態(tài)碼決定電路當(dāng)前輸出。狀態(tài)輸出:根據(jù)當(dāng)前的狀態(tài)碼決定電路當(dāng)前輸出。 狀態(tài)轉(zhuǎn)換:將下一狀態(tài)轉(zhuǎn)變?yōu)楫?dāng)前狀態(tài)。狀態(tài)轉(zhuǎn)換:將下一狀態(tài)轉(zhuǎn)變?yōu)楫?dāng)前狀態(tài)。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u1. 說明部分說明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; u2.主控時序進程主控時序進程 負(fù)責(zé)狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下的狀態(tài)

8、轉(zhuǎn)換,隨負(fù)責(zé)狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下的狀態(tài)轉(zhuǎn)換,隨 外部時鐘信號,以同步時序方式工作。外部時鐘信號,以同步時序方式工作。 u3.主控組合進程主控組合進程 通過通過pr_state的改變,進入主控組合進程,根據(jù)外部的改變,進入主控組合進程,根據(jù)外部 輸入信號確定輸出和下一狀態(tài)的走向(輸入信號確定輸出和下一狀態(tài)的走向(nx_state) u4. 輔助進程輔助進程 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u有限狀態(tài)機的類型有限狀態(tài)機的類型 從信號輸出方式上分從信號輸出方式上分 Mealy型狀態(tài)機型狀態(tài)機 Moore型狀態(tài)機型狀態(tài)機 從結(jié)構(gòu)上分從結(jié)構(gòu)上分 單進程狀態(tài)機單進程狀態(tài)機 兩進程狀態(tài)機兩

9、進程狀態(tài)機 三進程狀態(tài)機三進程狀態(tài)機 從表達方式上分從表達方式上分 符號化狀態(tài)機符號化狀態(tài)機 確定狀態(tài)編碼的狀態(tài)機確定狀態(tài)編碼的狀態(tài)機 從編碼方式上分從編碼方式上分 順序編碼狀態(tài)機順序編碼狀態(tài)機 獨熱碼狀態(tài)機獨熱碼狀態(tài)機 格雷碼狀態(tài)機格雷碼狀態(tài)機 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 uMoore型有限狀態(tài)機型有限狀態(tài)機 是指那些輸出信號僅與當(dāng)前狀態(tài)有關(guān)的有限狀是指那些輸出信號僅與當(dāng)前狀態(tài)有關(guān)的有限狀 態(tài)機,即可以把態(tài)機,即可以把Moore型有限狀態(tài)機的輸出看型有限狀態(tài)機的輸出看 成是當(dāng)前狀態(tài)的函數(shù)。成是當(dāng)前狀態(tài)的函數(shù)。 Moore型有限狀態(tài)機框圖:型有限狀態(tài)機框圖: 1 有限狀態(tài)機的

10、基本概念有限狀態(tài)機的基本概念 uMealy型有限狀態(tài)機型有限狀態(tài)機 是指那些輸出信號不僅與當(dāng)前狀態(tài)有關(guān),而且是指那些輸出信號不僅與當(dāng)前狀態(tài)有關(guān),而且 還與所有的輸入信號有關(guān)的有限狀態(tài)機,即可還與所有的輸入信號有關(guān)的有限狀態(tài)機,即可 以把以把Mealy有限狀態(tài)機的輸出看作當(dāng)前狀態(tài)和有限狀態(tài)機的輸出看作當(dāng)前狀態(tài)和 所有輸入信號的函數(shù)。可見,所有輸入信號的函數(shù)??梢姡琈ealy有限狀態(tài)有限狀態(tài) 機要比機要比Moore有限狀態(tài)機復(fù)雜一些。有限狀態(tài)機復(fù)雜一些。 Mealy有限狀態(tài)機框圖:有限狀態(tài)機框圖: 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 uMoore型和型和Mealy型有限狀態(tài)機的區(qū)別:型有

11、限狀態(tài)機的區(qū)別: Moore型有限狀態(tài)機僅與當(dāng)前狀態(tài)有關(guān),而與型有限狀態(tài)機僅與當(dāng)前狀態(tài)有關(guān),而與 輸入信號無關(guān);輸入信號無關(guān); Mealy型有限狀態(tài)機不但與當(dāng)前狀態(tài)有關(guān),而型有限狀態(tài)機不但與當(dāng)前狀態(tài)有關(guān),而 且還與狀態(tài)機的輸入信號有關(guān)。且還與狀態(tài)機的輸入信號有關(guān)。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u采用何種有限狀態(tài)機的判別條件:采用何種有限狀態(tài)機的判別條件: Moore型有限狀態(tài)機可能要比相應(yīng)的型有限狀態(tài)機可能要比相應(yīng)的Mealy型型 有限狀態(tài)機需要更多的狀態(tài)。有限狀態(tài)機需要更多的狀態(tài)。 Moore型有限狀態(tài)機的輸出與當(dāng)前的輸入部分型有限狀態(tài)機的輸出與當(dāng)前的輸入部分 無關(guān),因此當(dāng)

12、前輸入產(chǎn)生的任何效果將會延遲無關(guān),因此當(dāng)前輸入產(chǎn)生的任何效果將會延遲 到下一個時鐘周期??梢姡较乱粋€時鐘周期。可見,Moore型狀態(tài)機的型狀態(tài)機的 最大優(yōu)點就是可以將輸入部分和輸出部分隔離最大優(yōu)點就是可以將輸入部分和輸出部分隔離 開。開。 對于對于Mealy型有限狀態(tài)機來說,由于它的輸出型有限狀態(tài)機來說,由于它的輸出 是輸入信號的函數(shù),因此如果輸入信號發(fā)生改是輸入信號的函數(shù),因此如果輸入信號發(fā)生改 變,那么輸出可以在一個時鐘周期內(nèi)發(fā)生改變。變,那么輸出可以在一個時鐘周期內(nèi)發(fā)生改變。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u單進程狀態(tài)機單進程狀態(tài)機 整個狀態(tài)機的描述在一個進程中完成整個

13、狀態(tài)機的描述在一個進程中完成 u雙進程狀態(tài)機雙進程狀態(tài)機 將組合邏輯部分和時序邏輯部分分開描述,放將組合邏輯部分和時序邏輯部分分開描述,放 在結(jié)構(gòu)體的說明部分在結(jié)構(gòu)體的說明部分 u三進程狀態(tài)機三進程狀態(tài)機 將組合邏輯部分再分為產(chǎn)生次態(tài)的組合邏輯部將組合邏輯部分再分為產(chǎn)生次態(tài)的組合邏輯部 分和產(chǎn)生輸出的組合邏輯部分,與時序邏輯部分和產(chǎn)生輸出的組合邏輯部分,與時序邏輯部 分一起放在結(jié)構(gòu)體的說明部分分一起放在結(jié)構(gòu)體的說明部分 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u符號化狀態(tài)機符號化狀態(tài)機 所謂符號化狀態(tài)機,就是在程序的說明部分使所謂符號化狀態(tài)機,就是在程序的說明部分使 用用TYPE語句定義

14、枚舉類型,其元素用狀態(tài)機語句定義枚舉類型,其元素用狀態(tài)機 的狀態(tài)名來定義。狀態(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)變量的 數(shù)據(jù)類型定義為含有既定狀態(tài)元素的枚舉類型。數(shù)據(jù)類型定義為含有既定狀態(tài)元素的枚舉類型。 在使用多進程時,為便于信息傳遞,要將狀態(tài)在使用多進程時,為便于信息傳遞,要將狀態(tài) 變量定義為信號。變量定義為信號。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u類型定義語句類型定義語句 TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 OF 基本數(shù)基本數(shù) 據(jù)類型據(jù)類型; 或

15、或 TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義; 例:例: TYPE st1 IS ARRAY (0 TO 15) OF STD_LOGIC; TYPE week IS (sun, mon, tue, wed, thu, fri, sat); 符號化狀態(tài)機應(yīng)用符號化狀態(tài)機應(yīng)用 TYPE m_state IS (st0, st1, st2, st3, st4, st5); SIGNAL present_state, next_state : m_state; 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u確定狀態(tài)編碼的狀態(tài)機確定狀態(tài)編碼的狀態(tài)機 使用符號化定義的枚舉類型,枚

16、舉類型文字元使用符號化定義的枚舉類型,枚舉類型文字元 素的編碼通常是自動設(shè)置的,綜合器根據(jù)優(yōu)化素的編碼通常是自動設(shè)置的,綜合器根據(jù)優(yōu)化 情況、優(yōu)化控制的設(shè)置或設(shè)計者的特殊設(shè)定來情況、優(yōu)化控制的設(shè)置或設(shè)計者的特殊設(shè)定來 確定各元素具體編碼的二進制位數(shù)、數(shù)值及元確定各元素具體編碼的二進制位數(shù)、數(shù)值及元 素間編碼的順序。素間編碼的順序。 也可以在程序中指明編碼方式。也可以在程序中指明編碼方式。 常用的編碼方式常用的編碼方式 2進制編碼進制編碼 格雷碼編碼格雷碼編碼 One-hot編碼編碼 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u2進制編碼進制編碼 狀態(tài)機的每一個狀態(tài)用二進制位來編碼狀態(tài)機的每

17、一個狀態(tài)用二進制位來編碼 例:實現(xiàn)例:實現(xiàn)4狀態(tài)的狀態(tài)機,其其二進制編碼可狀態(tài)的狀態(tài)機,其其二進制編碼可 為為 狀態(tài)狀態(tài)1=“00”狀態(tài)狀態(tài)2=“01”狀態(tài)狀態(tài)3=“10” 狀態(tài)狀態(tài)4=“11” 需要的寄存器數(shù)量最少,有需要的寄存器數(shù)量最少,有n個寄存器就可以個寄存器就可以 對對2n個狀態(tài)進行編碼。個狀態(tài)進行編碼。 需要更多的外部輔助邏輯,并且速度較慢。需要更多的外部輔助邏輯,并且速度較慢。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u格雷碼狀態(tài)機編碼格雷碼狀態(tài)機編碼 格雷碼編碼每次僅一個狀態(tài)位的值發(fā)生變化格雷碼編碼每次僅一個狀態(tài)位的值發(fā)生變化 例:實現(xiàn)例:實現(xiàn)4狀態(tài)的狀態(tài)機,其格雷碼編碼

18、可為狀態(tài)的狀態(tài)機,其格雷碼編碼可為 狀態(tài)狀態(tài)1=“00”狀態(tài)狀態(tài)2=“01”狀態(tài)狀態(tài)3=“11”狀狀 態(tài)態(tài)4=“10” 特點:觸發(fā)器使用較少,速度較慢,不會產(chǎn)生特點:觸發(fā)器使用較少,速度較慢,不會產(chǎn)生 兩位同時翻轉(zhuǎn)的情況。當(dāng)狀態(tài)位的輸出被異步兩位同時翻轉(zhuǎn)的情況。當(dāng)狀態(tài)位的輸出被異步 應(yīng)用時,格雷碼編碼是有益的。應(yīng)用時,格雷碼編碼是有益的。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 uOne-hot狀態(tài)機編碼狀態(tài)機編碼 One hot的編碼方案對每一個狀態(tài)采用一個觸的編碼方案對每一個狀態(tài)采用一個觸 發(fā)器,即發(fā)器,即4個狀態(tài)的狀態(tài)機需個狀態(tài)的狀態(tài)機需4個觸發(fā)器。同一個觸發(fā)器。同一 時間僅時間僅

19、1個狀態(tài)位處于有效電平(如邏輯個狀態(tài)位處于有效電平(如邏輯“1”) 例:實現(xiàn)例:實現(xiàn)4狀態(tài)的狀態(tài)機,其狀態(tài)的狀態(tài)機,其one hot編碼可為編碼可為 狀態(tài)狀態(tài)1=“0001”狀態(tài)狀態(tài)2=“0010”狀態(tài)狀態(tài) 3=“0100”狀態(tài)狀態(tài)4=“1000” 特點:觸發(fā)器使用較多,但邏輯簡單,速度快。特點:觸發(fā)器使用較多,但邏輯簡單,速度快。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u關(guān)于關(guān)于one-hot、gray-code、binary編碼使編碼使 用說明用說明 Binary、gray-code編碼使用較少的觸發(fā)器,編碼使用較少的觸發(fā)器, 較多的組合邏輯,而較多的組合邏輯,而one-hot編碼

20、反之。由于編碼反之。由于 CPLD更多的提供組合邏輯,而更多的提供組合邏輯,而FPGA更多的更多的 提供觸發(fā)器資源,所以提供觸發(fā)器資源,所以CPLD多使用多使用gray- code,而,而FPGA多使用多使用one-hot編碼。編碼。 對于小型設(shè)計使用對于小型設(shè)計使用gray-code和和binary編碼更編碼更 有效,而大型狀態(tài)機使用有效,而大型狀態(tài)機使用one-hot編碼更有效。編碼更有效。 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u程序中指明編碼方式程序中指明編碼方式 ARCHITECTURE BEHAV OF BINARY IS TYPE STATE_TYPE IS(S1, S2

21、, S3, S4, S5, S6, S7); ATTRIBUTE ENUM_ENCODING: STRING; ATTRIBUTE ENUM_ENCODING OF STATE_TYPE: TYPE IS 001 010 011 100 101 110 111; ARCHITECTURE BEHAV OF ONE_HOT IS TYPE STATE_TYPE IS(S1, S2, S3, S4, S5, S6, S7); ATTRIBUTE ENUM_ENCODING: STRING; ATTRIBUTE ENUM_ENCODING OF STATE_TYPE: TYPE IS 0000000

22、1 00000010 00000100 00001000 00010000 00100000 01000000 10000000; Binary編碼 One-hot編碼 1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念 u程序中指明編碼方式程序中指明編碼方式 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 u設(shè)計狀態(tài)機的步驟:設(shè)計狀態(tài)機的步驟: 分析設(shè)計要求,列出狀態(tài)機的全部可能狀態(tài),分析設(shè)計要求,列出狀態(tài)機的全部可能狀態(tài), 并對每一個狀態(tài)進行編碼。并對每一個狀態(tài)進行編碼。 根據(jù)狀態(tài)轉(zhuǎn)移關(guān)系和輸出函數(shù)畫出狀態(tài)轉(zhuǎn)移圖。根據(jù)狀態(tài)轉(zhuǎn)移關(guān)系和輸出函數(shù)畫出狀態(tài)轉(zhuǎn)移圖。 由狀態(tài)轉(zhuǎn)移圖,用由狀態(tài)轉(zhuǎn)移圖,用VHDL

23、VHDL語句對狀態(tài)機描述語句對狀態(tài)機描述。 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 u狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移圖 狀態(tài)轉(zhuǎn)移圖是狀態(tài)機描述的最自然的方式,下狀態(tài)轉(zhuǎn)移圖是狀態(tài)機描述的最自然的方式,下 圖是使用圖是使用HDL Designer設(shè)計的一個簡單的狀設(shè)計的一個簡單的狀 態(tài)轉(zhuǎn)移圖。態(tài)轉(zhuǎn)移圖。 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 u狀態(tài)轉(zhuǎn)移列表狀態(tài)轉(zhuǎn)移列表 狀態(tài)轉(zhuǎn)移列表使用列表的方式描述狀態(tài)機,是狀態(tài)轉(zhuǎn)移列表使用列表的方式描述狀態(tài)機,是 數(shù)字邏輯電路常用的設(shè)計方法之一,經(jīng)常被用數(shù)字邏輯電路常用的設(shè)計方法之一,經(jīng)常被用 于對狀態(tài)化簡,對于可編程邏輯設(shè)計,由于可于對狀態(tài)化簡,對于可編程邏

24、輯設(shè)計,由于可 用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設(shè)用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設(shè) 計的穩(wěn)定性、安全性等因素,所以并不經(jīng)常使計的穩(wěn)定性、安全性等因素,所以并不經(jīng)常使 用狀態(tài)轉(zhuǎn)移列表優(yōu)化狀態(tài)。用狀態(tài)轉(zhuǎn)移列表優(yōu)化狀態(tài)。 狀態(tài) 輸入a=1b=1default S0S1S2 S1S2S0 S2S0 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 uHDL語言描述狀態(tài)機語言描述狀態(tài)機 使用使用HDL語言描述狀態(tài)機有一定的靈活性,但語言描述狀態(tài)機有一定的靈活性,但 是決不是天馬行空,而是有章可循的。通過一是決不是天馬行空,而是有章可循的。通過一 些規(guī)范的描述方法,可以使些規(guī)范的描述方法,可以使

25、HDL語言描述的狀語言描述的狀 態(tài)機更安全、穩(wěn)定、高效、易于維護。下面是態(tài)機更安全、穩(wěn)定、高效、易于維護。下面是 使用使用“HDL Designer”軟件,通過以上的狀軟件,通過以上的狀 態(tài)轉(zhuǎn)移圖自動生成的態(tài)轉(zhuǎn)移圖自動生成的VHDL描述的狀態(tài)機代碼。描述的狀態(tài)機代碼。 自動生成的代碼的形式,是嚴(yán)格按照三進程狀自動生成的代碼的形式,是嚴(yán)格按照三進程狀 態(tài)機描述風(fēng)格實現(xiàn)的。態(tài)機描述風(fēng)格實現(xiàn)的。 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式 u1. 說明部分說明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state

26、, next_state: FSM_ST; u2.主控時序進程主控時序進程 負(fù)責(zé)狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下的狀態(tài)轉(zhuǎn)換,隨負(fù)責(zé)狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下的狀態(tài)轉(zhuǎn)換,隨 外部時鐘信號,以同步時序方式工作。外部時鐘信號,以同步時序方式工作。 u3.主控組合進程主控組合進程 通過通過pr_state的改變,進入主控組合進程,根據(jù)外部的改變,進入主控組合進程,根據(jù)外部 輸入信號確定輸出和下一狀態(tài)的走向(輸入信號確定輸出和下一狀態(tài)的走向(nx_state) u4. 輔助進程輔助進程 ENTITY smtest IS PORT( a : IN std_logic; b : IN std_logic; clk :

27、 IN std_logic; rst : IN std_logic; x : OUT std_logic; y : OUT std_logic ); - Declarations END smtest ; LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ARCHITECTURE fsm OF smtest IS TYPE STATE_TYPE IS ( s0, s1, s2 ); - Declare current and next state signals SIGNAL current_sta

28、te : STATE_TYPE; SIGNAL next_state : STATE_TYPE; BEGIN - clocked_proc : PROCESS ( clk, rst ) - BEGIN IF (rst = 0) THEN current_state = s0; ELSIF (clkEVENT AND clk = 1) THEN current_state IF (b=1) THEN next_state = s2; ELSIF (a=1) THEN next_state = s1; ELSE next_state IF (a=1) THEN next_state = s2; E

29、LSIF (b=1) THEN next_state = s0; ELSE next_state next_state next_state x y NULL; END CASE; END PROCESS output_proc; END fsm; 狀 態(tài) 類 型 定 義 時 序 邏 輯 進 程 輸 入 組 合 邏 輯 進 程 輸 出 組 合 邏 輯 進 程 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 uRTL級級FSM描述評判標(biāo)準(zhǔn)描述評判標(biāo)準(zhǔn) 安全,穩(wěn)定性高安全,穩(wěn)定性高 所謂所謂FSM安全是指安全是指FSM不會進入死循環(huán),特別是不會進入非不會進入死循環(huán),特別是不會進入非 預(yù)知狀態(tài),而且由于某

30、些擾動進入非設(shè)計狀態(tài),也能很快的恢預(yù)知狀態(tài),而且由于某些擾動進入非設(shè)計狀態(tài),也能很快的恢 復(fù)到正常的狀態(tài)循環(huán)中來。這里面有兩層含義,第一:要求該復(fù)到正常的狀態(tài)循環(huán)中來。這里面有兩層含義,第一:要求該 FSM的綜合實現(xiàn)結(jié)果無毛刺等異常擾動;第二:要求狀態(tài)機的綜合實現(xiàn)結(jié)果無毛刺等異常擾動;第二:要求狀態(tài)機 要完備,即使收到異常擾動進入非設(shè)計狀態(tài),也能很快恢復(fù)到要完備,即使收到異常擾動進入非設(shè)計狀態(tài),也能很快恢復(fù)到 正常狀態(tài)。正常狀態(tài)。 速度快,滿足設(shè)計的頻率要求速度快,滿足設(shè)計的頻率要求 任何任何RLT設(shè)計都應(yīng)該滿足設(shè)計的頻率要求。設(shè)計都應(yīng)該滿足設(shè)計的頻率要求。 面積小,滿足設(shè)計的面積要求面積小,

31、滿足設(shè)計的面積要求 任何任何RTL設(shè)計都應(yīng)該滿足設(shè)計的面積要求。設(shè)計都應(yīng)該滿足設(shè)計的面積要求。 FSM設(shè)計要清晰易懂、易維護設(shè)計要清晰易懂、易維護 不規(guī)范的不規(guī)范的FSM寫法上很難讓其他人解讀,甚至過一段時間后寫法上很難讓其他人解讀,甚至過一段時間后 設(shè)計者也發(fā)現(xiàn)很難維護。設(shè)計者也發(fā)現(xiàn)很難維護。 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u時序邏輯設(shè)計時序邏輯設(shè)計 由右圖可知,由右圖可知,clock和和reset 作為時序邏輯部分的輸入,作為時序邏輯部分的輸入, Nx_state也使輸入之一。也使輸入之一。 Pr_state作為其輸出??梢宰鳛槠漭敵???梢?描述如下描述如下 PROCESS (

32、reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock = 1) THEN pr_state IF (input=.) THEN nx_state IF (input=.) THEN nx_state IF (input=.) THEN nx_state = state3; ELSIF . END IF; . END CASE; END PROCESS; PROCESS (input, pr_state) BEGIN IF (input=. AND pr_state=. ) T

33、HEN output = ; ELSIF . END IF; END PROCESS; ROCESS (pr_state) BEGIN IF (pr_state=. ) THEN output = ; ELSIF . END IF; END PROCESS; 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u通過以上分析,我們在這里給出使用通過以上分析,我們在這里給出使用VHDL 語言描述狀態(tài)機的兩個一般性的語言描述狀態(tài)機的兩個一般性的“套路套路” 。 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u模板一模板一 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; -

34、ENTITY IS PORT (input: IN; reset, clock: IN STD_LOGIC; output: OUT); END ; - ARCHITECTURE OFIS TYPE state IS (state0, state1, state2, state3, .); SIGNAL pr_state, nx_state: state; BEGIN -Lower section- PROCESS (reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock =

35、1) THEN pr_state IF (input=.) THEN outpur = ; nx_state IF (input=.) THEN output = ; nx_state IF (input=.) THEN outpur = ; nx_state = state3; ELSI . END IF; . END CASE; END PROCESS; END ; 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u模板二模板二 LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY IS PORT (input: IN ; reset, cloc

36、k: IN STD_LOGIC; output: OUT ); END ; - ARCHITECTURE OFIS TYPE states IS (state0, state1, state2, state3, .); SIGNAL pr_state, nx_state: states; SIGNAL temp: ; BEGIN -Lower section:- PROCESS (reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock = 1) THEN output = te

37、mp; pr_state temp = ; IF (condition) THEN nx_state temp = ; IF (condition) THEN nx_state temp = ; IF (condition) THEN nx_state = state3; . END IF; . END CASE; END PROCESS; END ; 僅一個 寄存器 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u舉例(模板一)舉例(模板一) - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY simple_fsm IS PORT (a,

38、b, d, clk, rst: IN BIT; x: OUT BIT); END simple_fsm; - ARCHITECTURE simple_fsm OF simple_fsm IS TYPE state IS (stateA, stateB); SIGNAL pr_state, nx_state: state; BEGIN -Lower section: - PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = stateA; ELSIF (clkEVENT AND clk = 1) THEN pr_state x = a; IF

39、 (d = 1) THEN nx_state = stateB; ELSE nx_state x = b; IF (d = 1) THEN nx_state = stateA; ELSE nx_state = stateB; END IF; END CASE; END PROCESS; END simple_fsm; 使用synplify綜合后的RTL圖 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u舉例(模板二)舉例(模板二) - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY simple_fsm IS PORT (a, b, d, c

40、lk, rst: IN BIT; x: OUT BIT); END simple_fsm; - ARCHITECTURE simple_fsm OF simple_fsm IS TYPE state IS (stateA, stateB); SIGNAL pr_state, nx_state: state; SIGNAL temp: BIT := 0; BEGIN -Lower section: - PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = stateA; ELSIF (clkEVENT AND clk = 1) THEN x

41、= temp; pr_state temp = a; IF (d = 1) THEN nx_state = stateB; ELSE nx_state temp = b; IF (d = 1) THEN nx_state = stateA; ELSE nx_state = stateB; END IF; END CASE; END PROCESS; END simple_fsm; 使用synplify綜合后的RTL圖 多出一 個輸出 寄存器 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u兩種方式的仿真結(jié)果對比兩種方式的仿真結(jié)果對比 模板一方式實現(xiàn)的Mealy型狀態(tài)機, 其輸出結(jié)果與時鐘不同步。

42、模板二方式實現(xiàn)的同樣的狀態(tài)機, 其輸出結(jié)果與時鐘是同步的。 3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機 u結(jié)論結(jié)論 從形式上看:模板一只存儲了從形式上看:模板一只存儲了pr_state;而模;而模 板二同時存儲了板二同時存儲了output。 對于對于Mealy型狀態(tài)機,為了時序同步,必須采型狀態(tài)機,為了時序同步,必須采 用模板二的方式。用模板二的方式。 而而moore型狀態(tài)機,則不需要使用模板二的描型狀態(tài)機,則不需要使用模板二的描 述方式。述方式。 模板一模板二 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 u上例是一個上例是一個Mealy型狀態(tài)機。下面我們來型狀態(tài)機。下面我們來 設(shè)計一個設(shè)計一個Mo

43、ore型狀態(tài)機。型狀態(tài)機。 例:設(shè)計一個串行數(shù)據(jù)流檢測器。要求:輸入例:設(shè)計一個串行數(shù)據(jù)流檢測器。要求:輸入 連續(xù)的二進制數(shù),當(dāng)檢測到連續(xù)連續(xù)的二進制數(shù),當(dāng)檢測到連續(xù)“1”的個數(shù)的個數(shù) 大于大于2個的時候,輸出個的時候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出 “0”。 分析:確定所需的狀態(tài)數(shù),取決于數(shù)據(jù)流中出分析:確定所需的狀態(tài)數(shù),取決于數(shù)據(jù)流中出 現(xiàn)連續(xù)現(xiàn)連續(xù)“1”的個數(shù),應(yīng)該為的個數(shù),應(yīng)該為4個狀態(tài)。個狀態(tài)。 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 畫出狀態(tài)轉(zhuǎn)移圖畫出狀態(tài)轉(zhuǎn)移圖 zero (q=0) one (q=0) two (q=0) three (q=1) rst d=0 d=1 d

44、=0 d=0 d=0 d=1 d=1 d=1 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 根據(jù)狀態(tài)轉(zhuǎn)移圖,寫出根據(jù)狀態(tài)轉(zhuǎn)移圖,寫出VHDL代碼代碼 - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY string_detector IS PORT (d, clk, rst: IN BIT; q: OUT BIT); END string_detector; - ARCHITECTURE my_arch OF string_detector IS TYPE state IS (zero, one ,two, three); SIGNAL pr_

45、state, nx_state: state; BEGIN -Lower section;- PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = zero; ELSIF (clkEVENT AND clk = 1) THEN pr_state q = 0; 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 IF (d = 1) THEN nx_state = one; ELSE nx_state q = 0; IF (d = 1) THEN nx_state = two; ELSE nx_state q = 0; IF (d = 1) THEN n

46、x_state = three; ELSE nx_state q = 1; IF (d = 1) THEN nx_state = three; ELSE nx_state = zero; END IF; END CASE; END PROCESS; END my_arch; 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 設(shè)計后使用設(shè)計后使用synplify生成的狀態(tài)轉(zhuǎn)移圖如下生成的狀態(tài)轉(zhuǎn)移圖如下 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機, 但是輸出依然可以保持與時鐘上升沿同步。 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 功能仿真后的結(jié)果功能仿真后的結(jié)果 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機, 但是輸出依然

47、可以保持與時鐘上升沿同步。 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機, 但是輸出依然可以保持與時鐘上升沿同步。 可見,對于可見,對于Moore狀態(tài)機,不需要對輸出進行狀態(tài)機,不需要對輸出進行 同步。同步。 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 u使用使用synplify綜合之后,可以看出默認(rèn)的綜合之后,可以看出默認(rèn)的 編碼方式是編碼方式是one-hot編碼。編碼。 綜合后是one-hot編碼方式 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 u如果將在原來的程序的基礎(chǔ)上通過如果將在原來的程序的基礎(chǔ)上通過 attribute語句指定編碼方式,即將結(jié)構(gòu)體語句指定編碼方式,即將結(jié)構(gòu)體 的聲明部分添加如下代碼

48、,可將編碼方式的聲明部分添加如下代碼,可將編碼方式 改為二進制編碼:改為二進制編碼: ATTRIBUTE enum_encoding: string; ATTRIBUTE enum_encoding OF state : TYPE IS 00 01 10 11; 綜合后是binary碼編碼方式 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例 u以上兩種情況是在默認(rèn)綜合的情況下生成以上兩種情況是在默認(rèn)綜合的情況下生成 的,即沒有將的,即沒有將“FSM Explorer”的選項勾的選項勾 選。選。 u如果將如果將“FSM Explorer”選項勾選,那么選項勾選,那么 即使是在程序中指定了編碼方式,其綜合

49、即使是在程序中指定了編碼方式,其綜合 后的狀態(tài)編碼也是后的狀態(tài)編碼也是one-hot編碼。編碼。 u因此,在狀態(tài)機設(shè)計的時候,大家要注意因此,在狀態(tài)機設(shè)計的時候,大家要注意 軟件的使用細節(jié),應(yīng)當(dāng)有意識的通過軟件軟件的使用細節(jié),應(yīng)當(dāng)有意識的通過軟件 進行性能優(yōu)化。進行性能優(yōu)化。 沒有勾選“FSM Explorer” 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u單進程描述單進程描述 它就是將狀態(tài)機的三個邏輯單元(狀態(tài)寄存器、它就是將狀態(tài)機的三個邏輯單元(狀態(tài)寄存器、 下狀態(tài)產(chǎn)生邏輯、輸出邏輯)合并起來,采用下狀態(tài)產(chǎn)生邏輯、輸出邏輯)合并起來,采用 一個進程描述。一個進程描述。 適用

50、于簡單的設(shè)計;適用于簡單的設(shè)計; 對于復(fù)雜的狀態(tài)機,可讀性差,易出錯,不利對于復(fù)雜的狀態(tài)機,可讀性差,易出錯,不利 于于EDA軟件優(yōu)化。軟件優(yōu)化。 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 下一狀態(tài) 組合邏輯 寄存輸 出邏輯 當(dāng)前狀態(tài) 時序邏輯 u單進程描述單進程描述 u單進程描述單進程描述 下一狀態(tài) 組合邏輯 寄存輸 出邏輯 當(dāng)前狀態(tài) 時序邏輯 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u雙進程描述雙進程描述 將輸出進程和狀態(tài)轉(zhuǎn)移進程合并起來,采用一將輸出進程和狀態(tài)轉(zhuǎn)移進程合并起來,采用一 個組合邏輯來描述。個組合邏輯來描述。 通常情況下,綜合工具可以較好地識

51、別這兩部通常情況下,綜合工具可以較好地識別這兩部 邏輯并進行優(yōu)化,但建議如果不是輸出邏輯非邏輯并進行優(yōu)化,但建議如果不是輸出邏輯非 常簡單,還是采用兩個不同的進程來描述,這常簡單,還是采用兩個不同的進程來描述,這 樣綜合工具可以明確下狀態(tài)轉(zhuǎn)移邏輯,優(yōu)化效樣綜合工具可以明確下狀態(tài)轉(zhuǎn)移邏輯,優(yōu)化效 果較好。果較好。 另一種雙進程描述另一種雙進程描述將下狀態(tài)轉(zhuǎn)移邏輯和當(dāng)將下狀態(tài)轉(zhuǎn)移邏輯和當(dāng) 前狀態(tài)寄存器描述結(jié)合,省略中間變量。前狀態(tài)寄存器描述結(jié)合,省略中間變量。 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u雙進程描述雙進程描述 第二個進程(純組合邏輯), 描述狀態(tài)轉(zhuǎn)移條件的判斷。 第

52、一個進程(同步時序),格式 化地描述次態(tài)到現(xiàn)態(tài)的轉(zhuǎn)移。 一般情況是組合邏輯輸出,如果時 序允許,盡量插入寄存器輸出。 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u三進程描述三進程描述 一般可以采用三個進程來描述狀態(tài)機:一般可以采用三個進程來描述狀態(tài)機: 描述狀態(tài)寄存器的時序進程描述狀態(tài)寄存器的時序進程 描述下狀態(tài)產(chǎn)生邏輯的組合進程描述下狀態(tài)產(chǎn)生邏輯的組合進程 定義輸出的組合邏輯進程定義輸出的組合邏輯進程 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u三進程描述三進程描述 第一個進程(同步時序) 格式化描述次態(tài)寄存器遷 移到現(xiàn)態(tài)寄存器 第二個進程(純組合邏輯), 描

53、述狀態(tài)轉(zhuǎn)移條件判斷 第三個進程(同步時序),格式 化描述次態(tài)的寄存器輸出。 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u舉例:舉例: 分別使用單進程、雙進程、三進程描述方式如分別使用單進程、雙進程、三進程描述方式如 下狀態(tài)轉(zhuǎn)移圖所示的狀態(tài)機:下狀態(tài)轉(zhuǎn)移圖所示的狀態(tài)機: 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u單進程描述的單進程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine1 IS PORT ( clk, reset : IN STD_LOGIC; state_in

54、puts : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine2; ARCHITECTURE behv OF s_machine1 IS TYPE FSM_ST IS (s0, s1, s2, s3); VARIABLE state: FSM_ST; BEGIN PROCESS (reset, clk, state, state_inputs) BEGIN IF reset = 1 THEN state comb_outputs = 5; IF state_inputs

55、 = 00 THEN state = s0; ELSE state comb_outputs = 8; IF state_inputs = 00 THEN state = s1; ELSE state comb_outputs = 12; IF state_inputs = 11 THEN state = s3; ELSE state comb_outputs = 14; IF state_inputs = 11 THEN state = s3; ELSE state = s0; END IF; END CASE; END IF; END PROCESS; END behv; -(完)(完)

56、5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u單進程描述單進程描述RTL圖圖 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u雙進程描述的雙進程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk, reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; AR

57、CHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state : FSM_ST; BEGIN REG: PROCESS (reset, clk) BEGIN IF reset = 1 THEN current_state = s0; ELSIF clk = 1 AND clkEVENT THEN current_state comb_outputs = 5; IF state_inputs = 00 THEN next_state = s0; ELSE 5 三種

58、進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 next_state comb_outputs = 8; IF state_inputs = 00 THEN next_state = s1; ELSE next_state comb_outputs = 12; IF state_inputs = 11 THEN next_state = s3; ELSE next_state comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END CASE; END PRO

59、CESS; END behv; 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u雙進程描述產(chǎn)生的雙進程描述產(chǎn)生的RTL圖圖 5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 u三進程描述的三進程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine2 IS PORT ( clk, reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO

60、15 ); END s_machine2; ARCHITECTURE behv OF s_machine2 IS TYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state: FSM_ST; BEGIN REG: PROCESS (reset, clk) BEGIN IF reset = 1 THEN current_state = s0; ELSIF clk = 1 AND clkEVENT THEN current_state IF state_inputs = 00 THEN next_state = s0; ELS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論