第八章有限狀態(tài)機_第1頁
第八章有限狀態(tài)機_第2頁
第八章有限狀態(tài)機_第3頁
第八章有限狀態(tài)機_第4頁
第八章有限狀態(tài)機_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第八章有限狀態(tài)機狀態(tài)機不僅僅是一種時序電狀態(tài)機不僅僅是一種時序電路設(shè)計工具,它更是一種思路設(shè)計工具,它更是一種思想方法想方法q狀態(tài)機簡介狀態(tài)機簡介 : :時序電路的輸出時序電路的輸出(outputs)(outputs)不僅與周圍環(huán)境接收到的輸入值不僅與周圍環(huán)境接收到的輸入值(inputs)(inputs)有關(guān),而且與過去的結(jié)果(即存儲元件有關(guān),而且與過去的結(jié)果(即存儲元件中現(xiàn)在的狀態(tài))有關(guān)中現(xiàn)在的狀態(tài))有關(guān) 。 Combinational Circuit (組合邏輯電路) Flip-flops (記憶元件) inputs outputs Next state present state clo

2、ck signal 控制靈活控制靈活 結(jié)構(gòu)模式相對簡單結(jié)構(gòu)模式相對簡單 性能良好的同步時序邏輯性能良好的同步時序邏輯 qFSM(Finite State Machine)q有限狀態(tài)機有限狀態(tài)機一旦定義,那么它在每一個狀態(tài)一旦定義,那么它在每一個狀態(tài)對每一個消息的反應(yīng)都固定了。對每一個消息的反應(yīng)都固定了。q無限狀態(tài)機無限狀態(tài)機就是一個給定的儲存狀態(tài)的庫,就是一個給定的儲存狀態(tài)的庫,不過可以儲存所有你想要的狀態(tài)。也就是說狀不過可以儲存所有你想要的狀態(tài)。也就是說狀態(tài)可以改變。態(tài)可以改變?!纠?-1】 module FSM_EXP(clk,reset,state_inputs,comb_output

3、s);input clk,reset;input0:1state_inputs;output3:0comb_outputs;reg3:0comb_outputs;parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg4:0c_st,next_state; always(posedge clk, negedge reset)begin if(!reset) c_st=s0; else c_st=next_state; end always(c_st,state_inputs)begin case(c_st) s0:begin comb_outputs=5; if (stat

4、e_inputs=2b00) next_state=s0; else next_state=s1;end s1:begin comb_outputs=8; if (state_inputs=2b01) next_state=s1; else next_state=s2;end s2:begin comb_outputs=12; if (state_inputs=2b10) next_state=s0; else next_state=s3;end s3:begin comb_outputs=14; if (state_inputs=2b11) next_state=s3; else next_

5、state=s4;end s4:begin comb_outputs=9; next_state=s0;end default: next_state=s0; endcase endendmodule定義狀定義狀態(tài)機態(tài)機input=0input=0input=1s0/5s1/8Reset=0s2/12s3/14input=00input=1x/x1input=01input=1x/x0input=10input=0 x/x0input=11input=0 x/x1s4/9s0s1s2s3s4c_st1使用使用Verilog描述狀態(tài)機描述狀態(tài)機需要注意的問題需要注意的問題l建議使用建議使用cas

6、e語句來描述狀態(tài)機模型語句來描述狀態(tài)機模型l在有缺省狀態(tài)時,要寫上在有缺省狀態(tài)時,要寫上case語句的最語句的最后一個分支:后一個分支:defaultl為狀態(tài)機設(shè)置同步或異步復(fù)位為狀態(tài)機設(shè)置同步或異步復(fù)位兩段式兩段式FSM 描述方法雖然有很多好處,描述方法雖然有很多好處,但是它有一個明顯的弱點就是其輸出一但是它有一個明顯的弱點就是其輸出一般使用組合邏輯描述,而組合邏輯易產(chǎn)般使用組合邏輯描述,而組合邏輯易產(chǎn)生毛刺等不穩(wěn)定因素,并且在生毛刺等不穩(wěn)定因素,并且在FPGA/CPLD 等邏輯器件中過多的組合等邏輯器件中過多的組合邏輯會影響實現(xiàn)的速率(這點與邏輯會影響實現(xiàn)的速率(這點與ASIC 設(shè)設(shè)計不同

7、)。所以在兩段式計不同)。所以在兩段式FSM 描述方法描述方法中,如果時序允許插入一個額外的時鐘中,如果時序允許插入一個額外的時鐘節(jié)拍,則盡量在在后級電路對節(jié)拍,則盡量在在后級電路對FSM 的組的組合邏輯輸出用寄存器寄存一個節(jié)拍,則合邏輯輸出用寄存器寄存一個節(jié)拍,則可以有效地消除毛刺。但是很多情況下可以有效地消除毛刺。但是很多情況下,設(shè)計并不允許額外的節(jié)拍插入(,設(shè)計并不允許額外的節(jié)拍插入(Latency),此時,解決之道就是采用),此時,解決之道就是采用3 段式段式FSM 描述方法。描述方法。三段式三段式描述方法描述方法與兩段式描述方法相比,關(guān)鍵在于使用與兩段式描述方法相比,關(guān)鍵在于使用同步

8、時序邏輯寄存同步時序邏輯寄存FSM 的輸?shù)妮敵觥3?。一段式一段式描述方法將狀態(tài)轉(zhuǎn)移判斷的組描述方法將狀態(tài)轉(zhuǎn)移判斷的組合邏輯和狀態(tài)寄存器轉(zhuǎn)移的時序邏輯混合邏輯和狀態(tài)寄存器轉(zhuǎn)移的時序邏輯混寫在同一個寫在同一個always 模塊中,不符合將模塊中,不符合將時序和組合邏輯分開描述的時序和組合邏輯分開描述的Coding Style(代碼風(fēng)格),而且在描述當(dāng)前(代碼風(fēng)格),而且在描述當(dāng)前狀態(tài)時要考慮下個狀態(tài)的輸出,整個代狀態(tài)時要考慮下個狀態(tài)的輸出,整個代碼不清晰,不利于維護修改,并且不利碼不清晰,不利于維護修改,并且不利于附加約束,不利于綜合器和布局布線于附加約束,不利于綜合器和布局布線器對設(shè)計的優(yōu)化。器

9、對設(shè)計的優(yōu)化。兩段式兩段式寫法是推薦的寫法是推薦的FSM 描述方描述方法之一,在此我們仔細(xì)討論一下代法之一,在此我們仔細(xì)討論一下代碼結(jié)構(gòu)。兩段式碼結(jié)構(gòu)。兩段式FSM 的核心就是:的核心就是:一個一個always 模塊采用同步時序描述模塊采用同步時序描述狀態(tài)轉(zhuǎn)移;另一個模塊采用組合邏狀態(tài)轉(zhuǎn)移;另一個模塊采用組合邏輯判斷狀態(tài)轉(zhuǎn)移條件,描述狀態(tài)轉(zhuǎn)輯判斷狀態(tài)轉(zhuǎn)移條件,描述狀態(tài)轉(zhuǎn)移規(guī)律。移規(guī)律。module FSM_EXP(clk,reset,state_inputs,comb_outputs);input clk,reset;input0:1state_inputs;output3:0comb_out

10、puts;reg3:0comb_outputs;parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg4:0c_st,next_state; always(posedge clk, negedge reset)begin if(!reset) c_st=s0; else c_st=next_state; end always(c_st,state_inputs)begin case(c_st) s0:begin comb_outputs=5; if (state_inputs=2b00) next_state=s0; else next_state=s1;end s1:b

11、egin comb_outputs=8; if (state_inputs=2b01) next_state=s1; else next_state=s2;end s2:begin comb_outputs=12; if (state_inputs=2b10) next_state=s0; else next_state=s3;end s3:begin comb_outputs=14; if (state_inputs=2b11) next_state=s3; else next_state=s4;end s4:begin comb_outputs=9; next_state=s0;end d

12、efault: next_state=s0; endcase endendmodulemodule FSM_EXP(clk,reset,state_inputs,comb_outputs);input clk,reset;input0:1state_inputs;output3:0comb_outputs;reg3:0comb_outputs;parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg4:0next_state; always(posedge clk, negedge reset)begin if(!reset) next_state=s0; else cas

13、e(next_state) s0:begin comb_outputs=5; if (state_inputs=2b00) next_state=s0; else next_state=s1;end s1:begin comb_outputs=8; if (state_inputs=2b01) next_state=s1; else next_state=s2;end s2:begin comb_outputs=12; if (state_inputs=2b10) next_state=s0; else next_state=s3;end s3:begin comb_outputs=14; i

14、f (state_inputs=2b11) next_state=s3; else next_state=s4;end s4:begin comb_outputs=9; next_state=s0;end default: next_state=s0; endcase endendmodule那么怎樣采用三段式描述方法?那么怎樣采用三段式描述方法?MOORE 機機MEALY機機qOutput Is a Function of a Present State OnlyPresent StateRegisterNext StatefunctionOutputfunctionInputsPresen

15、t StateNext StateOutputsclockresetY=FQ qOutput Is a Function of a Present State and InputsPresent StateRegisterNext StatefunctionOutputfunctionInputsPresent StateNext StateOutputsclockresetY=FX,Q module mealy1(clk,din1,din2,rst,q);input clk,din1,din2,rst;output4:0q;reg4:0q; reg4:0pst;parameter st0=0

16、,st1=1,st2=2,st3=3,st4=4;always(posedge clk or posedge rst)begin if(rst)pst=st0; else begin case(pst) st0:if(din1=1b1)pst=st1;else pst=st0; st1:if(din1=1b1)pst=st2;else pst=st1; st2:if(din1=1b1)pst=st3;else pst=st2; st3:if(din1=1b1)pst=st4;else pst=st3; st4:if(din1=1b0)pst=st0;else pst=st4; default:

17、 pst=st0; endcase endendalways(pst or din2)begin case(pst) st0:if(din2=1b1)q=5h10;else q=5h0a; st1:if(din2=1b0)q=5h17;else q=5h14; st2:if(din2=1b1)q=5h15;else q=5h13; st3:if(din2=1b0)q=5h1b;else q=5h09; st4:if(din2=1b1)q=5h1d;else q=5h0d; default: q=5h0; endcase endendmoduleinput=0input=0input=1st0s

18、t1rst=1st2st301010st410011當(dāng)輸入信號或狀態(tài)發(fā)生變化,當(dāng)輸入信號或狀態(tài)發(fā)生變化,輸出信號即刻發(fā)生變化。輸出信號即刻發(fā)生變化。module mealy2(clk,din1,din2,rst,q);input clk,din1,din2,rst;output4:0q;reg4:0q; reg4:0pst;parameter st0=0,st1=1,st2=2,st3=3,st4=4;always(posedge clk or posedge rst)begin if(rst)pst=st0; else begin case(pst) st0:begin begin if(d

19、in2=1b1)q=5h10;else q=5h0a; end begin if(din1=1b1)pst=st1;else pst=st0;end end st1: begin begin if(din2=1b0)q=5h17;else q=5h14; end begin if(din1=1b1)pst=st2;else pst=st1; end end st2:begin begin if(din2=1b1)q=5h15;else q=5h13; end begin if(din1=1b1)pst=st3;else pst=st2; end end st3:begin begin if(d

20、in2=1b1)q=5h1b;else q=5h09; end begin if(din1=1b1)pst=st4;else pst=st3; end end st4:begin begin if(din2=1b1)q=5h1d;else q=5h0d; end begin if(din1=1b1)pst=st0;else pst=st4; end end default: begin pst=st0; q=5h0; endendcase end endendmodulemodule mealy1(clk,din1,din2,rst,q);input clk,din1,din2,rst;out

21、put4:0q;reg4:0q; reg4:0pst;parameter st0=0,st1=1,st2=2,st3=3,st4=4;always(posedge clk or posedge rst)begin if(rst)pst=st0; else begin case(pst) st0:if(din1=1b1)pst=st1;else pst=st0; st1:if(din1=1b1)pst=st2;else pst=st1; st2:if(din1=1b1)pst=st3;else pst=st2; st3:if(din1=1b1)pst=st4;else pst=st3; st4:

22、if(din1=1b0)pst=st0;else pst=st4; default: pst=st0; endcase endendalways(pst or din2)begin case(pst) st0:if(din2=1b1)q=5h10;else q=5h0a; st1:if(din2=1b0)q=5h17;else q=5h14; st2:if(din2=1b1)q=5h15;else q=5h13; st3:if(din2=1b0)q=5h1b;else q=5h09; st4:if(din2=1b1)q=5h1d;else q=5h0d; default: q=5h0; end

23、case endendmodule例位于十字路口的交通燈,在例位于十字路口的交通燈,在A方向和方向和B方向各有紅方向各有紅、黃、綠三盞燈,每、黃、綠三盞燈,每10秒變換一次。變換順序如下表:秒變換一次。變換順序如下表:東西方東西方向向b南北方南北方向向a十字路口十字路口狀態(tài)狀態(tài)A A方向方向(紅綠黃)(紅綠黃)B B方向方向(紅綠黃)(紅綠黃)S00 1 01 0 0S10 0 11 0 0S21 0 00 1 0S31 0 00 0 1S0010100S1001100S3100001S2100010module jtd(clk,rst,out);input clk,rst;output5:0out;parameter s0=0,s1=1,s2=2,s3=3;reg5:0c_state,next_state,out;always(posedge clk, posedge rst)begin if(rst)c_state=s0; else c_state=next_state; endalways(c_state)begin case(c_s

溫馨提示

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

評論

0/150

提交評論