版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
同步狀態(tài)機(jī)的原理、結(jié)構(gòu)和設(shè)計(jì)FSM狀態(tài)機(jī)分類Moore型狀態(tài)機(jī)設(shè)計(jì)狀態(tài)機(jī)復(fù)位Moore型狀態(tài)機(jī)信號(hào)輸出方法Mealy型狀態(tài)機(jī)狀態(tài)機(jī)容錯(cuò)設(shè)計(jì)狀態(tài)機(jī)一般定義(FiniteStateMachine,F(xiàn)SM)◆狀態(tài)機(jī)——
一個(gè)離散數(shù)學(xué)模型。給定一個(gè)輸入集合,根據(jù)對(duì)輸入的接受次序來(lái)決定一個(gè)輸出集合。(摩爾狀態(tài)機(jī))◆狀態(tài)——系統(tǒng)的基本數(shù)學(xué)特征?!粲邢逘顟B(tài)機(jī)——
輸入集合和輸出集合都是有限的,并只有有限數(shù)目的狀態(tài)。什么是狀態(tài)機(jī)有限狀態(tài)機(jī)(簡(jiǎn)稱狀態(tài)機(jī))相當(dāng)于一個(gè)控制器,它將一項(xiàng)功能的完成分解為若干步,每一步對(duì)應(yīng)于二進(jìn)制的一個(gè)狀態(tài),通過(guò)預(yù)先設(shè)計(jì)的順序在各狀態(tài)之間進(jìn)行轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換的過(guò)程就是實(shí)現(xiàn)邏輯功能的過(guò)程。
為什么使用狀態(tài)機(jī)有限狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。
設(shè)計(jì)方案相對(duì)固定,結(jié)構(gòu)模式簡(jiǎn)單,可定義符號(hào)化枚舉類型的狀態(tài)。狀態(tài)機(jī)的HDL描述層次分明,結(jié)構(gòu)清晰,易讀易懂。狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊。在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢(shì)。基于有限狀態(tài)機(jī)技術(shù)設(shè)計(jì)的控制器其工作速度大大優(yōu)于CPU。就可靠性而言,狀態(tài)機(jī)的優(yōu)勢(shì)也是十分明顯的?;谟邢逘顟B(tài)機(jī)技術(shù)設(shè)計(jì)的控制器其可靠性也優(yōu)于CPU。輸入集合A輸出集合X狀態(tài)記憶輸出形成狀態(tài)遷移狀態(tài)機(jī)一般結(jié)構(gòu)CLK組合邏輯時(shí)序邏輯同步當(dāng)前狀態(tài)后續(xù)狀態(tài)Sa1,a2,…,anx1,x2,…,xn狀態(tài)位置狀態(tài)名稱轉(zhuǎn)移方向輸入集合(觸發(fā)事件)輸出集合(執(zhí)行動(dòng)作)狀態(tài)等待狀態(tài)遷移圖nna1,a2,…,anx1,x2,…,xn狀態(tài)位置狀態(tài)名稱轉(zhuǎn)移方向輸入集合(觸發(fā)事件)輸出集合(執(zhí)行動(dòng)作)狀態(tài)等待狀態(tài)遷移圖S狀態(tài)編碼FSM應(yīng)用FSM通過(guò)狀態(tài)圖描述狀態(tài)轉(zhuǎn)換過(guò)程FSM:數(shù)字系統(tǒng)控制單元的建模數(shù)字系統(tǒng):受控模塊:功能模塊,設(shè)計(jì)較易控制模塊實(shí)現(xiàn)CPUFSM執(zhí)行耗費(fèi)時(shí)間,執(zhí)行時(shí)間的確定性方面,F(xiàn)SM優(yōu)于CPUFSM構(gòu)成FSM用來(lái)解決一般時(shí)序邏輯電路問(wèn)題,包括同步/異步時(shí)序邏輯狀態(tài)寄存器當(dāng)前狀態(tài)(現(xiàn)態(tài))寄存器組合邏輯電路下一狀態(tài)(次態(tài))組合邏輯輸出組合邏輯FSM分類Moore型:輸出信號(hào)僅與現(xiàn)態(tài)相關(guān)Mealy型:輸出信號(hào)與現(xiàn)態(tài)和輸入相關(guān)DFFsOutput
Comb.LogicFeedback
Comb.LogicDFFsOutput
Comb.LogicFeedback
Comb.LogicMooreMealy現(xiàn)態(tài)次態(tài)輸入輸出現(xiàn)態(tài)次態(tài)輸出輸入Moore型狀態(tài)機(jī)設(shè)計(jì)方法摩爾型狀態(tài)機(jī)的典型結(jié)構(gòu)Moore型狀態(tài)機(jī)設(shè)計(jì)方法
More型狀態(tài)機(jī)輸出僅和存儲(chǔ)電路的狀態(tài)有關(guān),與外部輸入無(wú)關(guān),即:
外部輸出是內(nèi)部狀態(tài)的函數(shù)。狀態(tài)轉(zhuǎn)移圖描述方式:Si/ZOiData_INiMealy型狀態(tài)機(jī)設(shè)計(jì)方法米勒型狀態(tài)機(jī)的典型結(jié)構(gòu)
Mealy型狀態(tài)機(jī)輸出不僅和存儲(chǔ)電路狀態(tài)有關(guān),還和外部輸入信號(hào)有關(guān),即:
外部輸出是內(nèi)部狀態(tài)和外部輸入的函數(shù)狀態(tài)圖描述方式:SiData_INi/ZOiMealy型狀態(tài)機(jī)設(shè)計(jì)方法Exampleofa5-stateMealyFSM
modulemealy(data_in,data_out,reset,clock);outputdata_out;input[1:0]data_in;inputreset,clock;regdata_out;reg[2:0]pres_state,next_state;parameterst0=3'd0,st1=3'd1,st2=3'd2,st3=3'd3,st4=3'd4;//FSMregisteralways@(posedgeclockornegedgereset)begin:stateregif(!reset)//asynchronousresetpres_state=st0;elsepres_state=next_state;end//statereg//FSMcombinationalblockalways@(pres_stateordata_in)begin:fsmcase(pres_state)st0:
case(data_in)2'b00:
next_state=st0;2'b01:
next_state=st4;2'b10:
next_state=st1;2'b11:
next_state=st2;endcasest1:
case(data_in)2'b00:
next_state=st0;2'b10:
next_state=st2;default:
next_state=st1;endcasest2:
case(data_in)2'b0x:
next_state=st1;2'b1x:
next_state=st3;endcasest3:
case(data_in)2'bx1:
next_state=st4;default:
next_state=st3;endcasest4:
case(data_in)2'b11:
next_state=st4;default:
next_state=st0;endcasedefault:
next_state=st0;endcaseend//fsm//Mealyoutputdefinitionusingpres_statew/data_inalways@(data_inorpres_state)begin:outputscase(pres_state)st0:
case(data_in)2'b00:
data_out=1'b0;default:
data_out=1'b1;endcasest1:
data_out=1'b0;st2:
case(data_in)2'b0x:
data_out=1'b0;default:
data_out=1'b1;endcasest3:
data_out=1'b1;st4:
case(data_in)2'b1x:
data_out=1'b1;default:
data_out=1'b0;endcasedefault:
data_out=1'b0;endcaseend//outputsendmoduleExampleofa5-stateMooreFSMmodulemoore(data_in,data_out,reset,clock);outputdata_out;input[1:0]data_in;inputreset,clock;regdata_out;reg[2:0]pres_state,next_state;parameterst0=3'd0,st1=3'd1,st2=3'd2,st3=3'd3,st4=3'd4;//FSMregisteralways@(posedgeclockornegedgereset)begin:stateregif(!reset)pres_state=st0;elsepres_state=next_state;end//statereg//FSMcombinationalblockalways@(pres_stateordata_in)begin:fsmcase(pres_state)st0:
case(data_in)2'b00:
next_state=st0;2'b01:
next_state=st4;2'b10:
next_state=st1;2'b11:
next_state=st2;endcasest1:
case(data_in)2'b00:
next_state=st0;2'b10:
next_state=st2;default:
next_state=st1;endcasest2:
case(data_in)2'b0x:
next_state=st1;2'b1x:
next_state=st3;endcasest3:
case(data_in)2'bx1:
next_state=st4;default:
next_state=st3;endcasest4:
case(data_in)2'b11:
next_state=st4;default:
next_state=st0;endcasedefault:
next_state=st0;endcaseend//fsm//Mooreoutputdefinitionusingpres_stateonlyalways@(pres_state)begin:outputscase(pres_state)st0:
data_out=1'b1;st1:
data_out=1'b0;st2:
data_out=1'b1;st3:
data_out=1'b0;st4:
data_out=1'b1;default:data_out=1'b0;endcaseend//outputsendmodule//Mooreverilog語(yǔ)言描述FSM的建立過(guò)程跟據(jù)具體要求分析控制過(guò)程,建立狀態(tài)轉(zhuǎn)移圖后:1。定義枚舉類型的信號(hào)描述狀態(tài)2。建立第1個(gè)always,描述次態(tài)組合邏輯,現(xiàn)態(tài)和輸入信號(hào)作為敏感量,3。在進(jìn)程中定義狀態(tài)轉(zhuǎn)移CASE語(yǔ)句的一條表示一個(gè)狀態(tài),狀態(tài)轉(zhuǎn)移通過(guò)IFELSE語(yǔ)句實(shí)現(xiàn)4。對(duì)于雙進(jìn)程FSM,建立第2個(gè)進(jìn)程,現(xiàn)態(tài)寄存器描述進(jìn)程,CLK,RST為敏感量;對(duì)于單進(jìn)程FSM,則在一個(gè)進(jìn)程中完成同步狀態(tài)轉(zhuǎn)移。Mealy狀態(tài)機(jī):如果時(shí)序邏輯的輸出不僅取決于狀態(tài)還取決于輸入,那么稱之為Mealy機(jī)。而有些時(shí)序邏輯電的輸出只取決于當(dāng)前狀態(tài),即輸出信號(hào)=G(當(dāng)前狀態(tài)),這樣的就稱為Moore狀態(tài)機(jī)。兩種電路結(jié)構(gòu)除了在輸出電路部分有些不同外,其他地方都是相同的。在設(shè)計(jì)高速電路時(shí),常常有必要使?fàn)顟B(tài)機(jī)的輸出與時(shí)鐘幾乎完全同步。有一個(gè)辦法是把狀態(tài)變量直接用作輸出,為此在指定狀態(tài)編碼時(shí)多費(fèi)一些腦力,有可能會(huì)多用幾個(gè)寄存器。設(shè)計(jì)告訴狀態(tài)機(jī)還有一個(gè)辦法,在輸出邏輯G后面再加一組與時(shí)鐘同步的寄存器輸出流水線寄存器,讓G所有的輸出信號(hào)在下一個(gè)時(shí)鐘跳變沿時(shí)同時(shí)存入寄存器組,即完全同步的輸出,這種輸出稱為流水線化的輸出的Mealy狀態(tài)機(jī)。Flip-FlopsFLIP-FLOPsaretrivialFSMsUsestatediagramstorememberflip-flopsfunctions10DDDDD10TTTTT10JKJKJK10S&RS&RSRSRFSMperformanceMaximumfrequencyofoperationiscomputedas:
Out1Q1Q2D2D1Q1Q2in1ClkNextState01outTnextstate
Tsetup
Td
Tout
FSMEquationsOut1Q1Q2D2D1Q1Q2in1ClkNextState01out010011in1in1in11in1StructureofaFSMwithtwoF-FsofDtypeSamplepartofastatediagramWhatvaluesofD1andD2willmovetheFSMtothestate01?FSMnextstateandoutputlogiccanbeeasilyderivedbyinspectingthestatediagram.TomovetheFSMtostate01thenextstatelogicmustproduce‘1’onD2and‘0’onD1.D2=Q2+=in1&00#in1&11#in1&01#...D1=Q1+=Out1Q1Q2D2D1Q1Q2in1ClkNextState01out010011in1in1in11in1comingfromstate:001101FSMEquationsTheoutputlogiccanbeeasilyderivedasalogicalsumofallthestateswhere‘1’ontheoutputisproduced(Moore).D2=Q1+=in1&00#in1&11#in1&01#...D1=Q1+=...D2=Q1+=in1&Q1&Q2#in1&Q1&Q2#in1&Q1&Q2#...Out1=Q1&Q2#....Out1Q1Q2D2D1Q1Q2in1ClkNextState01out010011in1in1in11in1FSMEquationsMoore型FSM信號(hào)輸出方法由狀態(tài)編碼位經(jīng)組合譯碼后輸出并行輸出寄存器的譯碼輸出狀態(tài)位里的編碼輸出一位有效編碼方式FSM輸出方法1由狀態(tài)編碼位經(jīng)組合譯碼后輸出delayFSM輸出方法2并行輸出寄存器的譯碼輸出FSM輸出方法3狀態(tài)位里的編碼輸出縮短輸出延時(shí)要求狀態(tài)位編碼與輸出信號(hào)要求的值相結(jié)合DFFsOutput
Comb.LogicFeedback
Comb.LogicFSM輸出方法4ONEHOT編碼使用N位狀態(tài)寄存器表達(dá)具有Ng狀態(tài)的FSM,每個(gè)狀態(tài)具有獨(dú)立的寄存器位。任意時(shí)刻只有1位寄存器為1,即hotpoint。此為onehot。Onehot編碼方程用簡(jiǎn)單的次態(tài)方程驅(qū)動(dòng),減少了狀態(tài)寄存器之間的組合邏輯級(jí)數(shù),因此提高了運(yùn)行速度。同時(shí)是以犧牲寄存器邏輯資源和提高成本為代價(jià)的。目標(biāo)器件具有較多寄存器資源,寄存器之間組合邏輯較少時(shí)比較適用。FSM的容錯(cuò)設(shè)計(jì)枚舉型數(shù)據(jù)狀態(tài)編碼在綜合時(shí)轉(zhuǎn)換為矢量信號(hào),狀態(tài)位數(shù)目=log2N,N:狀態(tài)數(shù)若log2N不為整數(shù),存在未定義狀態(tài),非法狀態(tài)。不考慮非法狀態(tài)則可減少設(shè)計(jì)的邏輯數(shù)目,考慮非法狀態(tài)則可降低系統(tǒng)容錯(cuò)性原因:干擾,噪聲,電源變化等引起觸發(fā)器翻轉(zhuǎn)誤入非法狀態(tài),造成死鎖。處理:轉(zhuǎn)入空閑態(tài);轉(zhuǎn)入指定態(tài);轉(zhuǎn)入預(yù)定義的錯(cuò)誤處理告警狀態(tài)default:State<=idle;---轉(zhuǎn)入空閑態(tài);default:State<=“XXXXX”;---忽略;對(duì)onehot型FSM,可編寫檢錯(cuò)程序,判斷是否同時(shí)又多個(gè)狀態(tài)寄存器為1,,若有做相應(yīng)出錯(cuò)處理。狀態(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)然必須滿足2N大于等于M。一位熱碼編碼方案:用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)表示。Choosebitvectorstoassigntoeach“symbolic”stateWithnstatebitsformstatesthereare2n!/(2n
–m)!stateassignments[logn<=m<=2n]2ncodespossiblefor1ststate,2n–1for2nd,2n–2for3rd,…HugenumberevenforsmallvaluesofnandmIntractableforstatemachinesofanysizeHeuristicsarenecessaryforpracticalsolutionsOptimizesomemetricforthecombinationallogicSize(amountoflogicandnumberofFFs)Speed(depthoflogicandfanout)Dependencies(decomposition)StateAssignmentStrategiesPossibleStrategiesSequential
–
justnumberstatesastheyappearinthestatetableRandom
–
pickrandomcodesOne-hot
–
useasmanystatebitsastherearestates(bit=1–>state)Output
–
useoutputstohelpencodestates(counters)Heuristic
–
rulesofthumbthatseemtoworkinmostcasesNoguaranteeofoptimality
–
anintractableproblemOne-hotStateAssignmentSimpleEasytoencode,debugSmallLogicFunctionsEachstatefunctionrequiresonlypredecessorstatebitsasinputGoodforProgrammableDevicesLotsofflip-flopsreadilyavailableSimplefunctionswithsmallsupport(signalsitsdependentupon)ImpracticalforLargeMachinesToomanystatesrequiretoomanyflip-flopsDecomposeFSMsintosmallerpiecesthatcanbeone-hotencodedManySlight
VariationstoOne-hot
–
“twohot”TheencodingstyleforanFSMhasahighimpactonthequalityoftheFSMimplementationintiming,area,power,andotherattributes.Someofthemostcommonencodingstylesinclude
one-hotencoding,Grayencoding,andminimumencoding.
Theone-hot-encodingstylemeansthatonlyonebitofthestateregisterscanbeatoneforanygivenstateoftheFSM.ahighernumberofregistersinthefinalimplementation.Thecombinational-logiccomplexityresultingfromone-hotencodingmaybecomparableorslightlymorethanotherencodingstyles,butthecombinationallogiccontrollingthedatainputofeachstateregistermaybesmaller,whichmaycontributetobettertimingperformance.Adesignermaychoosethisencodingstyleforitssimplicityanditstimingperformance.FPGAhaslotofregisterscomparedtoCPLD.soonehotismoresuitableforFPGAGrayencodingstatesforanytransitioninanFSMhaveonlyonedifferentbitintheirencodings.Becauseasingleregistercanchangevalueduringanytransition,Grayencodingisthebestchoiceforlowerpowerconsumption.Thenumberofregistersforencodingthestatesmaybesmall,butthecombinational-logiccomplexityfornext-stateandoutputgenerationisunpredictable.ItmaybedifficulttofindanoptimalGray-encodingschemeforlargeFSMswithmanytransitions.Minimumencodingtheminimumnumberofstateregisters,butthecontrollogicmaybemorecomplex.Adesignercanminimizethecombinationallogicwithcarefullyassignedencoding.Dependingonthelevelofoptimizationintheencoding,thisencodingstylemayresultingoodorpoortimingandareaperformance.Unlessadesignerdeploysanoptimizedencodingscheme,thisencodingstylemaybeapoorchoice.Useitifthetotalnumberofregistersinadesignisaconcern,butdon'tuseitifpoweristhemainconcern.Designersmaywanttoconsidercustomencodingasavariationoftheminimum-encodingstyle,whichaddsextrabitsorregisterstoaccomplishpower,area,ortiminggoals.Itdoesnothavetofollowtheone-hot-orGray-encodingstyle,anddesignersshouldnotuseitunlesstheproject'sperformancerequirementsjustifyitsuse.One-hotencoding->moreefficientforFPGAarchitectures.oneflip-flopperstateanddecreasedwidthofcombinatoriallogic.One-hotencodingisusuallythepreferredmethodforlargeFPGA-basedstatemachineimplementation.Forsmallstatemachines(fewerthan8states),binaryencodingmaybemoreefficient.Toimprovedesignperformance,youcandividelarge(greaterthan32states)statemachinesintoseveralsmallstatemachinesandusetheappropriateencodingstyleforeach.介紹一下獨(dú)熱編碼:ParameterIdle=4’b1000,Start=4’b0100, Stop=4’b0010,Clear=4’b0001;用獨(dú)熱編碼還是Gray碼要看具體情況而定。對(duì)于用FPGA實(shí)現(xiàn)的有限狀態(tài)機(jī)建議用獨(dú)熱碼,雖然獨(dú)熱碼多用了觸發(fā)器,但所用組合電路可省一些,因而使電路的速度和可靠性有顯著提高,而總的單元數(shù)并無(wú)顯著增加。采用獨(dú)熱編碼后出現(xiàn)的多余狀態(tài),在case語(yǔ)句的最后需要增加default分支項(xiàng)。確??梢曰氐絀dle。One-hot編碼的特點(diǎn)
組合邏輯最少,觸發(fā)器最多,工作時(shí)鐘頻率可以做到最高。
FPGA的一個(gè)最小結(jié)構(gòu)單元(CLB/LE)中含有查找表(實(shí)現(xiàn)組合邏輯)和DFF(實(shí)現(xiàn)時(shí)序邏輯),布局布線最好的結(jié)果是同一個(gè)結(jié)構(gòu)單元中的查找表和DFF都使用,但是大部分情況是僅使用其中一種資源,這樣另外的資源就是閑置而浪費(fèi)。而CPLD中DFF資源本來(lái)就很少,由此可見(jiàn)One-hot編碼更適合于FPGA設(shè)計(jì),而不適合CPLD設(shè)計(jì),在CPLD中應(yīng)該選擇二進(jìn)制編碼。
IC設(shè)計(jì)中,應(yīng)該綜合考慮。因?yàn)镺ne-hot編碼使用DFF會(huì)大大增加設(shè)計(jì)面積(diesize),因此在時(shí)序可以滿足的條件下盡可能使用二進(jìn)制編碼。就面積與速度的折中考慮來(lái)說(shuō)Gray碼是最好的選擇,當(dāng)然Gray碼還有其他很多好的特性,暫時(shí)不屬于這次討論的范疇。一般的綜合工具對(duì)狀態(tài)機(jī)進(jìn)行綜合時(shí)都可以讓用戶對(duì)這三種編碼進(jìn)行選擇?;疽罁?jù)就以上所說(shuō)。狀態(tài)機(jī)的編碼Binary、gray-code編碼使用最少的觸發(fā)器,較多的組合邏輯。而one-hot編碼反之。由于CPLD更多的提供組合邏輯資源,而FPGA更多的提供觸發(fā)器資源,所以CPLD多使用gray-code,而FPGA多使用one-hot編碼。另一方面,對(duì)于小型設(shè)計(jì)使用gray-code和binary編碼更有效,而大型狀態(tài)機(jī)使用one-hot更高效。IC設(shè)計(jì)中,應(yīng)該綜合考慮。因?yàn)镺ne-hot編碼使用DFF會(huì)大大增加設(shè)計(jì)面積(diesize),因此在時(shí)序可以滿足的條件下盡可能使用二進(jìn)制編碼。就面積與速度的折中考慮來(lái)說(shuō)Gray碼是最好的選擇,當(dāng)然Gray碼還有其他很多好的特性,暫時(shí)不屬于這次討論的范疇。一般的綜合工具對(duì)狀態(tài)機(jī)進(jìn)行綜合時(shí)都可以讓用戶對(duì)這三種編碼進(jìn)行選擇?;疽罁?jù)就以上所說(shuō)。設(shè)計(jì)有限狀態(tài)機(jī)的參考步驟:(5steps)邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖:就是把給出的一個(gè)實(shí)際邏輯關(guān)系表示為時(shí)序邏輯函數(shù)??梢杂脿顟B(tài)轉(zhuǎn)換表來(lái)描述,也可以用狀態(tài)轉(zhuǎn)換圖來(lái)描述。狀態(tài)化簡(jiǎn):如果在狀態(tài)轉(zhuǎn)換圖中出現(xiàn)這樣兩個(gè)狀態(tài):它們?cè)谙嗤妮斎胂罗D(zhuǎn)換到同一個(gè)狀態(tài)中,并得到相同的輸出,或稱它們?yōu)榈葍r(jià)狀態(tài)。顯然等價(jià)狀態(tài)是重復(fù)的,可以合并為一個(gè)。電路的狀態(tài)越少,存儲(chǔ)電路也就越簡(jiǎn)單。狀態(tài)分配:狀態(tài)分配又稱狀態(tài)編碼。通常有很多編碼方法,編碼方案選擇得當(dāng),設(shè)計(jì)的電路簡(jiǎn)單,反之,選得不好,則設(shè)計(jì)的電路就會(huì)復(fù)雜許多。選定觸發(fā)器的類型并求出狀態(tài)方程、驅(qū)動(dòng)方程和輸出方程按照方程得出邏輯圖用VerilogHDL來(lái)描述有限狀態(tài)機(jī),可以充分發(fā)揮硬件描述語(yǔ)言的抽象建模能力,使用always塊語(yǔ)句和case(if)等條件語(yǔ)句及賦值語(yǔ)句即可方便實(shí)現(xiàn)。具體的邏輯化簡(jiǎn)、邏輯電路和觸發(fā)器映射均可由計(jì)算機(jī)自動(dòng)完成,上述設(shè)計(jì)步驟中的第(2)布及(4)、(5)步不再需要很多的人為干預(yù),使電路設(shè)計(jì)工作得以簡(jiǎn)化,效率也大為提高。FSM描述風(fēng)格用Verilog語(yǔ)言描述有限狀態(tài)機(jī)可使用多種風(fēng)格,不同的風(fēng)格會(huì)極大地影響電路性能。通常有3種描述方式:?jiǎn)蝍lways塊、雙always塊和三always塊。
單always塊把組合邏輯和時(shí)序邏輯用同一個(gè)時(shí)序always塊描述,其輸出是寄存器輸出,無(wú)毛刺。但是這種方式會(huì)產(chǎn)生多余的觸發(fā)器,代碼難于修改和調(diào)試,應(yīng)該盡量避免使用。
FSM描述風(fēng)格雙always塊大多用于描述Mealy狀態(tài)機(jī)和組合輸出的Moore狀態(tài)機(jī),時(shí)序always塊描述當(dāng)前狀態(tài)邏輯,組合邏輯always塊描述次態(tài)邏輯并給輸出賦值。這種方式結(jié)構(gòu)清晰,綜合后的面積和時(shí)間性能好。但組合邏輯輸出往往會(huì)有毛刺,當(dāng)輸出向量作為時(shí)鐘信號(hào)時(shí),這些毛刺會(huì)對(duì)電路產(chǎn)生致命的影響。三always塊大多用于同步Mealy狀態(tài)機(jī),兩個(gè)時(shí)序always塊分別用來(lái)描述現(xiàn)態(tài)邏輯和對(duì)輸出賦值,組合always塊用于產(chǎn)生下一狀態(tài)。這種方式的狀態(tài)機(jī)也是寄存器輸出,輸出無(wú)毛刺,并且代碼比單always塊清晰易讀,但是面積大于雙always塊。隨著芯片資源和速度的提高,目前這種方式得到了廣泛應(yīng)用。Verilog三段式狀態(tài)機(jī)描述時(shí)序電路的狀態(tài)是一個(gè)狀態(tài)變量集合,這些狀態(tài)變量在任意時(shí)刻的值都包含了為確定電路的未來(lái)行為而必需考慮的所有歷史信息。狀態(tài)機(jī)采用VerilogHDL語(yǔ)言編碼,建議分為三個(gè)always段完成。三段式建模描述FSM的狀態(tài)機(jī)輸出時(shí),只需指定case敏感表為次態(tài)寄存器,然后直接在每個(gè)次態(tài)的case分支中描述該狀態(tài)的輸出即可,不用考慮狀態(tài)轉(zhuǎn)移條件。三段式描述方法雖然代碼結(jié)構(gòu)復(fù)雜了一些,但是換來(lái)的優(yōu)勢(shì)是:使FSM做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時(shí)序路徑分組,一般來(lái)說(shuō)在FPGA/CPLD等可編程邏輯器件上的綜合與布局布線效果更佳。三段式狀態(tài)機(jī)描述示列//第一個(gè)進(jìn)程,同步時(shí)序always模塊,格式化描述次態(tài)寄存器遷移到現(xiàn)態(tài)寄存器always@(posedgeclkornegedgerst_n)
//異步復(fù)位
if(!rst_n)
current_state<=IDLE;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 制造業(yè)務(wù)員工作總結(jié)
- 酒店管理崗位考核
- 美容行業(yè)前臺(tái)接待工作總結(jié)
- 教師團(tuán)隊(duì)專業(yè)培訓(xùn)
- 廚具行業(yè)采購(gòu)工作總結(jié)
- 2024年設(shè)備監(jiān)理師考試題庫(kù)帶答案
- 2024年熱的傳遞教案設(shè)計(jì)
- 創(chuàng)意市集活動(dòng)贊助合同(2篇)
- DB33T 2111-2018 福利彩票視頻型彩票銷售管理規(guī)范
- 安徽省阜陽(yáng)市阜南縣2025屆中考三模生物試題含解析
- 2024年醫(yī)療健康知識(shí)科普視頻制作合同3篇
- 廣東省廣州市花都區(qū)2024年七年級(jí)上學(xué)期期末數(shù)學(xué)試題【附答案】
- 期末測(cè)試模擬練習(xí) (含答案) 江蘇省蘇州市2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)
- 上海市徐匯區(qū)2024-2025學(xué)年高一語(yǔ)文下學(xué)期期末試題含解析
- 安全風(fēng)險(xiǎn)隱患舉報(bào)獎(jiǎng)勵(lì)制度
- 江蘇省蘇州市2023-2024學(xué)年高三上學(xué)期期末考試 數(shù)學(xué) 含答案
- 線性代數(shù)知到智慧樹章節(jié)測(cè)試課后答案2024年秋貴州理工學(xué)院
- 建筑幕墻工程檢測(cè)知識(shí)考試題庫(kù)500題(含答案)
- 安防主管崗位招聘面試題及回答建議(某大型集團(tuán)公司)2025年
- 消防疏散演練宣傳
- 2023-2024學(xué)年廣東省廣州市越秀區(qū)九年級(jí)(上)期末語(yǔ)文試卷
評(píng)論
0/150
提交評(píng)論