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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

SIGNALpresent_state,next_state:states;主控時(shí)序邏輯部分:任務(wù)是負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在外部時(shí)鐘驅(qū)動(dòng)下實(shí)現(xiàn)內(nèi)部狀態(tài)轉(zhuǎn)換的進(jìn)程。時(shí)序進(jìn)程的實(shí)質(zhì)是一組觸發(fā)器,因此,該進(jìn)程中往往也包括一些清零或置位的輸入控制信號(hào),如Reset信號(hào)。主控組合邏輯部分:任務(wù)是根據(jù)狀態(tài)機(jī)外部輸入的狀態(tài)控制信號(hào)(包括來(lái)自外部的和狀態(tài)機(jī)內(nèi)部的非進(jìn)程的信號(hào))和當(dāng)前的狀態(tài)值current_state來(lái)確定下一狀態(tài)next_state的取值內(nèi)容,以及對(duì)外部或?qū)?nèi)部其他進(jìn)程輸出控制信號(hào)的內(nèi)容。輔助邏輯部分:輔助邏輯部分主要是用于配合狀態(tài)機(jī)的主控組合邏輯和主控時(shí)序邏輯進(jìn)行工作,以完善和提高系統(tǒng)的性能。8.2.2一般有限狀態(tài)機(jī)的設(shè)計(jì)示例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ù)類(lèi)型,構(gòu)造符號(hào)化狀態(tài)機(jī) SIGNALcurrent_state,next_state:states;BEGINREG:PROCESS(reset,clk)--時(shí)序邏輯進(jìn)程

BEGIN

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

current_state<=st0;

ELSIF

clk='1'AND

clk'EVENT

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

current_state<=next_state;

ENDIF;

ENDPROCESS;例8.1二進(jìn)程一般狀態(tài)機(jī)的描述。8.2.2一般有限狀態(tài)機(jī)的設(shè)計(jì)示例(續(xù)1)COM:PROCESS(current_state,state_inputs)--組合邏輯進(jìn)程 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二進(jìn)程一般狀態(tài)機(jī)的描述。8.2.2一般有限狀態(tài)機(jī)的設(shè)計(jì)示例(續(xù)2)例8.1二進(jìn)程一般狀態(tài)機(jī)的描述。例8.1的狀態(tài)轉(zhuǎn)換圖例8.1的時(shí)序仿真圖例8.1的RTL圖8.3摩爾狀態(tài)機(jī)設(shè)計(jì)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 --定義枚舉類(lèi)型的狀態(tài)機(jī)

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

SIGNALstate:state_type;

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

PROCESS(clk,reset)

--狀態(tài)轉(zhuǎn)換的時(shí)序進(jì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)唯一決定的組合邏輯進(jìn)程

BEGIN

CASEstateIS

WHENs0=> output<="00";

WHENs1=> output<="01";

WHENs2=> output<="10";

WHENs3=> output<="11";

ENDCASE;

ENDPROCESS;END

rtl;例8.2四狀態(tài)摩爾型有限狀態(tài)機(jī)的描述。8.3摩爾狀態(tài)機(jī)設(shè)計(jì)(續(xù)2)例8.2四狀態(tài)摩爾型有限狀態(tài)機(jī)的描述。例8.2的時(shí)序仿真圖8.4米立狀態(tài)機(jī)設(shè)計(jì)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 --定義枚舉類(lèi)型的狀態(tài)機(jī)

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

SIGNALstate:state_type;

米立狀態(tài)機(jī)的輸出是現(xiàn)態(tài)和所有輸入的函數(shù),輸出隨輸入變化而隨時(shí)發(fā)生變化。因此,從時(shí)序的角度上看,米立狀態(tài)機(jī)屬于異步輸出的狀態(tài)機(jī),輸出不依賴(lài)于系統(tǒng)時(shí)鐘,也不存在摩爾狀態(tài)機(jī)中輸出滯后一個(gè)時(shí)鐘周期來(lái)反映輸入變化的問(wèn)題。例8.3四狀態(tài)米立狀態(tài)機(jī)的描述。8.4米立狀態(tài)機(jī)設(shè)計(jì)(續(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)和輸入信號(hào)同步?jīng)Q定下一個(gè)狀態(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)機(jī)的描述。8.4米立狀態(tài)機(jī)設(shè)計(jì)(續(xù)2)COM:PROCESS(state,input)

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

BEGIN

CASEstateIS

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

ELSE output<="01";

ENDIF;

WHENs1=> IFinput='0'THEN

溫馨提示

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

評(píng)論

0/150

提交評(píng)論