版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三節(jié) 基于狀態(tài)機的Verilog HDL設(shè)計方法,一. Mealy型有限狀態(tài)機設(shè)計,Mealy型有限狀態(tài)機模型,有限狀態(tài)機從本質(zhì)上講 是由寄存器與組合邏輯 構(gòu)成的時序電路。 實用的狀態(tài)機一般都設(shè) 計成同步時序電路。 根據(jù)設(shè)計要求畫出狀態(tài) 轉(zhuǎn)移圖。 用一個always過程塊 (case或if-else)描述 組合邏輯(輸出、下一 個狀態(tài)需要的激勵)。 用另一個always過程塊 描述寄存器邏輯(狀態(tài)轉(zhuǎn) 換)。,例1:用Verilog HDL對“1101”序列檢測器的有限狀態(tài)機進行 描述。要求寫出設(shè)計說明、格式規(guī)范、書寫清晰,必要 時進行注釋。,設(shè)計說明:1. X為串行輸入,Z為是否檢測到有效序
2、列標志。 2. 對狀態(tài)A、B、C、D采用一位熱編碼,依次為 1000、0100、0010、0001。 3. 狀態(tài)A為系統(tǒng)初態(tài)。高電平有效的復(fù)位信號reset 使系統(tǒng)進入初態(tài)。 4. 系統(tǒng)時鐘clk上升沿有效。,/Mealy型“1101”序列檢測器描述 /端口說明,參數(shù)定義,數(shù)據(jù)類型定義 module sta_machine (x, clk, reset, z) ; parameter A=4b1000, B=4b0100, C=4b0010, D=4b0001; input x, clk, reset; output z; reg z; reg 4:1 current_state; reg 4
3、:1 next_state;,/組合邏輯部分描述 always (x or current_state) begin case (current_state) A: if (x=1)begin z=0; next_state=B; end else begin z=0; next_state=A; end B: if (x=1) begin z=0; next_state=C; end else begin z=0; next_state=A; end C: if (x=0) begin z=0; next_state=D; end else begin z=0; next_state=C;
4、end D: if (x=1) begin z=1; next_state=A; end else begin z=0; next_state=A; end default: begin z=0;next_state=A; end endcase end,/寄存器部分描述 always (posedge clk or posedge reset) begin if (reset) current_state=A; else current_state=next_state; end endmodule 設(shè)計完畢,二. Moore型有限狀態(tài)機設(shè)計,Moore狀態(tài)機的輸出只和現(xiàn)態(tài)有關(guān)。 根據(jù)設(shè)計要
5、求畫出狀態(tài)轉(zhuǎn)移圖。 用一個always過程塊(case或if-else)描述激勵組合邏輯(下一個狀態(tài)需要的激勵)。 用一個always過程塊(case或if-else)描述輸出的組合邏輯。 用另一個always過程塊 描述寄存器邏輯(復(fù)位和狀態(tài)轉(zhuǎn)換)。,例2:用Verilog HDL描述下列Moore型有限狀態(tài)機。,state0 out=001,state1 out=010,state2 out=100,state3 out=111,start=0,start=1,step2=0,step2=1,step3=0,step3=1,clr=1,設(shè)計說明:1.三個輸入信號start、step2、st
6、ep3 2.狀態(tài)state03采用格雷碼進行編碼 3.高有效的clr使系統(tǒng)進入初態(tài)state0 4.時鐘clk的上升沿進行狀態(tài)轉(zhuǎn)換,/例2 Moore狀態(tài)機描述 /端口說明,參數(shù)定義,信號類型說明 module Moore_FSM ( clk, clr, out, start, step2, step3 ) ; input clk, clr, start, step2, step3 ; output 2:0 out ; reg 2:0 out ; reg 1:0 state, next_state; parameter state0=2b00, state1=2b01, state2=2b11
7、, state3=2b10; /狀態(tài)編碼格雷碼,/下面的always進程描述復(fù)位及狀態(tài)轉(zhuǎn)換 always (posedge clk or posedge clr) begin if (clr) state=state0; else state=next_state; end /下面的always進程描述各狀態(tài)下的輸出組合邏輯 always ( state ) begin case ( state ) state0: out=3b001; state1: out=3b010; state2: out=3b100; state3: out=3b111; default: out=3b001; /避
8、免鎖存器的產(chǎn)生 endcase end,/下面的always進程根據(jù)現(xiàn)態(tài)、輸入描述應(yīng)進入的次態(tài) always (state or start or step2 or step3) begin case(state) state0: begin if (start) next_state=state1; else next_state=state0; end state1: begin next_state=state2; end state2: begin if (step2) next_state=state3; else next_state=state0; end state3: beg
9、in if (step3) next_state=state0; else next_state=state3; end default: next_state=state0; endcase end endmodule,三.基于狀態(tài)機設(shè)計中需要注意的幾個問題,1.起始狀態(tài)的選擇,選擇一個合理的電路復(fù)位時的起始狀態(tài),將使整個系統(tǒng)簡潔、高效。有些EDA軟件能自動為基于狀態(tài)機的設(shè)計選擇一個最佳的起始狀態(tài)。,2.狀態(tài)編碼,自然二進制編碼簡單易行,但從一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)時,有可能出現(xiàn)多位發(fā)生變化(例如1001),容易產(chǎn)生“毛刺”,引起邏輯錯誤。,格雷編碼相鄰狀態(tài)只有一位發(fā)生變化,減少產(chǎn)生“毛刺”
10、和一些暫態(tài)的可能性,提高可靠性。,一位熱碼編碼采用n位(n個觸發(fā)器)來編碼具有n個狀態(tài)的狀態(tài)機。雖然多用了觸發(fā)器,但可以有效節(jié)省和簡化組合電路。對于寄存器數(shù)量多、門邏輯相對較少的FPGA器件,常采用一位熱編碼方法。,三種編碼方法的比較,值得注意的是:有些EDA軟件(例如MUX+PLUS II)具有一位熱碼編碼選項供用戶選用。當采用一位熱碼編碼后,會有多余狀態(tài)(無效狀態(tài)),應(yīng)進行相應(yīng)處理。例如,采用case語句時,應(yīng)增加default分支項,以便在多余狀態(tài)下能自動回到相應(yīng)狀態(tài)(多為起始狀態(tài))。,3.Verilog HDL中狀態(tài)編碼的定義,常用parameter語句進行定義。,4.狀態(tài)轉(zhuǎn)換的描述,
11、一般采用case語句,清晰明了。也可用if-else語句。,一個實用的狀態(tài)機應(yīng)設(shè)計為在統(tǒng)一的時鐘信號邊沿觸發(fā),同步運行。,四.關(guān)于設(shè)計中的資源共享,例如:電路實現(xiàn)的功能:當sel=0時,sum=a+b;當sel=1時,sum=c+d;a、b、c、d的寬度可變,參數(shù)化設(shè)計時定義為4位。,1.實現(xiàn)方式一,先加后選,/方式一:兩個加法器,一個選擇器 module mode1 (sum, a, b, c, d, sel) ; parameter size=4 ; output size:0 sum ; input sel; input size-1:0 a , b , c , d ; reg size
12、:0 sum ; always (a or b or c or d or sel) begin if (sel) sum = c + d ; else sum = a + b ; end endmodule,將其綜合到EPF10K10器件中,查看報告文件,耗用18個邏輯單元(LC),2.實現(xiàn)方式二,先選后加。,/方式二:兩個選擇器,一個加法器 module mode2 (sum, a, b, c, d, sel) ; parameter size=4 ; output size:0 sum ; input sel; input size-1:0 a , b , c , d ; reg size-1:0 atemp, btemp ; reg size:0 sum ; always (a or b or c or d or sel) begin if (sel) begin atemp=c; btemp=d; end else begin atemp=a; btemp=b; end sum = atemp + btemp ; end endmodule,將其綜合到EPF10K10器件中,查看報告文件,耗用15個邏輯單元(LC),比較
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抑郁癥的預(yù)防與治療
- 右偏癱患者護理查房
- 中考誓師大會領(lǐng)導(dǎo)講話稿范文
- 教育機構(gòu)親子活動策劃方案
- 法律事務(wù)合同管理規(guī)范樣本
- 基層煤礦綜采作業(yè)流程及安全技術(shù)
- 英語口語大賽輔導(dǎo)培訓(xùn)方案詳解
- 幼兒園家長溝通與服務(wù)方案
- 建筑工程質(zhì)量監(jiān)督管理方案模板
- 工地揚塵控制技術(shù)方案及效果評估
- 蓋板涵蓋板計算
- 斜拉索無應(yīng)力索長的計算
- 智慧機場綜合安防系統(tǒng)解決方案
- 2024年高中英語學(xué)業(yè)水平測試及答案
- 天塔之光模擬控制PLC課程設(shè)計
- 初中日語人教版七年級第一冊單詞表講義
- GB/T 9065.5-2010液壓軟管接頭第5部分:37°擴口端軟管接頭
- GB/T 5847-2004尺寸鏈計算方法
- GB/T 20475.2-2006煤中有害元素含量分級第2部分:氯
- 北師大版一年級數(shù)學(xué)上冊口算比賽試題試卷
- 畢業(yè)設(shè)計混凝土框架結(jié)構(gòu)計算書
評論
0/150
提交評論