同步狀態(tài)機(jī)的原理、結(jié)構(gòu)與設(shè)計(jì)_第1頁
同步狀態(tài)機(jī)的原理、結(jié)構(gòu)與設(shè)計(jì)_第2頁
同步狀態(tài)機(jī)的原理、結(jié)構(gòu)與設(shè)計(jì)_第3頁
同步狀態(tài)機(jī)的原理、結(jié)構(gòu)與設(shè)計(jì)_第4頁
同步狀態(tài)機(jī)的原理、結(jié)構(gòu)與設(shè)計(jì)_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

同步狀態(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ī)信號輸出方法Mealy型狀態(tài)機(jī)狀態(tài)機(jī)容錯設(shè)計(jì)狀態(tài)機(jī)一般定義(FiniteStateMachine,F(xiàn)SM)◆狀態(tài)機(jī)——

一個離散數(shù)學(xué)模型。給定一個輸入集合,根據(jù)對輸入的接受次序來決定一個輸出集合。(摩爾狀態(tài)機(jī))◆狀態(tài)——系統(tǒng)的基本數(shù)學(xué)特征?!粲邢逘顟B(tài)機(jī)——

輸入集合和輸出集合都是有限的,并只有有限數(shù)目的狀態(tài)。什么是狀態(tài)機(jī)有限狀態(tài)機(jī)(簡稱狀態(tài)機(jī))相當(dāng)于一個控制器,它將一項(xiàng)功能的完成分解為若干步,每一步對應(yīng)于二進(jìn)制的一個狀態(tài),通過預(yù)先設(shè)計(jì)的順序在各狀態(tài)之間進(jìn)行轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換的過程就是實(shí)現(xiàn)邏輯功能的過程。

為什么使用狀態(tài)機(jī)有限狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。

設(shè)計(jì)方案相對固定,結(jié)構(gòu)模式簡單,可定義符號化枚舉類型的狀態(tài)。狀態(tài)機(jī)的HDL描述層次分明,結(jié)構(gòu)清晰,易讀易懂。狀態(tài)機(jī)容易構(gòu)成性能良好的同步時序邏輯模塊。在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢?;谟邢逘顟B(tài)機(jī)技術(shù)設(shè)計(jì)的控制器其工作速度大大優(yōu)于CPU。就可靠性而言,狀態(tài)機(jī)的優(yōu)勢也是十分明顯的?;谟邢逘顟B(tài)機(jī)技術(shù)設(shè)計(jì)的控制器其可靠性也優(yōu)于CPU。輸入集合A輸出集合X狀態(tài)記憶輸出形成狀態(tài)遷移狀態(tài)機(jī)一般結(jié)構(gòu)CLK組合邏輯時序邏輯同步當(dāng)前狀態(tài)后續(xù)狀態(tài)Sa1,a2,…,anx1,x2,…,xn狀態(tài)位置狀態(tài)名稱轉(zhuǎn)移方向輸入集合(觸發(fā)事件)輸出集合(執(zhí)行動作)狀態(tài)等待狀態(tài)遷移圖nna1,a2,…,anx1,x2,…,xn狀態(tài)位置狀態(tài)名稱轉(zhuǎn)移方向輸入集合(觸發(fā)事件)輸出集合(執(zhí)行動作)狀態(tài)等待狀態(tài)遷移圖S狀態(tài)編碼FSM應(yīng)用FSM通過狀態(tài)圖描述狀態(tài)轉(zhuǎn)換過程FSM:數(shù)字系統(tǒng)控制單元的建模數(shù)字系統(tǒng):受控模塊:功能模塊,設(shè)計(jì)較易控制模塊實(shí)現(xiàn)CPUFSM執(zhí)行耗費(fèi)時間,執(zhí)行時間的確定性方面,F(xiàn)SM優(yōu)于CPUFSM構(gòu)成FSM用來解決一般時序邏輯電路問題,包括同步/異步時序邏輯狀態(tài)寄存器當(dāng)前狀態(tài)(現(xiàn)態(tài))寄存器組合邏輯電路下一狀態(tài)(次態(tài))組合邏輯輸出組合邏輯FSM分類Moore型:輸出信號僅與現(xiàn)態(tài)相關(guān)Mealy型:輸出信號與現(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ī)輸出僅和存儲電路的狀態(tài)有關(guān),與外部輸入無關(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ī)輸出不僅和存儲電路狀態(tài)有關(guān),還和外部輸入信號有關(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語言描述FSM的建立過程跟據(jù)具體要求分析控制過程,建立狀態(tài)轉(zhuǎn)移圖后:1。定義枚舉類型的信號描述狀態(tài)2。建立第1個always,描述次態(tài)組合邏輯,現(xiàn)態(tài)和輸入信號作為敏感量,3。在進(jìn)程中定義狀態(tài)轉(zhuǎn)移CASE語句的一條表示一個狀態(tài),狀態(tài)轉(zhuǎn)移通過IFELSE語句實(shí)現(xiàn)4。對于雙進(jìn)程FSM,建立第2個進(jìn)程,現(xiàn)態(tài)寄存器描述進(jìn)程,CLK,RST為敏感量;對于單進(jìn)程FSM,則在一個進(jìn)程中完成同步狀態(tài)轉(zhuǎn)移。Mealy狀態(tài)機(jī):如果時序邏輯的輸出不僅取決于狀態(tài)還取決于輸入,那么稱之為Mealy機(jī)。而有些時序邏輯電的輸出只取決于當(dāng)前狀態(tài),即輸出信號=G(當(dāng)前狀態(tài)),這樣的就稱為Moore狀態(tài)機(jī)。兩種電路結(jié)構(gòu)除了在輸出電路部分有些不同外,其他地方都是相同的。在設(shè)計(jì)高速電路時,常常有必要使?fàn)顟B(tài)機(jī)的輸出與時鐘幾乎完全同步。有一個辦法是把狀態(tài)變量直接用作輸出,為此在指定狀態(tài)編碼時多費(fèi)一些腦力,有可能會多用幾個寄存器。設(shè)計(jì)告訴狀態(tài)機(jī)還有一個辦法,在輸出邏輯G后面再加一組與時鐘同步的寄存器輸出流水線寄存器,讓G所有的輸出信號在下一個時鐘跳變沿時同時存入寄存器組,即完全同步的輸出,這種輸出稱為流水線化的輸出的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信號輸出方法由狀態(tài)編碼位經(jīng)組合譯碼后輸出并行輸出寄存器的譯碼輸出狀態(tài)位里的編碼輸出一位有效編碼方式FSM輸出方法1由狀態(tài)編碼位經(jīng)組合譯碼后輸出delayFSM輸出方法2并行輸出寄存器的譯碼輸出FSM輸出方法3狀態(tài)位里的編碼輸出縮短輸出延時要求狀態(tài)位編碼與輸出信號要求的值相結(jié)合DFFsOutput

Comb.LogicFeedback

Comb.LogicFSM輸出方法4ONEHOT編碼使用N位狀態(tài)寄存器表達(dá)具有Ng狀態(tài)的FSM,每個狀態(tài)具有獨(dú)立的寄存器位。任意時刻只有1位寄存器為1,即hotpoint。此為onehot。Onehot編碼方程用簡單的次態(tài)方程驅(qū)動,減少了狀態(tài)寄存器之間的組合邏輯級數(shù),因此提高了運(yùn)行速度。同時是以犧牲寄存器邏輯資源和提高成本為代價的。目標(biāo)器件具有較多寄存器資源,寄存器之間組合邏輯較少時比較適用。FSM的容錯設(shè)計(jì)枚舉型數(shù)據(jù)狀態(tài)編碼在綜合時轉(zhuǎn)換為矢量信號,狀態(tài)位數(shù)目=log2N,N:狀態(tài)數(shù)若log2N不為整數(shù),存在未定義狀態(tài),非法狀態(tài)。不考慮非法狀態(tài)則可減少設(shè)計(jì)的邏輯數(shù)目,考慮非法狀態(tài)則可降低系統(tǒng)容錯性原因:干擾,噪聲,電源變化等引起觸發(fā)器翻轉(zhuǎn)誤入非法狀態(tài),造成死鎖。處理:轉(zhuǎn)入空閑態(tài);轉(zhuǎn)入指定態(tài);轉(zhuǎn)入預(yù)定義的錯誤處理告警狀態(tài)default:State<=idle;---轉(zhuǎn)入空閑態(tài);default:State<=“XXXXX”;---忽略;對onehot型FSM,可編寫檢錯程序,判斷是否同時又多個狀態(tài)寄存器為1,,若有做相應(yīng)出錯處理。狀態(tài)機(jī)的狀態(tài)編碼有限狀態(tài)機(jī)設(shè)計(jì)是基于狀態(tài)描述的,因此首先必須對系統(tǒng)中的每一個工作狀態(tài)有一個合理的表達(dá)。對于設(shè)計(jì)者而言,為了表達(dá)簡捷方便通常使用符號化狀態(tài)機(jī)。例如:二進(jìn)制編碼方案:是用N位二進(jìn)制數(shù),表示M個工作狀態(tài),當(dāng)然必須滿足2N大于等于M。一位熱碼編碼方案:用N位二進(jìn)制數(shù)表示N個狀態(tài),每一位編碼對應(yīng)一個觸發(fā)器,狀態(tài)機(jī)中的每個狀態(tài)都由其中一個觸發(fā)器的狀態(tà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碼要看具體情況而定。對于用FPGA實(shí)現(xiàn)的有限狀態(tài)機(jī)建議用獨(dú)熱碼,雖然獨(dú)熱碼多用了觸發(fā)器,但所用組合電路可省一些,因而使電路的速度和可靠性有顯著提高,而總的單元數(shù)并無顯著增加。采用獨(dú)熱編碼后出現(xiàn)的多余狀態(tài),在case語句的最后需要增加default分支項(xiàng)。確保可以回到Idle。One-hot編碼的特點(diǎn)

組合邏輯最少,觸發(fā)器最多,工作時鐘頻率可以做到最高。

FPGA的一個最小結(jié)構(gòu)單元(CLB/LE)中含有查找表(實(shí)現(xiàn)組合邏輯)和DFF(實(shí)現(xiàn)時序邏輯),布局布線最好的結(jié)果是同一個結(jié)構(gòu)單元中的查找表和DFF都使用,但是大部分情況是僅使用其中一種資源,這樣另外的資源就是閑置而浪費(fèi)。而CPLD中DFF資源本來就很少,由此可見One-hot編碼更適合于FPGA設(shè)計(jì),而不適合CPLD設(shè)計(jì),在CPLD中應(yīng)該選擇二進(jìn)制編碼。

IC設(shè)計(jì)中,應(yīng)該綜合考慮。因?yàn)镺ne-hot編碼使用DFF會大大增加設(shè)計(jì)面積(diesize),因此在時序可以滿足的條件下盡可能使用二進(jìn)制編碼。就面積與速度的折中考慮來說Gray碼是最好的選擇,當(dāng)然Gray碼還有其他很多好的特性,暫時不屬于這次討論的范疇。一般的綜合工具對狀態(tài)機(jī)進(jìn)行綜合時都可以讓用戶對這三種編碼進(jìn)行選擇?;疽罁?jù)就以上所說。狀態(tài)機(jī)的編碼Binary、gray-code編碼使用最少的觸發(fā)器,較多的組合邏輯。而one-hot編碼反之。由于CPLD更多的提供組合邏輯資源,而FPGA更多的提供觸發(fā)器資源,所以CPLD多使用gray-code,而FPGA多使用one-hot編碼。另一方面,對于小型設(shè)計(jì)使用gray-code和binary編碼更有效,而大型狀態(tài)機(jī)使用one-hot更高效。IC設(shè)計(jì)中,應(yīng)該綜合考慮。因?yàn)镺ne-hot編碼使用DFF會大大增加設(shè)計(jì)面積(diesize),因此在時序可以滿足的條件下盡可能使用二進(jìn)制編碼。就面積與速度的折中考慮來說Gray碼是最好的選擇,當(dāng)然Gray碼還有其他很多好的特性,暫時不屬于這次討論的范疇。一般的綜合工具對狀態(tài)機(jī)進(jìn)行綜合時都可以讓用戶對這三種編碼進(jìn)行選擇?;疽罁?jù)就以上所說。設(shè)計(jì)有限狀態(tài)機(jī)的參考步驟:(5steps)邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖:就是把給出的一個實(shí)際邏輯關(guān)系表示為時序邏輯函數(shù)。可以用狀態(tài)轉(zhuǎn)換表來描述,也可以用狀態(tài)轉(zhuǎn)換圖來描述。狀態(tài)化簡:如果在狀態(tài)轉(zhuǎn)換圖中出現(xiàn)這樣兩個狀態(tài):它們在相同的輸入下轉(zhuǎn)換到同一個狀態(tài)中,并得到相同的輸出,或稱它們?yōu)榈葍r狀態(tài)。顯然等價狀態(tài)是重復(fù)的,可以合并為一個。電路的狀態(tài)越少,存儲電路也就越簡單。狀態(tài)分配:狀態(tài)分配又稱狀態(tài)編碼。通常有很多編碼方法,編碼方案選擇得當(dāng),設(shè)計(jì)的電路簡單,反之,選得不好,則設(shè)計(jì)的電路就會復(fù)雜許多。選定觸發(fā)器的類型并求出狀態(tài)方程、驅(qū)動方程和輸出方程按照方程得出邏輯圖用VerilogHDL來描述有限狀態(tài)機(jī),可以充分發(fā)揮硬件描述語言的抽象建模能力,使用always塊語句和case(if)等條件語句及賦值語句即可方便實(shí)現(xiàn)。具體的邏輯化簡、邏輯電路和觸發(fā)器映射均可由計(jì)算機(jī)自動完成,上述設(shè)計(jì)步驟中的第(2)布及(4)、(5)步不再需要很多的人為干預(yù),使電路設(shè)計(jì)工作得以簡化,效率也大為提高。FSM描述風(fēng)格用Verilog語言描述有限狀態(tài)機(jī)可使用多種風(fēng)格,不同的風(fēng)格會極大地影響電路性能。通常有3種描述方式:單always塊、雙always塊和三always塊。

單always塊把組合邏輯和時序邏輯用同一個時序always塊描述,其輸出是寄存器輸出,無毛刺。但是這種方式會產(chǎn)生多余的觸發(fā)器,代碼難于修改和調(diào)試,應(yīng)該盡量避免使用。

FSM描述風(fēng)格雙always塊大多用于描述Mealy狀態(tài)機(jī)和組合輸出的Moore狀態(tài)機(jī),時序always塊描述當(dāng)前狀態(tài)邏輯,組合邏輯always塊描述次態(tài)邏輯并給輸出賦值。這種方式結(jié)構(gòu)清晰,綜合后的面積和時間性能好。但組合邏輯輸出往往會有毛刺,當(dāng)輸出向量作為時鐘信號時,這些毛刺會對電路產(chǎn)生致命的影響。三always塊大多用于同步Mealy狀態(tài)機(jī),兩個時序always塊分別用來描述現(xiàn)態(tài)邏輯和對輸出賦值,組合always塊用于產(chǎn)生下一狀態(tài)。這種方式的狀態(tài)機(jī)也是寄存器輸出,輸出無毛刺,并且代碼比單always塊清晰易讀,但是面積大于雙always塊。隨著芯片資源和速度的提高,目前這種方式得到了廣泛應(yīng)用。Verilog三段式狀態(tài)機(jī)描述時序電路的狀態(tài)是一個狀態(tài)變量集合,這些狀態(tài)變量在任意時刻的值都包含了為確定電路的未來行為而必需考慮的所有歷史信息。狀態(tài)機(jī)采用VerilogHDL語言編碼,建議分為三個always段完成。三段式建模描述FSM的狀態(tài)機(jī)輸出時,只需指定case敏感表為次態(tài)寄存器,然后直接在每個次態(tài)的case分支中描述該狀態(tài)的輸出即可,不用考慮狀態(tài)轉(zhuǎn)移條件。三段式描述方法雖然代碼結(jié)構(gòu)復(fù)雜了一些,但是換來的優(yōu)勢是:使FSM做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時序路徑分組,一般來說在FPGA/CPLD等可編程邏輯器件上的綜合與布局布線效果更佳。三段式狀態(tài)機(jī)描述示列//第一個進(jìn)程,同步時序always模塊,格式化描述次態(tài)寄存器遷移到現(xiàn)態(tài)寄存器always@(posedgeclkornegedgerst_n)

//異步復(fù)位

if(!rst_n)

current_state<=IDLE;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論