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

下載本文檔

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

文檔簡介

EDA課程實驗八狀態(tài)機邏輯電路設計EDA課組一、實驗目的:1、了解狀態(tài)機邏輯電路設計原理及特點;2、學習使用狀態(tài)機邏輯電路設計方法。二、實驗內(nèi)容2、通過仿真軟件進行驗證仿真

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

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

3、FSM原理框圖三、實驗步驟1、序列檢測器的設計序列檢測器是一種用來監(jiān)測一組或多組序列信號的電路,在數(shù)據(jù)通信、雷達、遙感、遙測等領域中廣泛應用,主要用于檢測同步識別標志。下面通過Mealy型狀態(tài)機設計由輸入信號中檢測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由輸入信號檢測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)//異步復位,高電平有效cs<=s0; else cs<=ns;end//次態(tài)計算及輸出信號產(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)機仿真結(jié)果可見輸出dout和次態(tài)ns均由當前狀態(tài)cs和輸入din共同決定。這是mealy狀態(tài)機特點。din001010101din輸入數(shù)據(jù)頻率要小于時鐘頻率才能準確檢測相應數(shù)據(jù)位!s0s2s11/00/11/01/00/00/0給定din(01000101)檢測結(jié)果01001001dout顯示的脈沖都是在檢測最后一個數(shù)對應時鐘上升沿時結(jié)束,當輸入的數(shù)據(jù)在一個時鐘內(nèi)反復變化將導致時鐘周期內(nèi)的次態(tài)跟著變化,而現(xiàn)態(tài)沒有變化,這就檢測不出所要的數(shù)據(jù)。時鐘周期相當于數(shù)據(jù)檢測的時間分辨率。2、二進制乘法器設計:實現(xiàn)兩個8位二進制數(shù)的乘法運算,被乘數(shù)(mcnd)和乘數(shù)(mplr)存放在寄存器mcnd_temp和acc[7:0]中,乘積為16進制數(shù),運算完后存放在16位寄存器acc[15:0]中。shiftaddcomp1initcount<8遞增countacc右移復位acc初始化countreset=1reset=0如果acc[0]=1將mcnd加到acc輸出done=1count=8乘法狀態(tài)機的狀態(tài)圖⑴狀態(tài)機模型開始處于init狀態(tài),并且只要復位信號reset為高電平,就停留在該狀態(tài)。當reset為0時,累加器acc清零,計數(shù)器count被復位,被乘數(shù)mcnd和乘數(shù)mplr被加載到寄存器mcnd_temp和acc的低8位中,然后進入add狀態(tài)。⑵當處于add狀態(tài)時,只要當乘數(shù)的最低位(acc[0])為1時,將被乘數(shù)加到部分積(acc的高八位)中,然后進入到shift狀態(tài)中。⑶在shift狀態(tài)時,將部分積(acc)右移一位,并將計數(shù)器(count)加1,如果計數(shù)器值為8,則進入compl狀態(tài);如果計數(shù)器值小于8,則返回到add狀態(tài)進行下一輪移位相加直到計數(shù)器值變?yōu)?。⑷compl狀態(tài)表示運算完成,將輸出使能信號done置為高,此時acc內(nèi)存放的即為乘法器運算的結(jié)果,然后返回init狀態(tài)。shiftaddcomp1initcount<8遞增countacc右移復位acc初始化countreset=1reset=0如果acc[0]=1將mcnd加到acc輸出done=1count=8乘法器狀態(tài)機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)機狀態(tài)轉(zhuǎn)換過程assignnext_state=ns;always@(negedgeclk,posedgereset)if(reset)

cs<=init;else

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

init:ns=add;

add:ns=shift;//當count由0~7變化剛好移動8次,完成8為乘法運算

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

compl:ns=init;

endcaseend//產(chǎn)生輸出信號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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論