第八章-狀態(tài)機設(shè)計_第1頁
第八章-狀態(tài)機設(shè)計_第2頁
第八章-狀態(tài)機設(shè)計_第3頁
第八章-狀態(tài)機設(shè)計_第4頁
第八章-狀態(tài)機設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章有限狀態(tài)機的VHDL設(shè)計主要內(nèi)容有限狀態(tài)機的基本概念一般有限狀態(tài)機的設(shè)計摩爾狀態(tài)機設(shè)計米立狀態(tài)機設(shè)計無限狀態(tài)機用于混沌系統(tǒng)非線性系統(tǒng)本書不要求8.1有限狀態(tài)機的基本概念8.1.1有限狀態(tài)機的基本結(jié)構(gòu)和功能

有限狀態(tài)機(FiniteStateMachine,簡稱FSM)是數(shù)字邏輯電路以及數(shù)字系統(tǒng)的重要組成部分,尤其應(yīng)用于數(shù)字系統(tǒng)核心部件的設(shè)計,以實現(xiàn)高效率高可靠性的邏輯控制。有限狀態(tài)機實現(xiàn)了以下兩個基本功能:根據(jù)當(dāng)前狀態(tài)和輸入條件決定狀態(tài)機的內(nèi)部狀態(tài)轉(zhuǎn)換。根據(jù)當(dāng)前狀態(tài)和輸入條件確定產(chǎn)生輸出信號序列。8.1有限狀態(tài)機的基本概念(續(xù))8.1.2狀態(tài)機的狀態(tài)編碼有限狀態(tài)機設(shè)計是基于狀態(tài)描述的,因此首先必須對系統(tǒng)中的每一個工作狀態(tài)有一個合理的表達。對于設(shè)計者而言,為了表達簡捷方便通常使用符號化狀態(tài)機。二進制編碼方案:是用N位二進制數(shù),表示M個工作狀態(tài),當(dāng)然必須滿足2N大于等于M。一位熱碼編碼方案(獨熱碼編碼):用N位二進制數(shù)表示N個狀態(tài),每一位編碼對應(yīng)一個觸發(fā)器,狀態(tài)機中的每個狀態(tài)都由其中一個觸發(fā)器的狀態(tài)來表示。例:二進制101(5)轉(zhuǎn)換為獨熱碼為11111(5個)1101111118.1.3有限狀態(tài)機的技術(shù)優(yōu)勢設(shè)計方案相對固定,結(jié)構(gòu)模式簡單,可定義符號化枚舉類型的狀態(tài)。狀態(tài)機的VHDL描述層次分明,結(jié)構(gòu)清晰,易讀易懂?;谟邢逘顟B(tài)機技術(shù)設(shè)計的控制器其工作速度大大優(yōu)于CPU?;谟邢逘顟B(tài)機技術(shù)設(shè)計的控制器其可靠性也優(yōu)于CPU。二進制:速度慢,位數(shù)少,節(jié)省資源獨熱碼:快多浪費CASE語句:并行處理,程序最穩(wěn)定,能用則用=:賦值=》:8.2一般有限狀態(tài)機的設(shè)計8.2.1一般有限狀態(tài)機的VHDL組成

說明部分:主要是設(shè)計者使用TYPE語句定義新的數(shù)據(jù)類型,如:

TYPEstatesIS(st0,st1,st2,st3,st4,st5);

SIGNALpresent_state,next_state:states;主控時序邏輯部分:任務(wù)是負(fù)責(zé)狀態(tài)機運轉(zhuǎn)和在外部時鐘驅(qū)動下實現(xiàn)內(nèi)部狀態(tài)轉(zhuǎn)換的進程。時序進程的實質(zhì)是一組觸發(fā)器,因此,該進程中往往也包括一些清零或置位的輸入控制信號,如Reset信號。主控組合邏輯部分:任務(wù)是根據(jù)狀態(tài)機外部輸入的狀態(tài)控制信號(包括來自外部的和狀態(tài)機內(nèi)部的非進程的信號)和當(dāng)前的狀態(tài)值current_state來確定下一狀態(tài)next_state的取值內(nèi)容,以及對外部或?qū)?nèi)部其他進程輸出控制信號的內(nèi)容。輔助邏輯部分:輔助邏輯部分主要是用于配合狀態(tài)機的主控組合邏輯和主控時序邏輯進行工作,以完善和提高系統(tǒng)的性能。8.2.2一般有限狀態(tài)機的設(shè)計示例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtwo_process_state_machineIS(tpsmIS)

PORT(clk,reset:INSTD_LOGIC; state_inputs:INSTD_LOGIC; comb_outputs:OUTSTD_LOGIC_VECTOR(0TO1));ENDENTITYtwo_process_state_machine;

ARCHITECTURE

behv

OFtwo_process_state_machineIS

TYPEstatesIS(st0,st1,st2,st3);--定義states為枚舉型數(shù)據(jù)類型,構(gòu)造符號化狀態(tài)機 SIGNALcurrent_state,next_state:states;BEGINREG:PROCESS(reset,clk)--時序邏輯進程

BEGIN

IFreset='1'THEN--異步復(fù)位

current_state<=st0;

ELSIF

clk='1'AND

clk'EVENT

THEN--出現(xiàn)時鐘上升沿時進行狀態(tài)轉(zhuǎn)換

current_state<=next_state;

ENDIF;

ENDPROCESS;例8.1二進程一般狀態(tài)機的描述。8.2.2一般有限狀態(tài)機的設(shè)計示例(續(xù)1)COM:PROCESS(current_state,state_inputs)--組合邏輯進程 BEGIN

CASEcurrent_stateIS

WHENst0=>comb_outputs<="00";--系統(tǒng)輸出及其初始化

IFstate_inputs='0'THEN--根據(jù)外部輸入條件決定狀態(tài)轉(zhuǎn)換方向

next_state<=st0;

ELSEnext_state<=st1;

ENDIF;

WHENst1=>comb_outputs<="01";

IFstate_inputs=‘0’THEN

next_state<=st1;

ELSEnext_state<=st2;

ENDIF;

WHENst2=>comb_outputs<="10";

IFstate_inputs=‘0’THEN

next_state<=st2;

ELSEnext_state<=st3;

ENDIF;

WHENst3=>comb_outputs<="11";

IFstate_inputs=‘0’THEN

next_state<=st3;

ELSEnext_state<=st0;

ENDIF;

ENDCASE; ENDPROCESS;ENDARCHITECTURE

behv;例8.1二進程一般狀態(tài)機的描述。8.2.2一般有限狀態(tài)機的設(shè)計示例(續(xù)2)例8.1二進程一般狀態(tài)機的描述。例8.1的狀態(tài)轉(zhuǎn)換圖例8.1的時序仿真圖例8.1的RTL圖8.3摩爾狀態(tài)機設(shè)計LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfour_state_moore_state_machineIS PORT(

Clk:INSTD_LOGIC; Input:INSTD_LOGIC; reset :INSTD_LOGIC; output:OUT STD_LOGIC_VECTOR(1DOWNTO0) );ENDENTITY;

ARCHITECTURErtlOFfour_state_moore_state_machineIS --定義枚舉類型的狀態(tài)機

TYPEstate_typeIS(s0,s1,s2,s3); --定義一個信號保存當(dāng)前工作狀態(tài)

SIGNALstate:state_type;

從狀態(tài)機的信號輸出方式上看,可以將狀態(tài)機分為摩爾型(Moore)和米立型(Mealy)狀態(tài)機。摩爾型有限狀態(tài)機輸出只與當(dāng)前狀態(tài)有關(guān),而與輸入信號的當(dāng)前值無關(guān),是嚴(yán)格的現(xiàn)態(tài)函數(shù)。例8.2四狀態(tài)摩爾型有限狀態(tài)機的描述。8.3摩爾狀態(tài)機設(shè)計(續(xù)1)BEGIN

PROCESS(clk,reset)

--狀態(tài)轉(zhuǎn)換的時序進程

BEGIN

IFreset='1'THEN state<=s0;

ELSIF(clk'EVENTandclk='1')THEN

CASEstateIS

WHENs0=> IFinput='1'THEN state<=s1;

ELSE state<=s0;

ENDIF;

WHENs1=> IFinput='1'THEN state<=s2;

ELSE state<=s1;

ENDIF;

WHENs2=> IFinput='1'THEN state<=s3;

ELSE state<=s2;

ENDIF;

WHENs3=> IFinput='1'THEN state<=s0;

ELSE state<=s3;

ENDIF;

ENDCASE;

ENDIF;

ENDPROCESS;

PROCESS(state)

--輸出由當(dāng)前狀態(tài)唯一決定的組合邏輯進程

BEGIN

CASEstateIS

WHENs0=> output<="00";

WHENs1=> output<="01";

WHENs2=> output<="10";

WHENs3=> output<="11";

ENDCASE;

ENDPROCESS;END

rtl;例8.2四狀態(tài)摩爾型有限狀態(tài)機的描述。8.3摩爾狀態(tài)機設(shè)計(續(xù)2)例8.2四狀態(tài)摩爾型有限狀態(tài)機的描述。例8.2的時序仿真圖8.4米立狀態(tài)機設(shè)計LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfour_state_mealy_state_machineIS

PORT (

clk :INSTD_LOGIC; input :INSTD_LOGIC; reset :INSTD_LOGIC; output :OUTSTD_LOGIC_VECTOR(1DOWNTO0) );ENDENTITY;

ARCHITECTURE

rtl

OFfour_state_mealy_state_machineIS --定義枚舉類型的狀態(tài)機

TYPEstate_typeIS(s0,s1,s2,s3); --定義一個信號保存當(dāng)前工作狀態(tài)

SIGNALstate:state_type;

米立狀態(tài)機的輸出是現(xiàn)態(tài)和所有輸入的函數(shù),輸出隨輸入變化而隨時發(fā)生變化。因此,從時序的角度上看,米立狀態(tài)機屬于異步輸出的狀態(tài)機,輸出不依賴于系統(tǒng)時鐘,也不存在摩爾狀態(tài)機中輸出滯后一個時鐘周期來反映輸入變化的問題。例8.3四狀態(tài)米立狀態(tài)機的描述。8.4米立狀態(tài)機設(shè)計(續(xù)1)BEGINREG:PROCESS(clk,reset)

BEGIN

IFreset=‘1’THEN

state<=s0;--高電平有效的系統(tǒng)異步復(fù)位

ELSIF(rising_edge(clk))THEN

CASEstateIS

--依據(jù)當(dāng)前狀態(tài)和輸入信號同步?jīng)Q定下一個狀態(tài)

WHENs0=> IFinput='0'THEN state<=s0;

ELSE state<=s1;

ENDIF;

WHENs1=> IFinput='0'THEN state<=s1;

ELSE state<=s2;

ENDIF;

WHENs2=> IFinput='0'THEN state<=s2;

ELSE state<=s3;

ENDIF;

WHENs3=> IFinput='0'THEN state<=s3;

ELSE state<=s0;

ENDIF;

ENDCASE;

ENDIF;

ENDPROCESS;例8.3四狀態(tài)米立狀態(tài)機的描述。8.4米立狀態(tài)機設(shè)計(續(xù)2)COM:PROCESS(state,input)

--依據(jù)當(dāng)前狀態(tài)和輸入信號決定輸出信號,與時鐘無關(guān)

BEGIN

CASEstateIS

WHENs0=> IFinput='0'THEN output<="00";

ELSE output<="01";

ENDIF;

WHENs1=> IFinput='0'THEN

溫馨提示

  • 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

提交評論