版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA技術(shù)8_狀態(tài)機(jī)深圳大學(xué)信息工程學(xué)院本章提要有限狀態(tài)機(jī)FSM簡(jiǎn)介FSM的分類:Moore機(jī)和Mealy機(jī)FSM的VHDL實(shí)現(xiàn)同步系統(tǒng)設(shè)計(jì)原則方法:所有輸入到觸發(fā)器,寄存器和計(jì)數(shù)器等部件的時(shí)鐘,必須是由系統(tǒng)時(shí)鐘直接驅(qū)動(dòng)的。結(jié)果:所有的狀態(tài)變化均在時(shí)鐘的有效沿(risingorfallingedges)發(fā)生。優(yōu)勢(shì):所有的開(kāi)關(guān)暫態(tài),開(kāi)關(guān)噪聲和其他干擾均發(fā)生在時(shí)鐘脈沖間,對(duì)系統(tǒng)性能沒(méi)有影響。*系統(tǒng)的最大時(shí)鐘頻率由最長(zhǎng)路徑的最大延遲決定深圳大學(xué)信息工程學(xué)院同步時(shí)序電路的構(gòu)成示意圖深圳大學(xué)信息工程學(xué)院有限狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖圖形表示:狀態(tài)、轉(zhuǎn)移、條件和邏輯開(kāi)關(guān)6FSM是為時(shí)序電路設(shè)計(jì)而創(chuàng)建的特殊模型技術(shù),在針對(duì)任務(wù)順序非常明確的電路(如交通燈控制器)是非常實(shí)用。理論上,任何時(shí)序電路都可以建立FSM模型,但并不總是一種高效的方法。如果一味地追求使用FSM來(lái)設(shè)計(jì)時(shí)序電路,可能會(huì)導(dǎo)致代碼冗長(zhǎng)和容易出錯(cuò)。例如,任務(wù)簡(jiǎn)單的寄存器就不必使用FSM方式實(shí)現(xiàn)。又例如,雖然任務(wù)與順序很明確,但任務(wù)數(shù)目太多或者性能要求較高時(shí),也不宜用FSM方式實(shí)現(xiàn)。狀態(tài)機(jī)的設(shè)計(jì)包含兩個(gè)主要過(guò)程,一是狀態(tài)機(jī)的建模,二是狀態(tài)機(jī)的編碼。有限狀態(tài)機(jī)(FiniteStateMachine,FSM)7組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_state狀態(tài)機(jī)的組成:如圖。狀態(tài)機(jī)的種類:
Mealy型:當(dāng)前狀態(tài)、當(dāng)前輸入相關(guān)Moore型:僅當(dāng)前狀態(tài)相關(guān)VHDL代碼結(jié)構(gòu):
時(shí)序邏輯部分:process內(nèi)部
組合邏輯部分:在使用FSM方式設(shè)計(jì)VHDL代碼時(shí),通常會(huì)在結(jié)構(gòu)體的開(kāi)始部分插入一個(gè)用戶自定義的枚舉數(shù)據(jù)類型,其中包含所有可能出現(xiàn)的電路狀態(tài)。8設(shè)計(jì)風(fēng)格#1一種結(jié)構(gòu)清晰、易于實(shí)現(xiàn)的FSM設(shè)計(jì)風(fēng)格:FSM中的時(shí)序邏輯部分和組合邏輯部分分別獨(dú)立設(shè)計(jì);定義一個(gè)枚舉數(shù)據(jù)類型,內(nèi)部包含所有FSM需要的狀態(tài);9組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_stateFSM中時(shí)序邏輯部分的設(shè)計(jì)特點(diǎn):確定的輸入/輸出端口典型的模板可供使用------------lowersection---------------process(clock,reset)beginif(reset='1‘)thenpr_state<=state0;elsif(clock’eventandclock=‘1’)thenpr_state<=nx_state;endif;endprocess;標(biāo)準(zhǔn)的設(shè)計(jì)寄存器數(shù)目少:默認(rèn)的編碼方式下,log2n表現(xiàn)為位寬10組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_stateFSM中組合邏輯部分的設(shè)計(jì)特點(diǎn):并發(fā)代碼、順序代碼皆可;順序代碼方式的設(shè)計(jì)模板process的敏感信號(hào)列表完整列出IN/OUT組合無(wú)邊沿賦值,無(wú)寄存器生成------------uppersection---------------process(input,pr_state)begin
casepr_stateiswhenstate0=>//多個(gè)條件轉(zhuǎn)移分支if(input=...)thenoutput<=<value>;nx_state<=state1;else....;endif;whenstate1=>if(input=...)thenoutput<=<value>;nx_state<=state2;else....;endif;......endcase;endprocess;11設(shè)計(jì)風(fēng)格#1的狀態(tài)機(jī)模板
libraryieee;useieee.std_logic_1164.all;entity<entity_name>isport(input:in<data_type>;reset,clock:instd_logic;output:out<data_type>);end<entity_name>;architecture<arch_name>of<entity_name>is
typestateis(state0,state1,state2,state3,...);signalpr_state,nx_state:state;begin------------lowersection---------------process(clock,reset)beginif(reset='1‘)thenpr_state<=state0;elsif(clock’eventandclock=‘1’)thenpr_state<=nx_state;endif;endprocess;------------uppersection---------------process(input,pr_state)begincasepr_stateiswhenstate0=>if(input=...)thenoutput<=<value>;nx_state<=state1;else....;endif;whenstate1=>if(input=...)thenoutput<=<value>;nx_state<=state2;else....;endif;......endcase;endprocess;end<arch_name>兩個(gè)進(jìn)程并發(fā)執(zhí)行12例8.1
模10計(jì)數(shù)器功能描述:狀態(tài)轉(zhuǎn)移圖特點(diǎn)分析:摩爾型狀態(tài)機(jī)設(shè)計(jì)分析:狀態(tài)較多,枚舉很不方便,僅作為例子參考,不推薦實(shí)際應(yīng)用。zero(0000)one(0001)two(0010)three(0011)four(0100)five(0101)nine(1001)eight(1000)seven(0111)six(0110)rst13libraryieee;useieee.std_logic_1164.all;entitycounterisport(--無(wú)輸入數(shù)據(jù)--rst,clk:instd_logic;count:outstd_logic_vector(3downto0));endcounter;architecturestate_machineofcounteris
typestateis(zero,one,two,three,four,five,six,seven,eight,nine);signalpr_state,nx_state:state;begin------------lowersection---------------process(clk,rst)beginif(rst='1‘)thenpr_state<=
zero;elsif(clk’eventandclock=‘1’)thenpr_state<=nx_state;endif;endprocess;------------uppersection---------------process(pr_state)---無(wú)輸入數(shù)據(jù)---begincasepr_stateiswhenzero=>count<=“0000”;nx_state<=one;whenone=>count<=“0001”;nx_state<=two;whentwo=>count<=“0010”;nx_state<=three;......whennine=>count<=“1001”;nx_state<=zero;endcase;endprocess;endstate_machine;兩個(gè)進(jìn)程并發(fā)執(zhí)行代碼實(shí)現(xiàn):所需寄存器個(gè)數(shù):上限[log210]=414例8.2簡(jiǎn)單的FSM#1功能描述:FSMxabdclkrststateA(x=a)stateB(x=b)d=0d=0d=1d=1rst15entitysimple_fsmisport(a,b,c,d,rst,clk:inBIT;x:outBIT);endsimple_fsm;architecturesimple_fsmofsimple_fsmis
typestateis(stateA,stateB);signalpr_state,nx_state:state;begin------------lowersection---------------process(clk,rst)beginif(rst='1‘)thenpr_state<=
stateA;elsif(clk’eventandclock=‘1’)thenpr_state<=nx_state;endif;endprocess;------------uppersection---------------process(a,b,c,d,pr_state)begincasepr_stateiswhenstateA=>x<=a;if(d=‘1’)thennx_state<=stateB;elsenx_state<=stateA;endif;whenstateB=>x<=b;if(d=‘1’)thennx_state<=stateA;elsenx_state<=stateB;endif;endcase;endprocess;endsimple_fsm;代碼實(shí)現(xiàn):所需寄存器個(gè)數(shù):1個(gè),用于存儲(chǔ)兩個(gè)狀態(tài)編碼。168.3設(shè)計(jì)風(fēng)格#2
在很多應(yīng)用中(如波形整齊、流水線技術(shù)等),需要同步的寄存器輸出,即需先使用寄存器存儲(chǔ)起來(lái),然后在時(shí)鐘邊沿時(shí)才進(jìn)行更新,如圖b:17設(shè)計(jì)風(fēng)格#2的狀態(tài)機(jī)模板—使用輔助信號(hào)如temp
libraryieee;useieee.std_logic_1164.all;entity<entity_name>isport(input:in<data_type>;reset,clock:instd_logic;output:out<data_type>);end<entity_name>;architecture<arch_name>of<entity_name>istypestateis(state0,state1,state2,state3,...);signalpr_state,nx_state:state;
signaltemp:<data_type>;begin------------lowersection---------------process(clock,reset)beginif(reset='1‘)thenpr_state<=state0;elsif(clock’eventandclock=‘1’)then
output<=temp;pr_state<=nx_state;endif;endprocess;------------uppersection---------------process(pr_state)----Mealy型狀態(tài)機(jī)begincasepr_stateiswhenstate0=>
temp<=<value>;if(condition)thennx_state<=state1;....;endif;whenstate1=>
temp<=<value>;if(condition)thennx_state<=state2;....;endif;......endcase;endprocess;end<arch_name>temp信號(hào)將輸出結(jié)果存儲(chǔ)起來(lái),只有當(dāng)所需時(shí)鐘邊沿到來(lái)時(shí)才被賦值給輸出端口18entitysimple_fsmisport(a,b,c,d,rst,clk:inBIT;x:outBIT);endsimple_fsm;architecturesimple_fsmofsimple_fsmistypestateis(stateA,stateB);signalpr_state,nx_state:state;
signaltemp:BIT;begin------------lowersection---------------process(clk,rst)beginif(rst='1‘)thenpr_state<=stateA;elsif(clk’eventandclock=‘1’)thenpr_state<=nx_state;
x<=temp;endif;endprocess;------------uppersection---------------process(a,b,c,d,pr_state)begincasepr_stateiswhenstateA=>
temp<=a;if(d=‘1’)thennx_state<=stateB;elsenx_state<=stateA;endif;whenstateB=>
temp<=b;if(d=‘1’)thennx_state<=stateA;elsenx_state<=stateB;endif;endcase;endprocess;endsimple_fsm;所需寄存器個(gè)數(shù):2個(gè),一個(gè)用于存儲(chǔ)兩個(gè)狀態(tài)編碼,另一個(gè)用于存儲(chǔ)同步輸出結(jié)果。例8.3:用FSM#2實(shí)現(xiàn)例8.2:--同步輸出198.4狀態(tài)機(jī)的編碼風(fēng)格—二進(jìn)制碼和獨(dú)熱碼(1)狀態(tài)機(jī)編碼的概念:在設(shè)計(jì)狀態(tài)機(jī)時(shí),需要對(duì)狀態(tài)機(jī)的狀態(tài)進(jìn)行編碼,從而決定需要使用的寄存器數(shù)目。(2)狀態(tài)機(jī)編碼的方式:二進(jìn)制編碼、一位熱獨(dú)碼、兩位獨(dú)熱碼或其它編碼方式,默認(rèn)的方式是二進(jìn)制編碼。例:8狀態(tài)FSM的狀態(tài)編碼20(3)不同的編碼方式所需要的觸發(fā)器數(shù)目和組合邏輯資源是不同的:
二進(jìn)制編碼:需要寄存器數(shù)目最少,但所需組合邏輯最多,速度最慢;這些特性對(duì)于PAL和門(mén)陣列結(jié)構(gòu)是可以接受的。但是因?yàn)镕PGA具有許多觸發(fā)器和較少的組合邏輯資源,高編碼的狀態(tài)變量會(huì)導(dǎo)致低的FPGA速度和密度的實(shí)現(xiàn)效率。一位獨(dú)熱編碼(One-HotEncoding):就是使每個(gè)狀態(tài)占用狀態(tài)寄存器的一位。這種編碼方法看起來(lái)好像很浪費(fèi)資源,例如,對(duì)于一位熱獨(dú)碼編碼來(lái)說(shuō),一個(gè)具有16個(gè)狀態(tài)的在限狀態(tài)機(jī)需要16個(gè)觸發(fā)器,但如果使用二進(jìn)制編碼,則只需要4個(gè)觸發(fā)器。但是,一位有效編碼方法可以簡(jiǎn)化組合邏輯和邏輯之間的內(nèi)部連接。一位熱獨(dú)碼編碼可以產(chǎn)生較小的并且更快的有效狀態(tài)機(jī)。這對(duì)于順序邏輯資源比組合邏輯資源更豐富的可編程ASIC來(lái)說(shuō),是比較有效的編碼方式。特別是對(duì)于FPGA結(jié)構(gòu)來(lái)說(shuō),一位熱獨(dú)碼編碼是最好的狀態(tài)編碼方式。另外,One-hot編碼所需的組合邏輯最少,觸發(fā)器最多,工作時(shí)鐘頻率可以做到最高。21雙熱碼:介于二進(jìn)制編碼和獨(dú)熱編碼之間,每一次狀態(tài)變化都會(huì)帶來(lái)兩個(gè)位的跳變,使用n個(gè)寄存器可以實(shí)現(xiàn)對(duì)n(n-1)/2個(gè)狀態(tài)進(jìn)行編碼。
Gray碼:就面積與速度的折中考慮來(lái)說(shuō)是最好的選擇,當(dāng)然Gray碼還有其他很多好的特性,暫時(shí)不屬于這次討論的范疇。其他編碼方式(4)狀態(tài)機(jī)編碼方式的選擇:一般的綜合工具對(duì)狀態(tài)機(jī)進(jìn)行綜合時(shí)都可以讓用戶對(duì)這三種編碼進(jìn)行選擇。對(duì)于大的基于FPGA的狀態(tài)機(jī)的實(shí)現(xiàn)來(lái)說(shuō),一位有效編碼是最佳的方法。對(duì)于較少狀態(tài)的有限狀態(tài)機(jī)(小于8個(gè)狀態(tài)),二進(jìn)制編碼可能更有效。為了提高狀態(tài)機(jī)的設(shè)計(jì)性能,可以將大的狀態(tài)機(jī)(大于32個(gè)狀態(tài))分為幾個(gè)小的狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)都使用合適的編碼方式。主干路(major)次要馬路(minor)傳感器(sensor)常態(tài):主干路綠燈,次要馬路紅燈變態(tài):有小車(chē)在次要馬路行使,主干路紅燈,次要馬路綠燈。燈變化時(shí),計(jì)數(shù)器開(kāi)始工作。記時(shí)完成,燈恢復(fù)常態(tài)。輸入次要馬路的車(chē),car計(jì)數(shù)器完成記時(shí),timed輸出主干路燈次要馬路燈啟動(dòng)計(jì)數(shù)器(start_timer)例8.4:用FSM實(shí)現(xiàn)交通燈控制交通燈控制器major=greenminor=redcarstart_timermajor=redminor=greentimedGR00112態(tài)(G,R)狀態(tài)框,包含輸出:主干路燈G,次要路燈R判斷框,條件:car,timed條件輸出框,與輸出信號(hào)在同一個(gè)周期里被置位(set)交通燈控制器交通燈控制器交通燈控制器交通燈控制器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;ENTITYtraffic_light_ctrlISPORT(clk:INSTD_LOGIC;car:INSTD_LOGIC;timed:INSTD_LOGIC;major_green:OUTSTD_LOGIC;manir_gree:OUTSTD_LOGIC;start_timer:OUTSTD_LOGIC);ENDtraffic_light_ctrl;交通燈控制器ARCHITECTURErtlOFtraffic_light_ctrlISTYPEstate_typeIS(G,R);SIGNALp_state,n_state:state_type;
BEGIN交通燈控制器seq_proc:PROCESS(clk)ISBEGINIFRISING_EDGE(clk)THENp_state<=n_state;ENDIF;ENDPROCESSseq_proc;交通燈控制器comb_proc:PROCESS(car,timed,p_state)BEGINstart_timer<='0';CASEp_stateISWHENG=>major_green<='1';minor_green<='0';IF(car='1')THENstart_timer<='1';n_state<=R;ELSEn_state<=G;ENDIF;交通燈控制器WHENR=>major_green<='0';minor_green<='1';IF(timed='1')THENn_state<=G;ELSEn_state<=R;ENDIF;ENDCASE;ENDPROCESScomb_proc;
ENDrtl;同步有限狀態(tài)機(jī)種類Moore和Mealy機(jī)Moore機(jī)僅輸出當(dāng)前狀態(tài)的函數(shù)Mealy機(jī)輸出的是當(dāng)前狀態(tài)和輸入的函數(shù)深圳大學(xué)信息工程學(xué)院Mealy狀態(tài)機(jī)
下一個(gè)狀態(tài)=F(當(dāng)前狀態(tài),輸入信號(hào));
輸出信號(hào)=G(當(dāng)前狀態(tài),輸入信號(hào));
深圳大學(xué)信息工程學(xué)院Moore狀態(tài)機(jī)
下一個(gè)狀態(tài)=F(當(dāng)前狀態(tài),輸入信號(hào))
輸出信號(hào)=G(當(dāng)前狀態(tài));
算法狀態(tài)機(jī)ASM算法狀態(tài)機(jī)(AlgorithmicStateMachine)和軟件的流程圖相似,但包含隱含的時(shí)序信息比狀態(tài)圖更容易讓人理解電路的執(zhí)行過(guò)程常用來(lái)描述復(fù)雜的時(shí)序系統(tǒng)用狀態(tài)的變化來(lái)描述系統(tǒng)算法狀態(tài)機(jī)ASM狀態(tài)輸出值Y=AJ01Z=1(a)狀態(tài)框(b)判斷框(c)條件輸出框1011判斷框深圳大學(xué)信息工程學(xué)院J01判斷框表示狀態(tài)變量對(duì)控制器工作的影響注意:判斷框不占用時(shí)間狀態(tài)框深圳大學(xué)信息工程學(xué)院如果一個(gè)信號(hào)沒(méi)有被賦值,則它在此狀態(tài)被置位,而在其它狀態(tài)被復(fù)位。一個(gè)狀態(tài)框占用一個(gè)時(shí)鐘脈沖周期條件輸出框深圳大學(xué)信息工程學(xué)院條件框的入口必定與判斷框的輸出相連。注意:條件輸出框的輸出信號(hào)與它所屬的狀態(tài)框的輸出信號(hào)(包括判斷框)在同一時(shí)鐘周期內(nèi)被置位。深圳大學(xué)信息工程學(xué)院ASM圖的綜合–狀態(tài)賦值狀態(tài)越多,可能的賦值數(shù)目隨之增加如果狀態(tài)表中有m個(gè)狀態(tài)
,則需要n個(gè)觸發(fā)器
One-hot編碼,需要m個(gè)觸發(fā)器
三個(gè)狀態(tài):001,010,100每次只有一個(gè)觸發(fā)器被置位次態(tài)邏輯可能比較簡(jiǎn)單對(duì)于可編程的邏輯器件,‘one-hot’編碼系統(tǒng)使用的的資源可能會(huì)比用最少數(shù)量觸發(fā)器的系統(tǒng)使用少檢查系統(tǒng)故障相對(duì)容易些ASMEXAMPLE1-
序列檢測(cè)器檢測(cè)輸入X中是否含有101串如果輸入X中含有101時(shí),那么當(dāng)輸入串101中最后一個(gè)1出現(xiàn)時(shí),與此同步就有輸出Z=1,且Z=1時(shí)電路不復(fù)位。X=0011011001010100Z=0000010000010100Mealy機(jī) VS Moore機(jī)Moore機(jī)需要更多的狀態(tài),不過(guò)更容易設(shè)計(jì)和調(diào)試Moore機(jī)的輸出不是在狀態(tài)轉(zhuǎn)移過(guò)程中產(chǎn)生的,而是完全由狀態(tài)本身決定Mealy機(jī)Moore機(jī)s0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000111Z=1X=1s3T10ASM圖的綜合–序列檢測(cè)器(Mealy)當(dāng)前狀態(tài)下一狀態(tài)當(dāng)前輸出ZX=0X=1X=0X=1S0S0S100S1S2S100S2S0S101ABA’B’ZX=0X=1X=0X=1S0000100S1100100S2000101布爾量狀態(tài)表One-hotvs.Binarystateassignments0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110ASM圖的綜合–序列檢測(cè)器(Mealy)XAB010000011011XX1000XAB010001010111XX1001XAB010000010011XX1001B’=XZ=XandAA’B’Z輸出由當(dāng)前狀態(tài)及輸入決定A’=(notX)andBASM圖的綜合–序列檢測(cè)器(Mealy)次態(tài)邏輯寄存器輸出邏輯B’=XZ=XandAA’=(notX)andBASM圖的綜合–序列檢測(cè)器(Moore)當(dāng)前狀態(tài)下一狀態(tài)當(dāng)前輸出ZX=0X=1X=0X=1S0S0S100S1S2S100S2S0S300S3S2S111ABA’B’ZX=0X=1S000010S110010S200110S310011布爾量狀態(tài)表s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000110Z=1X=1s3T11ASM圖的綜合–序列檢測(cè)器(Moore)XAB010000011010011110XAB010001010110011101XAB0000010100111B’=XZ=AandBA’B’Z輸出由當(dāng)前狀態(tài)決定A’=(AandnotBandX)or(BandnotX)深圳大學(xué)信息工程學(xué)院ASM圖的綜合–序列檢測(cè)器(Moore)次態(tài)邏輯寄存器輸出邏輯A’=ABX+BXB’=XZ=ABFSM的VHDL實(shí)現(xiàn)FSM中時(shí)序邏輯部分設(shè)計(jì)FSM中組合邏輯部分設(shè)計(jì)
在比較復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)過(guò)程中,往往把狀態(tài)的變化與輸出開(kāi)關(guān)的控制分成兩部分來(lái)考慮。使用這種方法進(jìn)行設(shè)計(jì)時(shí),F(xiàn)SM中的狀態(tài)變化(時(shí)序邏輯部分)和開(kāi)關(guān)控制(組合邏輯部分)分開(kāi)獨(dú)立設(shè)計(jì)。
FSM中時(shí)序邏輯部分設(shè)計(jì)時(shí)序邏輯部分包含寄存器,clock和reset都與之相連,在process中實(shí)現(xiàn),任何一種順序描述語(yǔ)句都可以使用。51 PROCESS(reset,Clock) BEGIN IF(reset='1')THEN
pre_state<=state0; ELSIF(Clock‘eventandclock=‘1’)
THENpre_state<=nx_state;ENDIF; ENDPROCESS;FSM中組合邏輯部分設(shè)計(jì)對(duì)于組合邏輯電路而言,通常采用并發(fā)代碼實(shí)現(xiàn),但是通常在process中使用順序代碼來(lái)實(shí)現(xiàn)FSM輸出控制部分。52 PROCESS(input,pr_state) BEGINCASEpr_stateIS WHENstate0=>
IF(input=…)THEN
output<=<value1>;
nx_state<=state1;
ELSE…
ENDIF;WHENstate1=>
IF(input=…)THEN
output<=<value2>;
nx_state<=state2;
ELSE…
ENDIF;
WHENstate2=>
IF(input=…)THEN
output<=<value2>;
nx_state<=state2;
ELSE…
ENDIF;
WHENstate3=>
IF(input=…)THEN
output<=<value3>;
nx_state<=state3;
ELSE…
ENDIF;
ENDCASE; ENDPROCESS;ASM圖的VHDL描述-序列檢測(cè)器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;
--sequentialdetector--MealymachineENTITYseq_detectorISPORT(clk:INstd_logic;i_X:INstd_logic;o_Z:OUTstd_logic);ENDseq_detector;ASM圖的VHDL描述-序列檢測(cè)器ARCHITECTURErtlOFseq_detectorIS--binarystateassignmenttypestate_typeis(s0,s1,s2);signalpresent_state,next_state:state_type:=s0;
--one-hotencoder--constants0:std_logic_vector(2downto0):="001";--constants1:std_logic_vector(2downto0):="010";--constants2:std_logic_vector(2downto0):="100";
--signalpresent_state,next_state:std_logic_vector(2downto0);
--actualassignment--present_state<=s0;
BEGINProcess(clk)Beginif(clk’eventandclk=‘1’)thenpresent_state<=next_state;endEndprocess;comb_proc:process(next_state,i_X)isbegino_Z<='0';casepresent_stateiswhens0=>ifi_X='1'thennext_state<=s1;endif;whens1=>ifi_X='0'thennext_state<=s2;endif;ASM圖的VHDL描述-序列檢測(cè)器whens2=>ifi_X='1'thennext_state<=s1;o_Z<='1';elsenext_state<=s0;endif;
endcase;endprocesscomb_proc;
ENDrtl;ASM圖的VHDL描述-序列檢測(cè)器57功能描述:特點(diǎn)分析:波形在clk的上升沿才發(fā)生跳變,是與例8.6的最大不同之處。設(shè)計(jì)方法:
1、FSM方法;2、傳統(tǒng)的方法:周期計(jì)數(shù)。clk波形1個(gè)周期EXAMPLE3---信號(hào)發(fā)生器58采用FSM方法進(jìn)行設(shè)計(jì):設(shè)計(jì)思路:①使用8個(gè)狀態(tài)的FSM,并使用模8計(jì)數(shù)器的計(jì)數(shù)值代表這8個(gè)狀態(tài)。當(dāng)count為0時(shí),進(jìn)入第一個(gè)狀態(tài),將輸出電平置為低電平;當(dāng)count為1時(shí),進(jìn)入第二個(gè)狀態(tài),將輸出電平置為高電平;以此類推,即可得圖中輸出波形。②另外,由于信號(hào)發(fā)生器中不允許出現(xiàn)毛刺,須使用FSM設(shè)計(jì)風(fēng)格#2,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北京信息職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年保險(xiǎn)職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年云南經(jīng)貿(mào)外事職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 語(yǔ)義網(wǎng)絡(luò)構(gòu)建與應(yīng)用-洞察分析
- 2025年義烏工商職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年上海出版印刷高等??茖W(xué)校高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 退化土地生態(tài)重建-洞察分析
- 絲綢印染AI質(zhì)量控制-洞察分析
- 現(xiàn)代農(nóng)業(yè)產(chǎn)業(yè)鏈升級(jí)-洞察分析
- 預(yù)測(cè)性維護(hù)時(shí)間序列分析-洞察分析
- 課題申報(bào)書(shū):GenAI賦能新質(zhì)人才培養(yǎng)的生成式學(xué)習(xí)設(shè)計(jì)研究
- 駱駝祥子-(一)-劇本
- 全國(guó)醫(yī)院數(shù)量統(tǒng)計(jì)
- 2024年醫(yī)美行業(yè)社媒平臺(tái)人群趨勢(shì)洞察報(bào)告-醫(yī)美行業(yè)觀察星秀傳媒
- 電工(中級(jí)工)理論知識(shí)練習(xí)題(附參考答案)
- 工業(yè)設(shè)計(jì)概論試題
- 2024-2030年中國(guó)商務(wù)服務(wù)行業(yè)市場(chǎng)現(xiàn)狀調(diào)查及投資前景研判報(bào)告
- 高一英語(yǔ)必修一試卷(含答案)(適合測(cè)試)
- 中國(guó)的世界遺產(chǎn)智慧樹(shù)知到期末考試答案2024年
- 中國(guó)綠色食品市場(chǎng)調(diào)查與分析報(bào)告
- 手衛(wèi)生依從性調(diào)查表
評(píng)論
0/150
提交評(píng)論