




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VHDL有限狀態(tài)機設計有限狀態(tài)機設計內容內容u有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式uVHDL語言描述狀態(tài)機語言描述狀態(tài)機u狀態(tài)機設計舉例狀態(tài)機設計舉例u三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u毛刺信號的數字排除方式毛刺信號的數字排除方式1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u狀態(tài)機是一種思想方法狀態(tài)機是一種思想方法狀態(tài)機的本質就是對具有邏輯順序或時序規(guī)律狀態(tài)機的本質就是對具有邏輯順序或時序規(guī)律事件的一種描述方法。具有邏輯順序和時序規(guī)事件的一種描述方法。具有邏輯順序和時序規(guī)律的事件都適合用狀態(tài)機描述。律的事件都適合用狀態(tài)機描述。1
2、 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念某學生在學校的學習生活可以簡單地概括為宿某學生在學校的學習生活可以簡單地概括為宿舍、教室、食堂之間的周而復始。舍、教室、食堂之間的周而復始。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念右圖也是一張標準右圖也是一張標準的狀態(tài)轉移圖,通過的狀態(tài)轉移圖,通過狀態(tài)機的方式我們再狀態(tài)機的方式我們再次清晰地描述另一個次清晰地描述另一個學生的在校生活方式。學生的在校生活方式。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u例:設計一個以秒為單位的例:設計一個以秒為單位的4位流水燈。要求:位流水燈。要求:每秒只能點亮每秒只能點亮1個個LED,點亮方式為高電平有效。,點亮
3、方式為高電平有效。u例:設計一個串行數據流檢測器。要求:輸入連例:設計一個串行數據流檢測器。要求:輸入連續(xù)的二進制數,當檢測到連續(xù)續(xù)的二進制數,當檢測到連續(xù)“1”的個數大于的個數大于2個的時候,輸出個的時候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出“0”。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u有限狀態(tài)機的定義有限狀態(tài)機的定義所謂有限狀態(tài)機是指那些輸出取決于過去輸入所謂有限狀態(tài)機是指那些輸出取決于過去輸入部分和當前輸入部分的時序邏輯電路。部分和當前輸入部分的時序邏輯電路。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u狀態(tài)機的本質狀態(tài)機的本質對具有對具有“邏輯順序邏輯順序”和和“時序規(guī)律時序
4、規(guī)律”事件的一事件的一種描述方法。種描述方法。u應用思路應用思路從狀態(tài)變量入手,分析每個狀態(tài)的輸入,狀態(tài)從狀態(tài)變量入手,分析每個狀態(tài)的輸入,狀態(tài)轉移和輸出,從而完成電路的功能。轉移和輸出,從而完成電路的功能。首先明確電路的輸出關系,這些輸出相當于狀首先明確電路的輸出關系,這些輸出相當于狀態(tài)的輸出,回溯規(guī)劃每個狀態(tài)和狀態(tài)轉移條件態(tài)的輸出,回溯規(guī)劃每個狀態(tài)和狀態(tài)轉移條件與狀態(tài)輸入。與狀態(tài)輸入。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u狀態(tài)機的基本要素狀態(tài)機的基本要素狀態(tài):也叫狀態(tài)變量。在邏輯設計中,使用狀狀態(tài):也叫狀態(tài)變量。在邏輯設計中,使用狀態(tài)劃分邏輯順序和時序規(guī)律。態(tài)劃分邏輯順序和時序規(guī)律
5、。輸出:輸出指在某一個狀態(tài)時特定發(fā)生的事件。輸出:輸出指在某一個狀態(tài)時特定發(fā)生的事件。輸入:指狀態(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)機的基本概念u有限狀態(tài)機的組成有限狀態(tài)機的組成組合邏輯組合邏輯組合邏輯又可分為次態(tài)邏輯和輸出邏輯兩個部分。其組合邏輯又可分為次態(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)機的內部狀態(tài)。寄存器邏輯的功能:用來存儲有限狀態(tài)機的內部狀態(tài)。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u狀態(tài)機實現三個功能狀態(tài)機實現三個功能狀態(tài)譯碼:根據輸入以及系統(tǒng)當前的狀態(tài),狀態(tài)譯碼:根據輸入以及系統(tǒng)當前的狀態(tài), 由狀態(tài)方程來決定下一狀態(tài)的狀態(tài)碼。由狀態(tài)方程來決定下一狀態(tài)的狀態(tài)碼。狀態(tài)輸
7、出:根據當前的狀態(tài)碼決定電路當前輸出。狀態(tài)輸出:根據當前的狀態(tài)碼決定電路當前輸出。狀態(tài)轉換:將下一狀態(tài)轉變?yōu)楫斍盃顟B(tài)。狀態(tài)轉換:將下一狀態(tài)轉變?yōu)楫斍盃顟B(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.主控時序進程主控時序進程 負責狀態(tài)機運轉和在時鐘驅動下的狀態(tài)轉換,隨負責狀態(tài)機運轉和在時鐘驅動下的狀態(tài)轉換,隨外部時鐘信號,以同步時序方式工作。外部時鐘信號,以同步時序方式工作。u3.主控組合進
8、程主控組合進程 通過通過pr_state的改變,進入主控組合進程,根據外部的改變,進入主控組合進程,根據外部輸入信號確定輸出和下一狀態(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)機 從結構上分從結構上分單進程狀態(tài)機單進程狀態(tài)機兩進程狀態(tài)機兩進程狀態(tài)機三進程狀態(tài)機三進程狀態(tài)機 從表達方式上分從表達方式上分符號化狀態(tài)機符號化狀態(tài)機確定狀態(tài)編碼的狀態(tài)機確定狀態(tài)編碼的狀態(tài)機 從編碼方式上分從編碼方式
9、上分順序編碼狀態(tài)機順序編碼狀態(tài)機獨熱碼狀態(tài)機獨熱碼狀態(tài)機格雷碼狀態(tài)機格雷碼狀態(tài)機1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念uMoore型有限狀態(tài)機型有限狀態(tài)機是指那些輸出信號僅與當前狀態(tài)有關的有限狀是指那些輸出信號僅與當前狀態(tài)有關的有限狀態(tài)機,即可以把態(tài)機,即可以把Moore型有限狀態(tài)機的輸出看型有限狀態(tài)機的輸出看成是當前狀態(tài)的函數。成是當前狀態(tài)的函數。Moore型有限狀態(tài)機框圖:型有限狀態(tài)機框圖:1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念uMealy型有限狀態(tài)機型有限狀態(tài)機是指那些輸出信號不僅與當前狀態(tài)有關,而且是指那些輸出信號不僅與當前狀態(tài)有關,而且還與所有的輸入信號有關的有限狀態(tài)機,
10、即可還與所有的輸入信號有關的有限狀態(tài)機,即可以把以把Mealy有限狀態(tài)機的輸出看作當前狀態(tài)和有限狀態(tài)機的輸出看作當前狀態(tài)和所有輸入信號的函數。可見,所有輸入信號的函數??梢姡琈ealy有限狀態(tài)有限狀態(tài)機要比機要比Moore有限狀態(tài)機復雜一些。有限狀態(tài)機復雜一些。Mealy有限狀態(tài)機框圖:有限狀態(tài)機框圖:1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念uMoore型和型和Mealy型有限狀態(tài)機的區(qū)別:型有限狀態(tài)機的區(qū)別:Moore型有限狀態(tài)機僅與當前狀態(tài)有關,而與型有限狀態(tài)機僅與當前狀態(tài)有關,而與輸入信號無關;輸入信號無關;Mealy型有限狀態(tài)機不但與當前狀態(tài)有關,而型有限狀態(tài)機不但與當前狀態(tài)有關,
11、而且還與狀態(tài)機的輸入信號有關。且還與狀態(tài)機的輸入信號有關。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u采用何種有限狀態(tài)機的判別條件:采用何種有限狀態(tài)機的判別條件:Moore型有限狀態(tài)機可能要比相應的型有限狀態(tài)機可能要比相應的Mealy型型有限狀態(tài)機需要更多的狀態(tài)。有限狀態(tài)機需要更多的狀態(tài)。Moore型有限狀態(tài)機的輸出與當前的輸入部分型有限狀態(tài)機的輸出與當前的輸入部分無關,因此當前輸入產生的任何效果將會延遲無關,因此當前輸入產生的任何效果將會延遲到下一個時鐘周期??梢?,到下一個時鐘周期??梢姡琈oore型狀態(tài)機的型狀態(tài)機的最大優(yōu)點就是可以將輸入部分和輸出部分隔離最大優(yōu)點就是可以將輸入部分和輸出
12、部分隔離開。開。對于對于Mealy型有限狀態(tài)機來說,由于它的輸出型有限狀態(tài)機來說,由于它的輸出是輸入信號的函數,因此如果輸入信號發(fā)生改是輸入信號的函數,因此如果輸入信號發(fā)生改變,那么輸出可以在一個時鐘周期內發(fā)生改變。變,那么輸出可以在一個時鐘周期內發(fā)生改變。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u單進程狀態(tài)機單進程狀態(tài)機整個狀態(tài)機的描述在一個進程中完成整個狀態(tài)機的描述在一個進程中完成u雙進程狀態(tài)機雙進程狀態(tài)機將組合邏輯部分和時序邏輯部分分開描述,放將組合邏輯部分和時序邏輯部分分開描述,放在結構體的說明部分在結構體的說明部分u三進程狀態(tài)機三進程狀態(tài)機將組合邏輯部分再分為產生次態(tài)的組合邏輯部
13、將組合邏輯部分再分為產生次態(tài)的組合邏輯部分和產生輸出的組合邏輯部分,與時序邏輯部分和產生輸出的組合邏輯部分,與時序邏輯部分一起放在結構體的說明部分分一起放在結構體的說明部分1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u符號化狀態(tài)機符號化狀態(tài)機所謂符號化狀態(tài)機,就是在程序的說明部分使所謂符號化狀態(tài)機,就是在程序的說明部分使用用TYPE語句定義枚舉類型,其元素用狀態(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)元素的枚舉類型。
14、數據類型定義為含有既定狀態(tài)元素的枚舉類型。在使用多進程時,為便于信息傳遞,要將狀態(tài)在使用多進程時,為便于信息傳遞,要將狀態(tài)變量定義為信號。變量定義為信號。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u類型定義語句類型定義語句TYPE 數據類型名數據類型名 IS 數據類型定義數據類型定義 OF 基本數基本數據類型據類型; 或或 TYPE 數據類型名數據類型名 IS 數據類型定義數據類型定義;例:例:TYPE st1 IS ARRAY (0 TO 15) OF STD_LOGIC;TYPE week IS (sun, mon, tue, wed, thu, fri, sat);符號化狀態(tài)機應用符號
15、化狀態(tài)機應用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)機使用符號化定義的枚舉類型,枚舉類型文字元使用符號化定義的枚舉類型,枚舉類型文字元素的編碼通常是自動設置的,綜合器根據優(yōu)化素的編碼通常是自動設置的,綜合器根據優(yōu)化情況、優(yōu)化控制的設置或設計者的特殊設定來情況、優(yōu)化控制的設置或設計者的特殊設定來確定各元素具體編碼的二進制位數、數值及元確定各元素具體編碼的二進制位數、數值及元素
16、間編碼的順序。素間編碼的順序。也可以在程序中指明編碼方式。也可以在程序中指明編碼方式。常用的編碼方式常用的編碼方式2進制編碼進制編碼格雷碼編碼格雷碼編碼One-hot編碼編碼1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u2進制編碼進制編碼狀態(tài)機的每一個狀態(tài)用二進制位來編碼狀態(tài)機的每一個狀態(tài)用二進制位來編碼例:實現例:實現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”需要的寄存器數量最少,有需要的寄存器數量最少,有n個寄存器就可以個寄存器就可以對對2n個狀態(tài)進行編碼。個狀態(tài)進行編碼。需要更多的外
17、部輔助邏輯,并且速度較慢。需要更多的外部輔助邏輯,并且速度較慢。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u格雷碼狀態(tài)機編碼格雷碼狀態(tài)機編碼格雷碼編碼每次僅一個狀態(tài)位的值發(fā)生變化格雷碼編碼每次僅一個狀態(tài)位的值發(fā)生變化例:實現例:實現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=“11”狀狀態(tài)態(tài)4=“10”特點:觸發(fā)器使用較少,速度較慢,不會產生特點:觸發(fā)器使用較少,速度較慢,不會產生兩位同時翻轉的情況。當狀態(tài)位的輸出被異步兩位同時翻轉的情況。當狀態(tài)位的輸出被異步應用時,格雷碼編碼是有益的。應用時,格雷碼編碼是有益的。1 有
18、限狀態(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ā)器。同一時間僅時間僅1個狀態(tài)位處于有效電平(如邏輯個狀態(tài)位處于有效電平(如邏輯“1”)例:實現例:實現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)機的基本概念有限
19、狀態(tài)機的基本概念u關于關于one-hot、gray-code、binary編碼使編碼使用說明用說明Binary、gray-code編碼使用較少的觸發(fā)器,編碼使用較少的觸發(fā)器,較多的組合邏輯,而較多的組合邏輯,而one-hot編碼反之。由于編碼反之。由于CPLD更多的提供組合邏輯,而更多的提供組合邏輯,而FPGA更多的更多的提供觸發(fā)器資源,所以提供觸發(fā)器資源,所以CPLD多使用多使用gray-code,而,而FPGA多使用多使用one-hot編碼。編碼。對于小型設計使用對于小型設計使用gray-code和和binary編碼更編碼更有效,而大型狀態(tài)機使用有效,而大型狀態(tài)機使用one-hot編碼更有
20、效。編碼更有效。1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u程序中指明編碼方式程序中指明編碼方式ARCHITECTURE BEHAV OF BINARY ISTYPE STATE_TYPE IS(S1, S2, 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 ISTYPE STATE_TYPE IS(S1, S2, S3, S4,
21、 S5, S6, S7);ATTRIBUTE ENUM_ENCODING: STRING;ATTRIBUTE ENUM_ENCODING OF STATE_TYPE: TYPE IS 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;Binary編碼One-hot編碼1 有限狀態(tài)機的基本概念有限狀態(tài)機的基本概念u程序中指明編碼方式程序中指明編碼方式2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式u設計狀態(tài)機的步驟:設計狀態(tài)機的步驟: 分析設計要求,列出狀態(tài)機的全部可能狀態(tài),分析設計要求,列出狀態(tài)機的全部可
22、能狀態(tài),并對每一個狀態(tài)進行編碼。并對每一個狀態(tài)進行編碼。 根據狀態(tài)轉移關系和輸出函數畫出狀態(tài)轉移圖。根據狀態(tài)轉移關系和輸出函數畫出狀態(tài)轉移圖。 由狀態(tài)轉移圖,用由狀態(tài)轉移圖,用VHDLVHDL語句對狀態(tài)機描述語句對狀態(tài)機描述。 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式u狀態(tài)轉移圖狀態(tài)轉移圖狀態(tài)轉移圖是狀態(tài)機描述的最自然的方式,下狀態(tài)轉移圖是狀態(tài)機描述的最自然的方式,下圖是使用圖是使用HDL Designer設計的一個簡單的狀設計的一個簡單的狀態(tài)轉移圖。態(tài)轉移圖。2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式u狀態(tài)轉移列表狀態(tài)轉移列表狀態(tài)轉移列表使用列表的方式描述狀態(tài)機,是狀態(tài)轉移列表使用列表
23、的方式描述狀態(tài)機,是數字邏輯電路常用的設計方法之一,經常被用數字邏輯電路常用的設計方法之一,經常被用于對狀態(tài)化簡,對于可編程邏輯設計,由于可于對狀態(tài)化簡,對于可編程邏輯設計,由于可用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設計的穩(wěn)定性、安全性等因素,所以并不經常使計的穩(wěn)定性、安全性等因素,所以并不經常使用狀態(tài)轉移列表優(yōu)化狀態(tài)。用狀態(tài)轉移列表優(yōu)化狀態(tài)。狀態(tài) 輸入a=1b=1defaultS0S1S2S1S2S0S2S02 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式uHDL語言描述狀態(tài)機語言描述狀態(tài)機使用使用HDL語言描述狀態(tài)機有一定的靈活性,但語言描述狀態(tài)機有一
24、定的靈活性,但是決不是天馬行空,而是有章可循的。通過一是決不是天馬行空,而是有章可循的。通過一些規(guī)范的描述方法,可以使些規(guī)范的描述方法,可以使HDL語言描述的狀語言描述的狀態(tài)機更安全、穩(wěn)定、高效、易于維護。下面是態(tài)機更安全、穩(wěn)定、高效、易于維護。下面是使用使用“HDL Designer”軟件,通過以上的狀軟件,通過以上的狀態(tài)轉移圖自動生成的態(tài)轉移圖自動生成的VHDL描述的狀態(tài)機代碼。描述的狀態(tài)機代碼。自動生成的代碼的形式,是嚴格按照三進程狀自動生成的代碼的形式,是嚴格按照三進程狀態(tài)機描述風格實現的。態(tài)機描述風格實現的。 2 狀態(tài)機的基本描述方式狀態(tài)機的基本描述方式u1. 說明部分說明部分 AR
25、CHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST;u2.主控時序進程主控時序進程 負責狀態(tài)機運轉和在時鐘驅動下的狀態(tài)轉換,隨負責狀態(tài)機運轉和在時鐘驅動下的狀態(tài)轉換,隨外部時鐘信號,以同步時序方式工作。外部時鐘信號,以同步時序方式工作。u3.主控組合進程主控組合進程 通過通過pr_state的改變,進入主控組合進程,根據外部的改變,進入主控組合進程,根據外部輸入信號確定輸出和下一狀態(tài)的走向(輸入信號確定輸出和下一狀態(tài)的走向(nx_state)u4. 輔助進程輔助進程ENTIT
26、Y smtest IS PORT( a : IN std_logic; b : IN std_logic; clk : IN std_logic; rst : IN std_logic; x : OUT std_logic; y : OUT std_logic );- DeclarationsEND 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 ); - Dec
27、lare current and next state signals SIGNAL current_state : 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 =
28、 s1; ELSE next_state IF (a=1) THEN next_state = s2; ELSIF (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描述評判標準描述評判標準安全,穩(wěn)定性高安全,穩(wěn)定性高所謂所謂FSM安全是指安全是指FSM不會進入死循環(huán),特別是不會進入非不會進入死循
29、環(huán),特別是不會進入非預知狀態(tài),而且由于某些擾動進入非設計狀態(tài),也能很快的恢預知狀態(tài),而且由于某些擾動進入非設計狀態(tài),也能很快的恢復到正常的狀態(tài)循環(huán)中來。這里面有兩層含義,第一:要求該復到正常的狀態(tài)循環(huán)中來。這里面有兩層含義,第一:要求該FSM的綜合實現結果無毛刺等異常擾動;第二:要求狀態(tài)機的綜合實現結果無毛刺等異常擾動;第二:要求狀態(tài)機要完備,即使收到異常擾動進入非設計狀態(tài),也能很快恢復到要完備,即使收到異常擾動進入非設計狀態(tài),也能很快恢復到正常狀態(tài)。正常狀態(tài)。速度快,滿足設計的頻率要求速度快,滿足設計的頻率要求任何任何RLT設計都應該滿足設計的頻率要求。設計都應該滿足設計的頻率要求。面積小,
30、滿足設計的面積要求面積小,滿足設計的面積要求任何任何RTL設計都應該滿足設計的面積要求。設計都應該滿足設計的面積要求。FSM設計要清晰易懂、易維護設計要清晰易懂、易維護不規(guī)范的不規(guī)范的FSM寫法上很難讓其他人解讀,甚至過一段時間后寫法上很難讓其他人解讀,甚至過一段時間后設計者也發(fā)現很難維護。設計者也發(fā)現很難維護。3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機u時序邏輯設計時序邏輯設計由右圖可知,由右圖可知,clock和和reset作為時序邏輯部分的輸入,作為時序邏輯部分的輸入,Nx_state也使輸入之一。也使輸入之一。Pr_state作為其輸出??梢宰鳛槠漭敵???梢悦枋鋈缦旅枋鋈缦翽ROCESS
31、(reset, clock)BEGINIF (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=. ) THEN out
32、put = ; 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;-ENTITY ISPORT (input
33、: IN; reset, clock: IN STD_LOGIC; output: OUT);END ;-ARCHITECTURE OFISTYPE state IS (state0, state1, state2, state3, .);SIGNAL pr_state, nx_state: state;BEGIN-Lower section-PROCESS (reset, clock)BEGIN IF (reset = 1) THENpr_state = state0; ELSIF (clockEVENT AND clock = 1) THENpr_state IF (input=.) TH
34、EN 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 ISPORT (input: IN ; reset, clock: IN STD_LOGIC; output: OUT );END ;-ARCH
35、ITECTURE OFISTYPE states IS (state0, state1, state2, state3, .);SIGNAL pr_state, nx_state: states;SIGNAL temp: ;BEGIN-Lower section:-PROCESS (reset, clock)BEGIN IF (reset = 1) THENpr_state = state0; ELSIF (clockEVENT AND clock = 1) THENoutput = temp;pr_state temp = ;IF (condition) THEN nx_state temp
36、 = ;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 ISPORT (a, b, d, clk, rst: IN BIT; x: OUT BIT);END simple_fsm;-ARCHITECTURE simple
37、_fsm OF simple_fsm ISTYPE state IS (stateA, stateB);SIGNAL pr_state, nx_state: state;BEGIN-Lower section: -PROCESS (rst, clk)BEGIN IF (rst = 1) THENpr_state = stateA; ELSIF (clkEVENT AND clk = 1) THENpr_state x = a;IF (d = 1) THEN nx_state = stateB;ELSE nx_state x = b;IF (d = 1) THEN nx_state = stat
38、eA;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 ISPORT (a, b, d, clk, rst: IN BIT; x: OUT BIT);END simple_fsm;-ARCHITECTURE simple_fsm OF simple_fsm ISTYPE state IS
39、 (stateA, stateB);SIGNAL pr_state, nx_state: state;SIGNAL temp: BIT := 0;BEGIN-Lower section: -PROCESS (rst, clk)BEGIN IF (rst = 1) THENpr_state = stateA; ELSIF (clkEVENT AND clk = 1) THENx = temp;pr_state temp = a;IF (d = 1) THEN nx_state = stateB;ELSE nx_state temp = b;IF (d = 1) THEN nx_state = s
40、tateA;ELSE nx_state = stateB;END IF; END CASE;END PROCESS;END simple_fsm;使用synplify綜合后的RTL圖多出一個輸出寄存器3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機u兩種方式的仿真結果對比兩種方式的仿真結果對比模板一方式實現的Mealy型狀態(tài)機,其輸出結果與時鐘不同步。模板二方式實現的同樣的狀態(tài)機,其輸出結果與時鐘是同步的。3 VHDL語言描述狀態(tài)機語言描述狀態(tài)機u結論結論從形式上看:模板一只存儲了從形式上看:模板一只存儲了pr_state;而模;而模板二同時存儲了板二同時存儲了output。對于對于Mealy型狀態(tài)機
41、,為了時序同步,必須采型狀態(tài)機,為了時序同步,必須采用模板二的方式。用模板二的方式。而而moore型狀態(tài)機,則不需要使用模板二的描型狀態(tài)機,則不需要使用模板二的描述方式。述方式。模板一模板二4 Moore型狀態(tài)機舉例型狀態(tài)機舉例u上例是一個上例是一個Mealy型狀態(tài)機。下面我們來型狀態(tài)機。下面我們來設計一個設計一個Moore型狀態(tài)機。型狀態(tài)機。例:設計一個串行數據流檢測器。要求:輸入例:設計一個串行數據流檢測器。要求:輸入連續(xù)的二進制數,當檢測到連續(xù)連續(xù)的二進制數,當檢測到連續(xù)“1”的個數的個數大于大于2個的時候,輸出個的時候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出“0”。分析:確定所需的狀態(tài)
42、數,取決于數據流中出分析:確定所需的狀態(tài)數,取決于數據流中出現連續(xù)現連續(xù)“1”的個數,應該為的個數,應該為4個狀態(tài)。個狀態(tài)。4 Moore型狀態(tài)機舉例型狀態(tài)機舉例畫出狀態(tài)轉移圖畫出狀態(tài)轉移圖zero(q=0)one(q=0)two(q=0)three(q=1)rstd=0d=1d=0d=0d=0d=1d=1d=14 Moore型狀態(tài)機舉例型狀態(tài)機舉例根據狀態(tài)轉移圖,寫出根據狀態(tài)轉移圖,寫出VHDL代碼代碼-LIBRARY ieee;USE ieee.std_logic_1164.all;-ENTITY string_detector ISPORT (d, clk, rst: IN BIT; q
43、: OUT BIT);END string_detector;-ARCHITECTURE my_arch OF string_detector ISTYPE state IS (zero, one ,two, three);SIGNAL pr_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
44、= 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 nx_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)機舉例設計后使用設計后使用synplify生成的狀態(tài)轉移圖如下生成的狀態(tài)轉移
45、圖如下雖然使用的是模板一的風格描述的狀態(tài)機,但是輸出依然可以保持與時鐘上升沿同步。4 Moore型狀態(tài)機舉例型狀態(tài)機舉例功能仿真后的結果功能仿真后的結果雖然使用的是模板一的風格描述的狀態(tài)機,但是輸出依然可以保持與時鐘上升沿同步。雖然使用的是模板一的風格描述的狀態(tài)機,但是輸出依然可以保持與時鐘上升沿同步??梢?,對于可見,對于Moore狀態(tài)機,不需要對輸出進行狀態(tài)機,不需要對輸出進行同步。同步。 4 Moore型狀態(tài)機舉例型狀態(tài)機舉例u使用使用synplify綜合之后,可以看出默認的綜合之后,可以看出默認的編碼方式是編碼方式是one-hot編碼。編碼。綜合后是one-hot編碼方式4 Moore型
46、狀態(tài)機舉例型狀態(tài)機舉例u如果將在原來的程序的基礎上通過如果將在原來的程序的基礎上通過attribute語句指定編碼方式,即將結構體語句指定編碼方式,即將結構體的聲明部分添加如下代碼,可將編碼方式的聲明部分添加如下代碼,可將編碼方式改為二進制編碼:改為二進制編碼:ATTRIBUTE enum_encoding: string;ATTRIBUTE enum_encoding OF state : TYPE IS 00 01 10 11;綜合后是binary碼編碼方式4 Moore型狀態(tài)機舉例型狀態(tài)機舉例u以上兩種情況是在默認綜合的情況下生成以上兩種情況是在默認綜合的情況下生成的,即沒有將的,即沒有
47、將“FSM Explorer”的選項勾的選項勾選。選。u如果將如果將“FSM Explorer”選項勾選,那么選項勾選,那么即使是在程序中指定了編碼方式,其綜合即使是在程序中指定了編碼方式,其綜合后的狀態(tài)編碼也是后的狀態(tài)編碼也是one-hot編碼。編碼。u因此,在狀態(tài)機設計的時候,大家要注意因此,在狀態(tài)機設計的時候,大家要注意軟件的使用細節(jié),應當有意識的通過軟件軟件的使用細節(jié),應當有意識的通過軟件進行性能優(yōu)化。進行性能優(yōu)化。沒有勾選“FSM Explorer”5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u單進程描述單進程描述它就是將狀態(tài)機的三個邏輯單元(狀態(tài)寄存器、它就是將狀態(tài)機的
48、三個邏輯單元(狀態(tài)寄存器、下狀態(tài)產生邏輯、輸出邏輯)合并起來,采用下狀態(tài)產生邏輯、輸出邏輯)合并起來,采用一個進程描述。一個進程描述。適用于簡單的設計;適用于簡單的設計;對于復雜的狀態(tài)機,可讀性差,易出錯,不利對于復雜的狀態(tài)機,可讀性差,易出錯,不利于于EDA軟件優(yōu)化。軟件優(yōu)化。5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比下一狀態(tài)組合邏輯寄存輸出邏輯當前狀態(tài)時序邏輯u單進程描述單進程描述u單進程描述單進程描述下一狀態(tài)組合邏輯寄存輸出邏輯當前狀態(tài)時序邏輯5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u雙進程描述雙進程描述將輸出進程和狀態(tài)轉移進程合并起來,采用一將輸出進程和狀
49、態(tài)轉移進程合并起來,采用一個組合邏輯來描述。個組合邏輯來描述。通常情況下,綜合工具可以較好地識別這兩部通常情況下,綜合工具可以較好地識別這兩部邏輯并進行優(yōu)化,但建議如果不是輸出邏輯非邏輯并進行優(yōu)化,但建議如果不是輸出邏輯非常簡單,還是采用兩個不同的進程來描述,這常簡單,還是采用兩個不同的進程來描述,這樣綜合工具可以明確下狀態(tài)轉移邏輯,優(yōu)化效樣綜合工具可以明確下狀態(tài)轉移邏輯,優(yōu)化效果較好。果較好。另一種雙進程描述另一種雙進程描述將下狀態(tài)轉移邏輯和當將下狀態(tài)轉移邏輯和當前狀態(tài)寄存器描述結合,省略中間變量。前狀態(tài)寄存器描述結合,省略中間變量。5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u
50、雙進程描述雙進程描述第二個進程(純組合邏輯),描述狀態(tài)轉移條件的判斷。第一個進程(同步時序),格式化地描述次態(tài)到現態(tài)的轉移。一般情況是組合邏輯輸出,如果時序允許,盡量插入寄存器輸出。5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u三進程描述三進程描述一般可以采用三個進程來描述狀態(tài)機:一般可以采用三個進程來描述狀態(tài)機:描述狀態(tài)寄存器的時序進程描述狀態(tài)寄存器的時序進程描述下狀態(tài)產生邏輯的組合進程描述下狀態(tài)產生邏輯的組合進程定義輸出的組合邏輯進程定義輸出的組合邏輯進程5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u三進程描述三進程描述第一個進程(同步時序)格式化描述次態(tài)寄存器遷移
51、到現態(tài)寄存器第二個進程(純組合邏輯),描述狀態(tài)轉移條件判斷第三個進程(同步時序),格式化描述次態(tài)的寄存器輸出。5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u舉例:舉例:分別使用單進程、雙進程、三進程描述方式如分別使用單進程、雙進程、三進程描述方式如下狀態(tài)轉移圖所示的狀態(tài)機:下狀態(tài)轉移圖所示的狀態(tài)機:5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u單進程描述的單進程描述的VHDL代碼代碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine1 ISPORT ( clk, reset : IN STD_LOGIC;
52、state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 );END s_machine2;ARCHITECTURE behv OF s_machine1 ISTYPE FSM_ST IS (s0, s1, s2, s3);VARIABLE state: FSM_ST;BEGINPROCESS (reset, clk, state, state_inputs)BEGIN IF reset = 1 THEN state comb_outputs = 5; IF state_input
53、s = 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; -(完)(完)5 三
54、種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u單進程描述單進程描述RTL圖圖5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u雙進程描述的雙進程描述的VHDL代碼代碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine ISPORT ( 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;ARCHITECTURE b
55、ehv OF s_machine ISTYPE FSM_ST IS (s0, s1, s2, s3);SIGNAL current_state, next_state : FSM_ST;BEGINREG: 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 三種進程描述狀態(tài)機方式對比三種進程描述
56、狀態(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 PROCESS;END behv;5 三種
57、進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u雙進程描述產生的雙進程描述產生的RTL圖圖5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比u三進程描述的三進程描述的VHDL代碼代碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine2 ISPORT ( clk, reset : IN STD_LOGIC;state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);comb_outputs : OUT INTEGER RANGE 0 TO 15 );END s_machine2;ARCHITECT
58、URE behv OF s_machine2 ISTYPE FSM_ST IS (s0, s1, s2, s3);SIGNAL current_state, next_state: FSM_ST;BEGINREG: 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; ELSE next_state IF state_inputs = 01 TH
59、EN next_state = s1;5 三種進程描述狀態(tài)機方式對比三種進程描述狀態(tài)機方式對比 ELSE next_state IF state_inputs = 10 THEN next_state = s3; ELSE next_state IF state_inputs = 11 THENnext_state = s3; ELSE next_state comb_outputs comb_outputs comb_outputs comb_outputs major_green = 1;minor_green = 0;IF (car = 1) THEN start_timer major
60、_green = 0;minor_green = 1;IF (timed= 1) THEN start_timer = 1; state := G;END IF;END CASE;END IFEND PROCESS;6 ASM圖法狀態(tài)機設計圖法狀態(tài)機設計u單進程狀態(tài)機:單進程狀態(tài)機:單進程狀態(tài)變量可以定義為變量類型,放在進程的說單進程狀態(tài)變量可以定義為變量類型,放在進程的說明部分明部分一般在進程的開頭寫上時鐘有效邊沿的檢測語句一般在進程的開頭寫上時鐘有效邊沿的檢測語句注意在這里進程敏感參數表中的注意在這里進程敏感參數表中的car和和timed可省去可省去rising_edge(clock)也可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國油性油墨數據監(jiān)測研究報告
- 《讀書:目的和前提》教學設計 2024-2025學年統(tǒng)編版高中語文必修上冊
- 1-2 《齊桓晉文之事》教學設計 2023-2024學年統(tǒng)編版高中語文必修下冊
- 2025年黑龍江民族職業(yè)學院單招職業(yè)技能測試題庫審定版
- 2025年電子油門踏板項目建議書
- 2025年甘肅省白銀市單招職業(yè)適應性測試題庫完整
- 黑龍江省佳木斯市三校聯考2023-2024學年高二上學期1月期末考試地理試題(解析版)
- 2025至2030年中國無水磷酸氫鈣數據監(jiān)測研究報告
- 2025至2030年中國摩托車護膝數據監(jiān)測研究報告
- 2025至2030年中國接地系統(tǒng)監(jiān)視器數據監(jiān)測研究報告
- 杭州市淳安縣國有企業(yè)招聘筆試真題2024
- 安徽省蕪湖市2024-2025學年第一學期期末考試七年級語文試卷(含答案)
- 2024政府采購評審專家考試真題庫及答案
- 2024年花盆市場分析現狀
- 2025山東省退役軍人事務廳所屬事業(yè)單位招聘人員歷年高頻重點提升(共500題)附帶答案詳解
- 2024年社區(qū)工作者考試時事政治模擬題及答案
- 物業(yè)服務行業(yè)禮儀培訓
- 退市新規(guī)解讀-上海證券交易所、大同證券
- 教育部中國特色學徒制課題:現代職業(yè)教育體系建設背景下中國特色學徒制治理體系與資源配置研究
- 外墻真石漆施工方案
- 森林防火安全生產工作
評論
0/150
提交評論