版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
有限狀態(tài)機(jī)(finite-statemachine,縮寫:FSM)又稱有限狀態(tài)自動(dòng)機(jī),簡(jiǎn)稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。狀態(tài)機(jī)由狀態(tài)寄存器和組合邏輯電路構(gòu)成,能夠根據(jù)控制信號(hào)按照預(yù)先設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移,協(xié)調(diào)相關(guān)信號(hào)動(dòng)作,完成特定操作的控制。在VHDL程序設(shè)計(jì)的實(shí)用時(shí)序邏輯系統(tǒng)中,狀態(tài)機(jī)是應(yīng)用廣泛的電路模塊,其在運(yùn)行速度的高效、執(zhí)行時(shí)間的確定性和高可靠性方面都顯現(xiàn)出強(qiáng)大的優(yōu)勢(shì)。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述1.狀態(tài)機(jī)狀態(tài)機(jī)是以描述控制特性為主的建模方法,它可以應(yīng)用于從系統(tǒng)分析到設(shè)計(jì)的所有階段。狀態(tài)機(jī)的基本操作有兩種:(1)狀態(tài)機(jī)內(nèi)部狀態(tài)轉(zhuǎn)換狀態(tài)機(jī)內(nèi)部狀態(tài)轉(zhuǎn)換操作使?fàn)顟B(tài)機(jī)經(jīng)歷一系列狀態(tài),下一狀態(tài)由狀態(tài)譯碼器根據(jù)當(dāng)前狀態(tài)和輸入條件決定。(2)產(chǎn)生輸出信號(hào)序列產(chǎn)生輸出信號(hào)序列操作是根據(jù)當(dāng)前狀態(tài)和輸入條件確定輸出信號(hào),由輸出譯碼器輸出信號(hào)。典型的狀態(tài)機(jī)有兩種:Mealy狀態(tài)機(jī)和Moore狀態(tài)機(jī)。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述2.一般狀態(tài)機(jī)的VHDL程序描述一般狀態(tài)機(jī)的結(jié)構(gòu)如圖6.9所示,狀態(tài)機(jī)的VHDL程序描述通常用枚舉類數(shù)據(jù)類型來定義狀態(tài)機(jī)的狀態(tài),使用多進(jìn)程方式來描述狀態(tài)機(jī)的內(nèi)部邏輯。通常包括說明部分、主控時(shí)序進(jìn)程、主控組合進(jìn)程和輔助進(jìn)程等。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.9一般狀態(tài)機(jī)的結(jié)構(gòu)結(jié)構(gòu)框圖(1)說明部分說明部分一般放在結(jié)構(gòu)體的architecture和begin之間,用枚舉型數(shù)據(jù)類型定義狀態(tài)機(jī)的狀態(tài)名。(2)主控時(shí)序進(jìn)程主控時(shí)序進(jìn)程是實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換的進(jìn)程。(3)主控組合進(jìn)程主控組合進(jìn)程的功能是狀態(tài)譯碼,向外部發(fā)出控制信號(hào),確定下一狀態(tài)的走向。(4)輔助進(jìn)程輔助進(jìn)程用于配合狀態(tài)機(jī)工作的組合、時(shí)序進(jìn)程或配合狀態(tài)機(jī)工作的其他時(shí)序進(jìn)程。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitys_machineisport(clk,reset:instd_logic;
state_inputs:in
std_logic_vector(0to1);
control_outputs:outstd_logic_vector(0to1));endentitys_machine;architecturebehaveofs_machineistypestatesis(S0,S1,S2,S3);--定義states為枚舉數(shù)據(jù)類型signalcurrent_state,next_state:states;beginP1:process(reset,clk)beginifreset='1'thencurrent_state<=S0;elsif
clk='1'andclk'eventthen--上升沿觸發(fā)current_state<=next_state;--當(dāng)前態(tài)轉(zhuǎn)換為次態(tài)endif;endprocessP1;【例6.1】雙進(jìn)程描述的狀態(tài)機(jī)項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述進(jìn)程P1為主控時(shí)序進(jìn)程,在“clk”上升沿時(shí),狀態(tài)機(jī)的狀態(tài)由當(dāng)前態(tài)“current_state”向次態(tài)“next_state”轉(zhuǎn)變。P2:process(current_state,state_inputs)--主控組合進(jìn)程begincasecurrent_stateiswhenS0=>control_outputs<="00";--輸出當(dāng)前狀態(tài)的控制值ifstate_inputs="00"then--根據(jù)外部輸入的值確定次態(tài)的走向
next_state<=S0;else
next_state<=S1;endif;whenS1=>control_outputs<="01";ifstate_inputs="00"then
next_state<=S1;else
next_state<=S2;endif;whenS2=>control_outputs<="10";ifstate_inputs="11"then
next_state<=S2;else
next_state<=S3;endif;whenS3=>control_outputs<="11";ifstate_inputs="11"then
next_state<=S3;else
next_state<=S0;endif;endcase;endprocess;endarchitecturebehave;說明部分:使用type語句定義狀態(tài)機(jī)狀態(tài)進(jìn)程P2為主控組合進(jìn)程;根據(jù)當(dāng)前狀態(tài)“current_state”與輸入信號(hào)“state_inputs”確定次態(tài)的狀態(tài)。進(jìn)程間通過“current_state”、“next_state”信號(hào)傳遞信息。例6.1程序編譯后,在QuartusPrime20.1集成環(huán)境,選擇【Tool】菜單【NetlistViewers】選項(xiàng)【RTLViewer】命令,將產(chǎn)生例6.1描述的狀態(tài)機(jī)的寄存器傳輸級(jí)綜合效果圖,如圖6.10所示。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.10寄存器傳輸級(jí)綜合效果圖RTL例6.1程序編譯后,在QuartusPrime20.1集成環(huán)境,選擇【Tool】菜單【NetlistViewers】選項(xiàng)【StateMachineViewer】命令,將產(chǎn)生例6.1描述的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖,如圖6.11所示。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.11狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖例6.1程序的功能仿真結(jié)果,如圖6.12所示。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.12狀態(tài)機(jī)功能仿真圖從圖中可知,狀態(tài)的轉(zhuǎn)變與輸出值的改變,與輸入時(shí)鐘的上升沿同步,與輸入信號(hào)“state_inputs”不同步。在55ms處,輸入信號(hào)“state_inputs”由“01”變?yōu)椤?1”,但輸出與狀態(tài)并沒有發(fā)生改變(control_outputs=10),在70ms“clk”上升沿處,輸出狀態(tài)還是“10”態(tài)沒有發(fā)生改變。這是由于當(dāng)前態(tài)是S2狀態(tài),根據(jù)程序可知當(dāng)前態(tài)是S2態(tài),輸入信號(hào)“state_inputs”值為“11”時(shí),狀態(tài)轉(zhuǎn)換是由S2態(tài)轉(zhuǎn)向S2態(tài),因而,狀態(tài)沒有發(fā)生改變。3.Moore狀態(tài)機(jī)的VHDL程序描述Moore有限狀態(tài)機(jī)輸出只與當(dāng)前狀態(tài)有關(guān),與輸入信號(hào)的當(dāng)前值無關(guān),是嚴(yán)格的現(xiàn)態(tài)函數(shù)。Moore有限狀態(tài)機(jī)的典型結(jié)構(gòu),如圖6.13所示。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.13Moore狀態(tài)機(jī)的典型結(jié)構(gòu)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitymooreisport(clk,reset:instd_logic;
data_in:in
std_logic;
data_out:outstd_logic_vector(3downto0));endentitymoore;architecturebehaveofmooreistypestates_typeis(S0,S1,S2,S3);--定義states_type為枚舉數(shù)據(jù)類型signalstate:states_type;--聲明信號(hào)state為states_type數(shù)據(jù)類型Begin【例6.2】Moore狀態(tài)機(jī)的描述項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述進(jìn)程P1為主控時(shí)序進(jìn)程,在“clk”上升沿時(shí),狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)變。P1:process(reset,clk)--主控時(shí)序進(jìn)程beginifreset='0'thenstate<=S0;elsif
clk='1'andclk'eventthen--上升沿觸發(fā)casestateiswhenS0=>ifdata_in='1'thenstate<=S1;endif;whenS1=>ifdata_in='0'thenstate<=S2;endif;whenS2=>ifdata_in='1'thenstate<=S3;endif;whenS3=>ifdata_in='0'thenstate<=S0;endif;endcase; endif;endprocessP1說明部分:使用type語句定義狀態(tài)機(jī)狀態(tài)P2:process(state)--主控組合進(jìn)程begincasestateiswhenS0=>data_out<="0001";--輸出當(dāng)前狀態(tài)的值whenS1=>data_out<="0010";whenS2=>data_out<="0100";whenS3=>data_out<="1000";endcase;endprocess;endarchitecturebehave;【例6.2】Moore狀態(tài)機(jī)的描述項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述進(jìn)程P2為主控組合邏輯進(jìn)程例6.2程序編譯后,在QuartusPrime20.1集成環(huán)境,選擇【Tool】菜單【NetlistViewers】選項(xiàng)【StateMachineViewer】命令,將產(chǎn)生例6.2描述的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖,如圖6.14所示。圖6.14狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述由圖可知,狀態(tài)機(jī)在異步復(fù)位后進(jìn)入S0態(tài)(state=S0),在第30ns時(shí)clk上升沿處,state=S0,data_in=0(≠1),狀態(tài)不變,保持處于S0態(tài),輸出data_out=0001;在30ns~50ns的一個(gè)時(shí)鐘周期內(nèi),一直保持輸出信號(hào)不變,雖然在40ns處,data_in變?yōu)?,但狀態(tài)并不改變,而是要到50ns時(shí),clk上升沿處才發(fā)生狀態(tài)轉(zhuǎn)變(S0態(tài)轉(zhuǎn)變?yōu)镾1態(tài))。說明了Moore狀態(tài)機(jī)在時(shí)鐘周期內(nèi)輸入信號(hào)發(fā)生變化,但輸出保持穩(wěn)定不變,屬于同步輸出狀態(tài)機(jī)。例6.2程序的功能仿真結(jié)果,如圖6.15所示。圖6.15Moore狀態(tài)機(jī)的仿真結(jié)果4.Mealy狀態(tài)機(jī)的VHDL程序描述Mealy狀態(tài)機(jī)的輸出是現(xiàn)態(tài)和所有輸入的函數(shù),隨輸入變化而隨時(shí)發(fā)生變化,Mealy狀態(tài)機(jī)典型的結(jié)構(gòu)如圖6.16所示。從時(shí)序上看,Mealy狀態(tài)機(jī)屬于異步輸出狀態(tài)機(jī),它不依賴于時(shí)鐘,狀態(tài)機(jī)的輸出在輸入發(fā)生變化后立即發(fā)生。項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述圖6.16Mealy狀態(tài)機(jī)的典型結(jié)構(gòu)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitymealyisport(clk,reset:instd_logic;
data_in:in
std_logic;
data_out:outstd_logic_vector(3downto0));endentitymealy;architecturebehaveofmealyistypestates_typeis(S0,S1,S2,S3);--定義states_type為枚舉數(shù)據(jù)類型signalstate:states_type;begin【例6.3】Mealy狀態(tài)機(jī)的描述項(xiàng)目6狀態(tài)機(jī)的VHDL程序描述P1:process(reset,clk)--主控時(shí)序進(jìn)程beginifreset='0'thenstate<=S0;elsif
clk='1'andclk'eventthen--上升沿觸發(fā)casestateiswhenS0=>ifdata_in='1'then--根據(jù)外部輸入的值確定次態(tài)的走向state<=S1;endif;whenS1=>ifdata_in='0'thenstate<=S2;endif;whenS2=>ifdata_in='1'thenstate<=S3;endif;whenS3=>ifdata_in='0'thenstate<=S0;endif;endcase; endif;endprocessP1;說明部分:使用type語句定義狀態(tài)機(jī)狀態(tài)P2:process(state,data_in)--主控組合進(jìn)程begi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)人才2024年薪金聘用協(xié)議書版
- 二零二五版冷鏈物流車輛貨物運(yùn)輸安全協(xié)議2篇
- 二零二五年藝術(shù)品搬運(yùn)運(yùn)輸服務(wù)合同3篇
- 二零二五版數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展合同范本2篇
- 2024施工合同匯集
- 二零二五年度鋼板租賃與節(jié)能減排服務(wù)協(xié)議3篇
- 個(gè)性化旅游顧問服務(wù)協(xié)議2024版版A版
- 2024版產(chǎn)品銷售協(xié)議6篇
- 二零二五年度高科技產(chǎn)業(yè)合伙人分家協(xié)議書3篇
- 二零二五年度智能工廠安全生產(chǎn)服務(wù)外包合同2篇
- 《用銳角三角函數(shù)解決問題(3)》參考課件
- 房地產(chǎn)營銷策劃 -佛山龍灣壹號(hào)學(xué)區(qū)房項(xiàng)目推廣策略提案方案
- 產(chǎn)品共同研發(fā)合作協(xié)議范本5篇
- 風(fēng)水學(xué)的基礎(chǔ)知識(shí)培訓(xùn)
- 2024年6月高考地理真題完全解讀(安徽?。?/a>
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國專家共識(shí)2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標(biāo)準(zhǔn)測(cè)(2022版)考試題庫及答案
- 施工組織設(shè)計(jì)方案針對(duì)性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論