集成電路EDA設(shè)計(jì)技術(shù):第8章 有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)_第1頁(yè)
集成電路EDA設(shè)計(jì)技術(shù):第8章 有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)_第2頁(yè)
集成電路EDA設(shè)計(jì)技術(shù):第8章 有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)_第3頁(yè)
集成電路EDA設(shè)計(jì)技術(shù):第8章 有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)_第4頁(yè)
集成電路EDA設(shè)計(jì)技術(shù):第8章 有限狀態(tài)機(jī)設(shè)計(jì)技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第8章有限狀態(tài)機(jī)設(shè)計(jì)技術(shù) 硬件(芯片)設(shè)計(jì)講究并行設(shè)計(jì)思想,雖然用verilog描述的電路大都是并行執(zhí)行的,但是對(duì)于實(shí)際的工程應(yīng)用,往往需要讓硬件實(shí)現(xiàn)一些具有一定順序的工作,這就要用到狀態(tài)機(jī)的思想。狀態(tài)機(jī)-就是通過(guò)不同的狀態(tài)遷移來(lái)完成一些特定的順序邏輯。有限狀態(tài)機(jī)的簡(jiǎn)介有限狀態(tài)機(jī)的簡(jiǎn)介硬件(芯片)設(shè)計(jì)講究并行設(shè)計(jì)思想,雖然用verilog描述的電路大都是并行執(zhí)行的,但是對(duì)于實(shí)際的工程應(yīng)用,往往需要讓硬件實(shí)現(xiàn)一些具有一定順序的工作,這就要用到狀態(tài)機(jī)的思想。狀態(tài)機(jī)-就是通過(guò)不同的狀態(tài)遷移來(lái)完成一些特定的順序邏輯。 有限狀態(tài)機(jī)是由寄存器組和組合邏輯構(gòu)成的硬件時(shí)序電路,其狀態(tài)(即由寄存器組的1和0的組

2、合狀態(tài)所構(gòu)成的有限個(gè)狀態(tài))只可能在同一時(shí)鐘跳變沿的情況下才能從一個(gè)狀態(tài)轉(zhuǎn)向另一個(gè)狀態(tài),究竟轉(zhuǎn)向哪一狀態(tài)還是留在原狀態(tài)不但取決于各個(gè)輸入值,還取決于當(dāng)前所在狀態(tài)。(這里指的是米里Mealy型有限狀態(tài)機(jī),而莫爾Moore型有限狀態(tài)機(jī)究竟轉(zhuǎn)向哪一狀態(tài)只決于當(dāng)前狀態(tài)。)狀態(tài)機(jī)的結(jié)構(gòu)有限狀態(tài)機(jī)的簡(jiǎn)介基本概念有限狀態(tài)機(jī)用來(lái)實(shí)現(xiàn)一個(gè)數(shù)字電路設(shè)計(jì)的控制部分,與CPU 的功能類(lèi)似,綜合了時(shí)序邏輯和組合邏輯電路。有限狀態(tài)機(jī)與CPU功能比較控制功能的實(shí)現(xiàn) CPU通過(guò)操作指令和硬件操作單元。 有限狀態(tài)機(jī)通過(guò)狀態(tài)轉(zhuǎn)移。有限狀態(tài)機(jī)適用于可編程邏輯器件。通過(guò)恰當(dāng)?shù)腣erilog語(yǔ)言描述和EDA工具綜合,可以生成性能優(yōu)越的有

3、限狀態(tài)機(jī),在執(zhí)行時(shí)間、運(yùn)行速度和占用資源等方面優(yōu)于CPU實(shí)現(xiàn)的設(shè)計(jì)方案。有限狀態(tài)機(jī)分類(lèi)Moore型有限狀態(tài)機(jī)和Mealy型有限狀態(tài)機(jī)。Moore型有限狀態(tài)機(jī)次態(tài) 邏輯狀態(tài) 寄存器輸出 邏輯輸入次態(tài)現(xiàn)態(tài)輸出時(shí)鐘復(fù)位Moore型:輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān)。有限狀態(tài)機(jī)的簡(jiǎn)介Mealy型有限狀態(tài)機(jī)Mealy型:輸出信號(hào)不僅與當(dāng)前狀態(tài)有關(guān),還與所有 輸入信號(hào)有關(guān)。次態(tài) 邏輯狀態(tài) 寄存器輸出 邏輯輸入次態(tài)現(xiàn)態(tài)輸出時(shí)鐘復(fù)位有限狀態(tài)機(jī)的簡(jiǎn)介8.1.2 狀態(tài)機(jī)的一般結(jié)構(gòu) 有限狀態(tài)機(jī)(FSM,F(xiàn)inite State Machine)是時(shí)序電路設(shè)計(jì)中經(jīng)常采用的一種方式,尤其適于設(shè)計(jì)數(shù)字系統(tǒng)的控制模塊。用Veril

4、og的case、if-else等語(yǔ)句能很好地描述基于狀態(tài)機(jī)的設(shè)計(jì)。1. 說(shuō)明部分狀態(tài)轉(zhuǎn)換變量的定義和所有可能狀態(tài)的說(shuō)明 2005版參數(shù)說(shuō)明關(guān)鍵字parameter2. 主控時(shí)序過(guò)程:狀態(tài)機(jī)的運(yùn)轉(zhuǎn)和狀態(tài)轉(zhuǎn)換的過(guò)程8.1.2 狀態(tài)機(jī)的一般結(jié)構(gòu)3. 主控組合過(guò)程 :根據(jù)當(dāng)前狀態(tài)和外部的信號(hào)發(fā)出控制信號(hào),同時(shí)確定下一狀態(tài)的走向 4. 輔助過(guò)程:配合狀態(tài)機(jī)工作的組合過(guò)程和時(shí)序過(guò)程。 8.1.2 狀態(tài)機(jī)的一般結(jié)構(gòu)說(shuō)明部分主控時(shí)序過(guò)程8.1.2 狀態(tài)機(jī)的一般結(jié)構(gòu)主控組合過(guò)程主控組合過(guò)程 用狀態(tài)機(jī)設(shè)計(jì)一個(gè)二進(jìn)制序列檢測(cè)器,其功能是檢測(cè)一個(gè)4位二進(jìn)制序列“1111”,即輸入序列中如果有4個(gè)或4個(gè)以上連續(xù)的“1”

5、出現(xiàn),輸出為1,其它情況下,輸出為0。有限狀態(tài)機(jī)(FSM)設(shè)計(jì)舉例輸出z:000 000 000 000 000 100 001 110 000其輸入輸出如下所示:輸入x:000 101 010 110 111 101 111 110 101有限狀態(tài)機(jī)(FSM)設(shè)計(jì)“1111”序列檢測(cè)器狀態(tài)轉(zhuǎn)換圖 先畫(huà)出狀態(tài)轉(zhuǎn)換圖:(可以不寫(xiě)代碼,用quartus II自動(dòng)生成 Verilog代碼)狀態(tài)輸入輸出“1111”序列檢測(cè)器的Verilog描述module fsm_seq(x,z,clk,reset,state);input x,clk,reset;output z;output2:0 state;r

6、eg z;parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg 2:0 current_state,next_state;assign state=current_state;always (posedge clk or posedge reset)begin if(reset) current_state=s0; else current_state=next_state; endalways (current_state or x)begin casex(current_state) “1111”序列檢測(cè)器的Verilog描述 s0: beginif(x=0) be

7、gin next_state=s0; z=0; endelse begin next_state=s1; z=0; end end s1: beginif(x=0) begin next_state=s0; z=0; end else begin next_state=s2; z=0; end ends2: beginif(x=0) begin next_state=s0; z=0; end else begin next_state=s3; z=0; end ends3: begin if(x=0) begin next_state=s0; z=0; endelse begin next_s

8、tate=s4; z=1; end ends4: beginif(x=0) begin next_state=s0; z=0; endelse begin next_state=s4; z=1; end end default: begin next_state=s0; end endcase endendmodule(1)用三個(gè)過(guò)程描述:即現(xiàn)態(tài)(CS)、次態(tài)(NS)、輸出邏輯(OL)各用一個(gè)always過(guò)程描述。(2)雙過(guò)程描述(CS+NS、OL雙過(guò)程描述):使用兩個(gè)always過(guò)程來(lái)描述有限狀態(tài)機(jī),一個(gè)過(guò)程描述現(xiàn)態(tài)和次態(tài)時(shí)序邏輯(CS+NS);另一個(gè)過(guò)程描述輸出邏輯(OL)。(3)雙過(guò)程描

9、述(CS、NS+OL雙過(guò)程描述):一個(gè)過(guò)程用來(lái)描述現(xiàn)態(tài)(CS);另一個(gè)過(guò)程描述次態(tài)和輸出邏輯(NS+OL)。(4)單過(guò)程描述:在單過(guò)程描述方式中,將狀態(tài)機(jī)的現(xiàn)態(tài)、次態(tài)和輸出邏輯(CS+NS+OL)放在一個(gè)always過(guò)程中進(jìn)行描述。8.2 有限狀態(tài)機(jī)的幾種描述方式“101”序列檢測(cè)器的Verilog描述(三個(gè)過(guò)程) module fsm1_seq101(clk,clr,x,z);input clk,clr,x; output reg z; reg1:0 state,next_state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10; /*狀態(tài)編碼,采用格雷

10、(Gray)編碼方式*/always (posedge clk or posedge clr) /*該過(guò)程定義當(dāng)前狀態(tài)*/beginif(clr) state=S0; /異步復(fù)位,s0為起始狀態(tài)else state=next_state;endalways (state or x) /*該過(guò)程定義次態(tài)*/begincase (state)S0:begin if(x) next_state=S1;else next_state=S0; endS1:beginif(x) next_state=S1;else next_state=S2; endS2:beginif(x) next_state=S3

11、;else next_state=S0; endS3:beginif(x) next_state=S1;else next_state=S2; enddefault:next_state=S0; /*default語(yǔ)句*/endcaseendalways (state) /*該過(guò)程產(chǎn)生輸出邏輯*/begin case(state)S3: z=1b1;default:z=1b0;endcaseendendmodule“101”序列檢測(cè)器的Verilog描述(三個(gè)過(guò)程) “101”序列檢測(cè)器(單過(guò)程描述) module fsm4_seq101(clk,clr,x,z);input clk,clr,

12、x; output reg z; reg1:0 state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10;/*狀態(tài)編碼,采用格雷(Gray)編碼方式*/always (posedge clk or posedge clr)Begin if(clr) state=S0; /異步復(fù)位,s0為起始狀態(tài)else case(state)S0:begin if(x) begin state=S1; z=1b0;endelse begin state=S0; z=1b0;end endS1:begin if(x) begin state=S1; z=1b0;endels

13、e begin state=S2; z=1b0;end endS2:beginif(x) begin state=S3; z=1b0;endelse begin state=S0; z=1b0;end endS3:begin if(x) begin state=S1; z=1b1;endelse begin state=S2; z=1b1;end enddefault:begin state=S0; z=1b0;end /*default語(yǔ)句*/endcaseendendmodule摘自深入淺出玩轉(zhuǎn)FPGA 8.3 狀 態(tài) 編 碼 順序編碼 格雷編碼 約翰遜編碼一位熱碼常用的編碼方式 一位熱碼

14、編碼選擇對(duì)話(huà)框(Quartus ) 狀態(tài)編碼的定義在Verilog語(yǔ)言中,有兩種方式可用于定義狀態(tài)編碼,分別用parameter和define語(yǔ)句實(shí)現(xiàn),比如要為state0、state1、state2、state3四個(gè)狀態(tài)定義碼字為:00、01、11、10,可采用下面兩種方式。方式1:用parameter參數(shù)定義 parameter state1=2b00,state2=2b01,state3=2b11,state4=2b10; case(state) state1:; /調(diào)用 state2:; 要注意兩種方式定義與調(diào)用時(shí)的區(qū)別,一般情況下,更傾向于采用方式1來(lái)定義狀態(tài)編碼。一般使用case、

15、casez和casex語(yǔ)句來(lái)描述狀態(tài)之間的轉(zhuǎn)換,用case語(yǔ)句表述比用if-else語(yǔ)句更清晰明了。 狀態(tài)編碼的定義方式2:用define語(yǔ)句定義define state1 2b00 /不要加分號(hào)“;”define state2 2b01define state3 2b11define state4 2b10case(state)state1:; /調(diào)用,不要漏掉符號(hào)“”state2:;狀態(tài)編碼的定義8.4 有限狀態(tài)機(jī)設(shè)計(jì)要點(diǎn)1起始狀態(tài)的選擇 :起始狀態(tài)是指電路復(fù)位后所處的狀態(tài),選擇一個(gè)合理的起始狀態(tài)將使整個(gè)系統(tǒng)簡(jiǎn)潔、高效。多數(shù)EDA軟件會(huì)自動(dòng)為基于狀態(tài)機(jī)的設(shè)計(jì)選擇一個(gè)最佳的起始狀態(tài)。 8.4 有限狀態(tài)機(jī)設(shè)計(jì)要點(diǎn)2有限狀態(tài)機(jī)的同步復(fù)位 3有限狀態(tài)機(jī)的異步復(fù)位多余狀態(tài)的處理一般有如下兩種處理多余狀態(tài)的方法:(1)在case語(yǔ)句中用default分支決定如果進(jìn)入無(wú)效狀態(tài)所采取的措施;(2)編寫(xiě)必要的Veril

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論