實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)_第1頁
實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)_第2頁
實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)_第3頁
實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)_第4頁
實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

EDA課程實(shí)驗(yàn)八狀態(tài)機(jī)邏輯電路設(shè)計(jì)EDA課組一、實(shí)驗(yàn)?zāi)康模?、了解狀態(tài)機(jī)邏輯電路設(shè)計(jì)原理及特點(diǎn);2、學(xué)習(xí)使用狀態(tài)機(jī)邏輯電路設(shè)計(jì)方法。二、實(shí)驗(yàn)內(nèi)容2、通過仿真軟件進(jìn)行驗(yàn)證仿真

。1、設(shè)計(jì)兩種典型狀態(tài)機(jī)邏輯電路系統(tǒng);在數(shù)字系統(tǒng)中,有限狀態(tài)機(jī)(FSM,FiniteStateMachine)是一類十分重要的時(shí)序電路。微控制器的核心就是FSM。因此學(xué)習(xí)FSM的原理及設(shè)計(jì)方法對(duì)于學(xué)習(xí)數(shù)字系統(tǒng)設(shè)計(jì)和理解計(jì)算機(jī)原理都有重要意義。本章首先概要介紹FSM的相關(guān)理論知識(shí),通過典型實(shí)例說明FSM的設(shè)計(jì)方法。1、FSM概念三、實(shí)驗(yàn)原理有限狀態(tài)機(jī)由輸入和輸出和具有記憶功能的寄存器組成,寄存器用于寄存狀態(tài)機(jī)內(nèi)部狀態(tài),也稱狀態(tài)寄存器。狀態(tài)機(jī)的下一個(gè)狀態(tài)不僅與輸入信號(hào)有關(guān),還與該寄存器的當(dāng)前狀態(tài)有關(guān),因此有限狀態(tài)機(jī)可看作是組合邏輯與時(shí)序邏輯的一種組合。其中的時(shí)序邏輯功能是存儲(chǔ)有限狀態(tài)機(jī)的內(nèi)部狀態(tài);而組合邏輯又可分為次態(tài)產(chǎn)生邏輯和輸出邏輯兩部分,次態(tài)產(chǎn)生邏輯的功能是確定有限狀態(tài)機(jī)的下一個(gè)狀態(tài),輸出邏輯功能是確定有限狀態(tài)機(jī)的輸出。由于FSM的描述較為復(fù)雜,因此不能使用原理圖方法進(jìn)行描述,而必須采用VerilogHDL語言進(jìn)行行為級(jí)設(shè)計(jì)。2、FSM組成思考一下電梯運(yùn)動(dòng)控制過程?電梯從一樓到頂樓是一系列樓層,電梯到達(dá)每一層要顯示該層樓層信息,還要由乘坐人控制去那一層,在經(jīng)過的樓層還要判斷是否有相同方向的人乘坐,這一系列控制判斷過程如何設(shè)計(jì)呢?一層二層三層四層N層將整個(gè)電梯控制過程運(yùn)行狀態(tài)分解為N個(gè)狀態(tài),在每個(gè)狀態(tài)下決定下一步如何控制,這就是將復(fù)雜狀態(tài)的運(yùn)動(dòng)過程分解為一系列狀態(tài)過程,這就是狀態(tài)機(jī)設(shè)計(jì)思想。有限狀態(tài)機(jī)是一個(gè)廣義的時(shí)序電路,它能將復(fù)雜邏輯分解為眾多狀態(tài)來完成,使復(fù)雜邏輯層次分明,是設(shè)計(jì)復(fù)雜電路的方法。根據(jù)輸入與輸出機(jī)狀態(tài)之間的關(guān)系,狀態(tài)機(jī)分為兩類:摩爾型(moore)狀態(tài)機(jī)和米里型(Mealy)。摩爾型(Moore)狀態(tài)機(jī)

米里型(Mealy)狀態(tài)機(jī)

3、FSM原理框圖三、實(shí)驗(yàn)步驟1、序列檢測(cè)器的設(shè)計(jì)序列檢測(cè)器是一種用來監(jiān)測(cè)一組或多組序列信號(hào)的電路,在數(shù)據(jù)通信、雷達(dá)、遙感、遙測(cè)等領(lǐng)域中廣泛應(yīng)用,主要用于檢測(cè)同步識(shí)別標(biāo)志。下面通過Mealy型狀態(tài)機(jī)設(shè)計(jì)由輸入信號(hào)中檢測(cè)010序列,狀態(tài)編碼采用格雷編碼。dinclkresetdouts0s2s11/00/11/01/00/00/0框圖狀態(tài)圖狀態(tài)表s下一狀態(tài)din=0din=1s0=00s1,0s0,0s1=01s1,0s2,0s2=11s1,1s0,0din001010101由輸入信號(hào)檢測(cè)010序列Verilong程序modulemealyfsm(clk,reset,din,dout,cs_state,ns_state);outputdout;output[1:0]cs_state,ns_state;inputclk,reset,din;regdout;//用格雷碼編碼聲明狀態(tài)值parameter[1:0]s0=2'b00,s1=2'b01,s2=2'b11;reg[1:0]cs,ns;assigncs_state=cs,ns_state=ns;always@(posedge

clk,posedge

reset)beginif(reset==1'b1)//異步復(fù)位,高電平有效cs<=s0; else cs<=ns;end//次態(tài)計(jì)算及輸出信號(hào)產(chǎn)生,always@(cs,din)case(cs) s0:begin dout=1'b0; if(din===1'bx)ns=s0; elsens=(din)?s0:s1; end

s1:begindout=1'b0;ns=(!din)?s1:s2;ends2:begindout=(din)?1'b0:1'b1;ns=(din)?s0:s1;enddefault:begindout=1'b0;ns=s0;endendcaseendmodulemealy型狀態(tài)機(jī)仿真結(jié)果可見輸出dout和次態(tài)ns均由當(dāng)前狀態(tài)cs和輸入din共同決定。這是mealy狀態(tài)機(jī)特點(diǎn)。din001010101din輸入數(shù)據(jù)頻率要小于時(shí)鐘頻率才能準(zhǔn)確檢測(cè)相應(yīng)數(shù)據(jù)位!s0s2s11/00/11/01/00/00/0給定din(01000101)檢測(cè)結(jié)果01001001dout顯示的脈沖都是在檢測(cè)最后一個(gè)數(shù)對(duì)應(yīng)時(shí)鐘上升沿時(shí)結(jié)束,當(dāng)輸入的數(shù)據(jù)在一個(gè)時(shí)鐘內(nèi)反復(fù)變化將導(dǎo)致時(shí)鐘周期內(nèi)的次態(tài)跟著變化,而現(xiàn)態(tài)沒有變化,這就檢測(cè)不出所要的數(shù)據(jù)。時(shí)鐘周期相當(dāng)于數(shù)據(jù)檢測(cè)的時(shí)間分辨率。2、二進(jìn)制乘法器設(shè)計(jì):實(shí)現(xiàn)兩個(gè)8位二進(jìn)制數(shù)的乘法運(yùn)算,被乘數(shù)(mcnd)和乘數(shù)(mplr)存放在寄存器mcnd_temp和acc[7:0]中,乘積為16進(jìn)制數(shù),運(yùn)算完后存放在16位寄存器acc[15:0]中。shiftaddcomp1initcount<8遞增countacc右移復(fù)位acc初始化countreset=1reset=0如果acc[0]=1將mcnd加到acc輸出done=1count=8乘法狀態(tài)機(jī)的狀態(tài)圖⑴狀態(tài)機(jī)模型開始處于init狀態(tài),并且只要復(fù)位信號(hào)reset為高電平,就停留在該狀態(tài)。當(dāng)reset為0時(shí),累加器acc清零,計(jì)數(shù)器count被復(fù)位,被乘數(shù)mcnd和乘數(shù)mplr被加載到寄存器mcnd_temp和acc的低8位中,然后進(jìn)入add狀態(tài)。⑵當(dāng)處于add狀態(tài)時(shí),只要當(dāng)乘數(shù)的最低位(acc[0])為1時(shí),將被乘數(shù)加到部分積(acc的高八位)中,然后進(jìn)入到shift狀態(tài)中。⑶在shift狀態(tài)時(shí),將部分積(acc)右移一位,并將計(jì)數(shù)器(count)加1,如果計(jì)數(shù)器值為8,則進(jìn)入compl狀態(tài);如果計(jì)數(shù)器值小于8,則返回到add狀態(tài)進(jìn)行下一輪移位相加直到計(jì)數(shù)器值變?yōu)?。⑷compl狀態(tài)表示運(yùn)算完成,將輸出使能信號(hào)done置為高,此時(shí)acc內(nèi)存放的即為乘法器運(yùn)算的結(jié)果,然后返回init狀態(tài)。shiftaddcomp1initcount<8遞增countacc右移復(fù)位acc初始化countreset=1reset=0如果acc[0]=1將mcnd加到acc輸出done=1count=8乘法器狀態(tài)機(jī)Verilog程序modulemulti8(mplr,mcnd,clk,reset,done,acc,count,mul_state,next_state);outputdone;output[15:0]acc;output[3:0]count;

output[1:0]mul_state,next_state;input[7:0]mplr,mcnd;inputclk,reset;reg[15:0]acc;reg[1:0]cs,ns;reg[7:0]mcnd_temp;reg[3:0]count;regdone;//定義狀態(tài)編碼為格雷碼parameter[1:0]init=2'b00,add=2'b01,shift=2'b11,compl=2'b10;assignmul_state=cs;//方便查看狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換過程assignnext_state=ns;always@(negedgeclk,posedgereset)if(reset)

cs<=init;else

cs<=ns;乘法器狀態(tài)機(jī)Verilog程序//次態(tài)計(jì)算always@(cs)begincase(cs)

init:ns=add;

add:ns=shift;//當(dāng)count由0~7變化剛好移動(dòng)8次,完成8為乘法運(yùn)算

shift:if(count==4’b0111)ns=compl;elsens=add;

compl:ns=init;

endcaseend//產(chǎn)生輸出信號(hào)always@(negedge

clk)

case(cs)

init:beginacc[15:8]<=8’b0000_0000;acc[7:0]<=mplr;done<=1’b0;mcnd_temp[7:0]<=mcnd;count<=3’b000;end//判斷乘數(shù)最高位是否為1,//則將被乘數(shù)加到部分積中add:if(acc[0]==1’b1)acc<=acc+{mcnd_temp,8’b0000_0000);

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論