版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選課件 E D A技術(shù)與應(yīng)用第第10章章 VerilogVerilog狀態(tài)機(jī)狀態(tài)機(jī)設(shè)計技術(shù)設(shè)計技術(shù)精選課件 E D A技術(shù)與應(yīng)用10.1 Verilog狀態(tài)機(jī)的一般形式狀態(tài)機(jī)的一般形式 廣義而論,只要涉及觸發(fā)器的電路,無論電路大小,都廣義而論,只要涉及觸發(fā)器的電路,無論電路大小,都能歸結(jié)為狀態(tài)機(jī)。能歸結(jié)為狀態(tài)機(jī)。 有限狀態(tài)機(jī)用來有限狀態(tài)機(jī)用來實現(xiàn)一個數(shù)字電路的控制部分實現(xiàn)一個數(shù)字電路的控制部分。與。與CPU的功能類似,綜合了時序邏輯和組合邏輯電路。的功能類似,綜合了時序邏輯和組合邏輯電路。 CPU是通過操作指令和硬件操作單元來實現(xiàn)控制功能,是通過操作指令和硬件操作單元來實現(xiàn)控制功能,而有限狀
2、態(tài)機(jī)是而有限狀態(tài)機(jī)是通過狀態(tài)轉(zhuǎn)移來實現(xiàn)控制功能通過狀態(tài)轉(zhuǎn)移來實現(xiàn)控制功能。 綜合器能從不同表述形態(tài)的綜合器能從不同表述形態(tài)的HDL代碼中輕易萃取出狀態(tài)代碼中輕易萃取出狀態(tài)機(jī),并加以多側(cè)面、多目標(biāo)和多種形式的優(yōu)化。機(jī),并加以多側(cè)面、多目標(biāo)和多種形式的優(yōu)化。精選課件 E D A技術(shù)與應(yīng)用10.1.1 狀態(tài)機(jī)的特點與優(yōu)勢狀態(tài)機(jī)的特點與優(yōu)勢面對同一個設(shè)計項目的不同形式的邏輯設(shè)計方案中,利用有面對同一個設(shè)計項目的不同形式的邏輯設(shè)計方案中,利用有限狀態(tài)機(jī)的設(shè)計方案來描述和實現(xiàn)將可能是最佳選擇。限狀態(tài)機(jī)的設(shè)計方案來描述和實現(xiàn)將可能是最佳選擇。有限狀態(tài)機(jī)的優(yōu)越性有限狀態(tài)機(jī)的優(yōu)越性:(1)高效的順序控制模型)高
3、效的順序控制模型(2)容易利用現(xiàn)成的)容易利用現(xiàn)成的EDA工具進(jìn)行優(yōu)化設(shè)計工具進(jìn)行優(yōu)化設(shè)計(3)性能穩(wěn)定)性能穩(wěn)定(4)高速性能)高速性能(5)高可靠性能)高可靠性能精選課件 E D A技術(shù)與應(yīng)用10.1.2 狀態(tài)機(jī)的一般結(jié)構(gòu)狀態(tài)機(jī)的一般結(jié)構(gòu)用用Verilog設(shè)計的狀態(tài)機(jī)根據(jù)不同的設(shè)計的狀態(tài)機(jī)根據(jù)不同的分類分類標(biāo)準(zhǔn)可以分為多種不標(biāo)準(zhǔn)可以分為多種不同形式:同形式: 從狀態(tài)機(jī)的信號輸出方式上分:從狀態(tài)機(jī)的信號輸出方式上分:Mealy型型和和Moore型型狀態(tài)機(jī)狀態(tài)機(jī) 從狀態(tài)機(jī)的結(jié)構(gòu)描述上分:從狀態(tài)機(jī)的結(jié)構(gòu)描述上分:單過程單過程狀態(tài)機(jī)和狀態(tài)機(jī)和多過程多過程狀態(tài)機(jī)狀態(tài)機(jī) 從狀態(tài)表達(dá)方式上分:從狀態(tài)表達(dá)
4、方式上分:符號化符號化狀態(tài)機(jī)和狀態(tài)機(jī)和確定狀態(tài)編碼確定狀態(tài)編碼的狀的狀態(tài)機(jī)態(tài)機(jī) 從狀態(tài)機(jī)編碼方式上分:從狀態(tài)機(jī)編碼方式上分:順序編碼順序編碼、一位熱編碼一位熱編碼或或其他編其他編碼方式碼方式狀態(tài)機(jī)狀態(tài)機(jī)最一般和最常用的狀態(tài)機(jī)結(jié)構(gòu)中通常包含了最一般和最常用的狀態(tài)機(jī)結(jié)構(gòu)中通常包含了說明部分說明部分、主控主控時序過程時序過程、主控組合過程主控組合過程、輔助過程輔助過程等幾個部分等幾個部分精選課件 E D A技術(shù)與應(yīng)用說明部分說明部分中包含狀態(tài)轉(zhuǎn)換變量的定義和所有可能狀態(tài)的說明,中包含狀態(tài)轉(zhuǎn)換變量的定義和所有可能狀態(tài)的說明,必要時還要確定每一狀態(tài)的編碼形式,最好是純抽象的符號必要時還要確定每一狀態(tài)的編
5、碼形式,最好是純抽象的符號化狀態(tài)機(jī),即所定義的狀態(tài)序列和狀態(tài)轉(zhuǎn)換變量都不涉及具化狀態(tài)機(jī),即所定義的狀態(tài)序列和狀態(tài)轉(zhuǎn)換變量都不涉及具體的數(shù)值、編碼,甚至數(shù)據(jù)類型或變量類型。體的數(shù)值、編碼,甚至數(shù)據(jù)類型或變量類型。1、狀態(tài)機(jī)說明部分、狀態(tài)機(jī)說明部分parameter2: 0 s0=0, s1=1, s2=2 , s3=3, s4=4;reg 2: 0 current_state, next_state; 狀態(tài)元素狀態(tài)元素s0、s1等用關(guān)鍵詞等用關(guān)鍵詞parameter來定義,各狀態(tài)元素來定義,各狀態(tài)元素所取得數(shù)值或編碼必須寫出具體值。所取得數(shù)值或編碼必須寫出具體值。 parameter旁的位寬說明
6、可寫可不寫旁的位寬說明可寫可不寫 current_state是現(xiàn)態(tài)變量和是現(xiàn)態(tài)變量和next_state是次態(tài)變量是次態(tài)變量精選課件 E D A技術(shù)與應(yīng)用2005版本的版本的System Verilog1、狀態(tài)機(jī)說明部分、狀態(tài)機(jī)說明部分typedef enum s0, s1, s2, s3, s4 type_user;type_user current_state, next_state; typedef是用戶數(shù)據(jù)類型自定義語句關(guān)鍵詞是用戶數(shù)據(jù)類型自定義語句關(guān)鍵詞 enum是定義枚舉類型關(guān)鍵詞是定義枚舉類型關(guān)鍵詞 type_user是用戶定義狀態(tài)元素是用戶定義狀態(tài)元素s0、s1、s2、s3、s
7、4為為type_user類型的標(biāo)識符類型的標(biāo)識符 第二句將狀態(tài)變量第二句將狀態(tài)變量current_state、next_state定義為定義為type_user類型類型精選課件 E D A技術(shù)與應(yīng)用2、主控時序過程、主控時序過程 主控時序過程主控時序過程指負(fù)責(zé)狀態(tài)機(jī)運轉(zhuǎn)和在時鐘驅(qū)動下負(fù)責(zé)狀態(tài)指負(fù)責(zé)狀態(tài)機(jī)運轉(zhuǎn)和在時鐘驅(qū)動下負(fù)責(zé)狀態(tài)轉(zhuǎn)換的過程。轉(zhuǎn)換的過程。 狀態(tài)機(jī)是隨外部時鐘信號,以同步時序方式工作的,狀態(tài)狀態(tài)機(jī)是隨外部時鐘信號,以同步時序方式工作的,狀態(tài)機(jī)中必須包含一個機(jī)中必須包含一個對工作時鐘敏感對工作時鐘敏感的過程,狀態(tài)機(jī)向下一的過程,狀態(tài)機(jī)向下一狀態(tài)轉(zhuǎn)換的實現(xiàn)僅取決于時鐘信號的到來。狀態(tài)轉(zhuǎn)
8、換的實現(xiàn)僅取決于時鐘信號的到來。 當(dāng)時鐘的有效跳變到來時,時序過程只是當(dāng)時鐘的有效跳變到來時,時序過程只是機(jī)械地將代表次機(jī)械地將代表次態(tài)的信號態(tài)的信號next_state中的內(nèi)容送入現(xiàn)態(tài)的信號中的內(nèi)容送入現(xiàn)態(tài)的信號current_state中中,而信號,而信號next_state中的內(nèi)容完全由其他過程根據(jù)實際情中的內(nèi)容完全由其他過程根據(jù)實際情況來決定。況來決定。 此時序過程中也可放置一些同步或異步清此時序過程中也可放置一些同步或異步清0或置位方面的控或置位方面的控制信號。制信號。精選課件 E D A技術(shù)與應(yīng)用3、主控組合過程、主控組合過程 主控組合過程主控組合過程根據(jù)當(dāng)前狀態(tài)和外部的信號發(fā)出控
9、制信號,根據(jù)當(dāng)前狀態(tài)和外部的信號發(fā)出控制信號,同時確定下一狀態(tài)的走向。同時確定下一狀態(tài)的走向。 在時鐘的作用下,在時鐘的作用下,REG時序過程將次態(tài)信號的內(nèi)容時序過程將次態(tài)信號的內(nèi)容next_state傳遞傳遞給現(xiàn)態(tài)信號給現(xiàn)態(tài)信號current_state COM組合過程通過信號組合過程通過信號current_state中的狀態(tài)值,進(jìn)入相應(yīng)的狀態(tài)中的狀態(tài)值,進(jìn)入相應(yīng)的狀態(tài); 在此狀態(tài)中根據(jù)外部的信號(如在此狀態(tài)中根據(jù)外部的信號(如state_inputs)向內(nèi)或向外發(fā)出控制)向內(nèi)或向外發(fā)出控制信號(如信號(如com_outputs);); 同時根據(jù)外部信號(如同時根據(jù)外部信號(如state_i
10、nputs)向次態(tài)信號)向次態(tài)信號next_state中賦相中賦相應(yīng)的狀態(tài)值,確定下一狀態(tài)的走向;應(yīng)的狀態(tài)值,確定下一狀態(tài)的走向; 此狀態(tài)值通過此狀態(tài)值通過next_state傳給傳給REG時序過程,直到下一個時鐘脈沖時序過程,直到下一個時鐘脈沖的到來。的到來。精選課件 E D A技術(shù)與應(yīng)用4、輔助過程、輔助過程 輔助過程輔助過程用于配合狀態(tài)機(jī)工作的組合過程或時序過程。例用于配合狀態(tài)機(jī)工作的組合過程或時序過程。例如為了完成某種算法的過程,或為了存儲數(shù)據(jù)的存儲過程,如為了完成某種算法的過程,或為了存儲數(shù)據(jù)的存儲過程,或用于配合狀態(tài)機(jī)工作的其他時序過程等?;蛴糜谂浜蠣顟B(tài)機(jī)工作的其他時序過程等。 例
11、例10-1 module FSM_EXP (clk, reset, state_inputs, comb_outputs); input clk;/狀態(tài)機(jī)工作時鐘狀態(tài)機(jī)工作時鐘 input reset;/狀態(tài)機(jī)復(fù)位控制狀態(tài)機(jī)復(fù)位控制 input 0: 1 state_inputs;/來自外部的狀態(tài)機(jī)控制信號來自外部的狀態(tài)機(jī)控制信號 output 3: 0 comb_outputs;/狀態(tài)機(jī)對外部發(fā)出的控制信號輸出狀態(tài)機(jī)對外部發(fā)出的控制信號輸出 reg 3: 0 comb_outputs; parameter s0=0, s1=1, s2=2, s3=3, s4=4; /定義狀態(tài)參數(shù)定義狀態(tài)參數(shù)
12、 reg 4: 0 c_st, next_state; /定義現(xiàn)態(tài)和次態(tài)的狀態(tài)變量定義現(xiàn)態(tài)和次態(tài)的狀態(tài)變量 always (posedge clk or negedge reset) begin/主控時序過程主控時序過程 if (!reset) c_st=s0; /復(fù)位有效時,下一狀態(tài)進(jìn)入初態(tài)復(fù)位有效時,下一狀態(tài)進(jìn)入初態(tài)s0 else c_st=next_state; end精選課件 E D A技術(shù)與應(yīng)用 例例10-1-續(xù)續(xù) always (c_st or state_inputs) begin/主控組合過程主控組合過程 case (c_st) /為了在仿真波形中容易看清為了在仿真波形中容易看
13、清,將將current_state簡寫為簡寫為c_st s0 : begin comb_outputs=5; /進(jìn)入狀態(tài)進(jìn)入狀態(tài)s0時,輸出控制碼時,輸出控制碼5if (state_inputs=2b00) next_state=s0; /條件滿足條件滿足,回初態(tài)回初態(tài)s0else next_state=s1; end/條件不滿足,到下一狀態(tài)條件不滿足,到下一狀態(tài)s1 s1 : begin comb_outputs=8; /進(jìn)入狀態(tài)進(jìn)入狀態(tài)s1時,輸出控制碼時,輸出控制碼8if (state_inputs=2b01) next_state=s1;else next_state=s2; end
14、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 default : next_state =s0; /現(xiàn)態(tài)若未出現(xiàn)以上各態(tài),返回初態(tài)現(xiàn)態(tài)若未出現(xiàn)以上各態(tài),返回初態(tài)s0 endcase endendmodu
15、le精選課件 E D A技術(shù)與應(yīng)用狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖狀態(tài)機(jī)的工作時序狀態(tài)機(jī)的工作時序間接了解狀態(tài)機(jī)間接了解狀態(tài)機(jī)內(nèi)部運行情況內(nèi)部運行情況利用它改變狀態(tài)利用它改變狀態(tài)機(jī)變化模式和狀機(jī)變化模式和狀態(tài)轉(zhuǎn)變方向態(tài)轉(zhuǎn)變方向精選課件 E D A技術(shù)與應(yīng)用10.1.3 初始控制與表述初始控制與表述Verilog狀態(tài)機(jī)的相關(guān)設(shè)置控制:狀態(tài)機(jī)的相關(guān)設(shè)置控制:(1)打開打開“狀態(tài)機(jī)萃取狀態(tài)機(jī)萃取”開關(guān)開關(guān):AssignmentsSettings,在,在category欄,選擇欄,選擇Analysis & Synthesis Settings,單擊旁邊的,單擊旁邊的按鈕按鈕More Set
16、tings,在彈出的對話框下方,在彈出的對話框下方Existing option settings欄單擊選中欄單擊選中Extract Verilog State Machines。在上方的。在上方的Option的的Setting欄選擇欄選擇On精選課件 E D A技術(shù)與應(yīng)用10.1.3 初始控制與表述初始控制與表述Verilog狀態(tài)機(jī)的相關(guān)設(shè)置控制:狀態(tài)機(jī)的相關(guān)設(shè)置控制:(2)關(guān)于參數(shù)定義表述關(guān)于參數(shù)定義表述:在狀態(tài)機(jī)設(shè)計中,用:在狀態(tài)機(jī)設(shè)計中,用parameter進(jìn)進(jìn)行參數(shù)定義(綜合器萃取狀態(tài)機(jī)的主要依據(jù)),一旦打開行參數(shù)定義(綜合器萃取狀態(tài)機(jī)的主要依據(jù)),一旦打開“狀態(tài)機(jī)萃取狀態(tài)機(jī)萃取”開
17、關(guān),其定義的形式可以十分隨意。比如,開關(guān),其定義的形式可以十分隨意。比如,可以表述為可以表述為“parameter s0=0, s1=1”,也可以表述為,也可以表述為“parameter s0=4b1001, s1=4b0011”,最后狀態(tài)機(jī)被綜合的,最后狀態(tài)機(jī)被綜合的結(jié)果未必按照此表述方式來構(gòu)建。結(jié)果未必按照此表述方式來構(gòu)建。(3)狀態(tài)變量定義表述狀態(tài)變量定義表述:如果已打開:如果已打開“狀態(tài)機(jī)萃取狀態(tài)機(jī)萃取”開關(guān),開關(guān),定義句中位寬定義句中位寬msb: lsb的表述可以比較隨意,不必一定與狀的表述可以比較隨意,不必一定與狀態(tài)數(shù)對應(yīng)。假設(shè)有態(tài)數(shù)對應(yīng)。假設(shè)有5個狀態(tài),定義時個狀態(tài),定義時“re
18、g 2: 0 c_st, next_state”中用了位寬中用了位寬2:0,而不是,而不是4:0。一旦打開了一旦打開了“狀態(tài)機(jī)萃取狀態(tài)機(jī)萃取”開關(guān),就可利用開關(guān),就可利用Quartus II的狀態(tài)的狀態(tài)圖觀察器直觀了解當(dāng)前狀態(tài)圖走向,方法是:圖觀察器直觀了解當(dāng)前狀態(tài)圖走向,方法是:ToolsNetlist Viewers State Machine Viewer精選課件 E D A技術(shù)與應(yīng)用10.2 Moore型狀態(tài)機(jī)及其設(shè)計型狀態(tài)機(jī)及其設(shè)計 從信號輸出方式上分,有從信號輸出方式上分,有Moore型和型和Mealy型兩類狀態(tài)型兩類狀態(tài)機(jī)。機(jī)。 Mealy型狀態(tài)機(jī)型狀態(tài)機(jī)屬于異步輸出狀態(tài)機(jī),它的
19、輸出是當(dāng)前屬于異步輸出狀態(tài)機(jī),它的輸出是當(dāng)前狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴時鐘的同步。立即發(fā)生的,不依賴時鐘的同步。 Moore型狀態(tài)機(jī)型狀態(tài)機(jī)屬于同步輸出狀態(tài)機(jī),它的輸出僅為當(dāng)屬于同步輸出狀態(tài)機(jī),它的輸出僅為當(dāng)前狀態(tài)的函數(shù),這類狀態(tài)機(jī)在輸入發(fā)生變化時必須等待前狀態(tài)的函數(shù),這類狀態(tài)機(jī)在輸入發(fā)生變化時必須等待時鐘的到來,比時鐘的到來,比Mealy機(jī)要多等待一個時鐘周期。機(jī)要多等待一個時鐘周期。 例例10-1既屬于既屬于Mealy型狀態(tài)機(jī),又屬于型狀態(tài)機(jī),又屬于Moore型狀態(tài)機(jī)。型狀態(tài)機(jī)。精選課件 E D A技術(shù)
20、與應(yīng)用10.2.1 多過程結(jié)構(gòu)狀態(tài)機(jī)多過程結(jié)構(gòu)狀態(tài)機(jī)ADC0809工作時序和芯片引腳圖工作時序和芯片引腳圖 START為轉(zhuǎn)換為轉(zhuǎn)換啟動控制信號啟動控制信號,高電平有效。,高電平有效。 ALE為模擬信號輸入選通端口為模擬信號輸入選通端口地址鎖存信號地址鎖存信號,上升沿有效。,上升沿有效。 EOC為為狀態(tài)信狀態(tài)信號,號,START有效后,有效后,EOC為低電平,進(jìn)入為低電平,進(jìn)入轉(zhuǎn)換狀態(tài),轉(zhuǎn)換時間約轉(zhuǎn)換狀態(tài),轉(zhuǎn)換時間約100m ms,轉(zhuǎn)換結(jié)束后,轉(zhuǎn)換結(jié)束后,EOC變?yōu)楦咦優(yōu)楦唠娖健k娖健?OE為為輸出允許控輸出允許控制,高電平有效。制,高電平有效。精選課件 E D A技術(shù)與應(yīng)用控制控制ADC080
21、9采樣狀態(tài)圖采樣狀態(tài)圖監(jiān)測監(jiān)測EOC,低電平,轉(zhuǎn)換,低電平,轉(zhuǎn)換未結(jié)束,停留,高電平,未結(jié)束,停留,高電平,轉(zhuǎn)換結(jié)束,進(jìn)入轉(zhuǎn)換結(jié)束,進(jìn)入st3狀態(tài)機(jī)向狀態(tài)機(jī)向0809發(fā)出發(fā)出OE信號信號(高電平),允許輸出,(高電平),允許輸出,同時作為數(shù)據(jù)穩(wěn)定周期,同時作為數(shù)據(jù)穩(wěn)定周期,以便下一個狀態(tài)中向鎖存以便下一個狀態(tài)中向鎖存器鎖入可靠的數(shù)據(jù)。器鎖入可靠的數(shù)據(jù)。狀態(tài)機(jī)向狀態(tài)機(jī)向0809發(fā)出發(fā)出LOCK信號(上升沿),將信號(上升沿),將0809輸出的數(shù)據(jù)進(jìn)行鎖存。輸出的數(shù)據(jù)進(jìn)行鎖存。精選課件 E D A技術(shù)與應(yīng)用 例例10-2 :ADC0809采樣控制采樣控制 module ADC0809 (D, CL
22、K, EOC, RST, ALE, START, OE, ADDA, Q, LOCK_T); input 7: 0 D; /來自來自0809轉(zhuǎn)換好的轉(zhuǎn)換好的8位數(shù)據(jù)位數(shù)據(jù) input CLK, RST; /狀態(tài)機(jī)工作時鐘和系統(tǒng)復(fù)位控制狀態(tài)機(jī)工作時鐘和系統(tǒng)復(fù)位控制 input EOC; /轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換 output ALE; /8個模擬信號通道地址鎖存信號個模擬信號通道地址鎖存信號 output START, OE; /轉(zhuǎn)換啟動信號和數(shù)據(jù)輸出三態(tài)控制信號轉(zhuǎn)換啟動信號和數(shù)據(jù)輸出三態(tài)控制信號 output ADDA, LOCK_T; /信號通道控制
23、信號和鎖存測試信號信號通道控制信號和鎖存測試信號 output 7:0 Q; reg ALE, START, OE; parameter s0=0, s1=1, s2=2, s3=3, s4=4; /定義各狀態(tài)子類型定義各狀態(tài)子類型 reg4: 0 cs, next_state; /為了便于仿真顯示,現(xiàn)態(tài)名簡寫為為了便于仿真顯示,現(xiàn)態(tài)名簡寫為cs reg7: 0 REGL; reg LOCK; /轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時鐘信號轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時鐘信號 always (cs or EOC) begin /主控組合過程,規(guī)定各狀態(tài)轉(zhuǎn)換方式主控組合過程,規(guī)定各狀態(tài)轉(zhuǎn)換方式 case (cs) s0 :
24、 begin ALE=0; START=0; OE=0; LOCK=0;next_state=s1; end /0809初始化初始化 s1 : begin ALE=1; START=1; OE=0; LOCK=0;next_state=s2; end /啟動采樣信號啟動采樣信號START精選課件 E D A技術(shù)與應(yīng)用 例例10-2-續(xù)續(xù) :ADC0809采樣控制采樣控制 s2 : begin ALE=0; START=0; OE=0; LOCK=0;if (EOC=1b1) next_state=s3;/EOC=0表明轉(zhuǎn)換結(jié)束表明轉(zhuǎn)換結(jié)束else next_state=s2; end /轉(zhuǎn)換未
25、結(jié)束,繼續(xù)等待轉(zhuǎn)換未結(jié)束,繼續(xù)等待s3 : begin ALE=0; START=0; OE=1; LOCK=0;/開啟開啟OE,打開打開 AD數(shù)據(jù)口數(shù)據(jù)口next_state=s4; end /下一狀態(tài)無條件轉(zhuǎn)向下一狀態(tài)無條件轉(zhuǎn)向s4 s4 : begin ALE=0;START=0;OE=1;LOCK=1;/開啟數(shù)據(jù)鎖存信號開啟數(shù)據(jù)鎖存信號next_state=s0; enddefault : begin ALE=0; START=0; OE=0; LOCK=0;next_state=s0; end endcase end always (posedge CLK or posedge RS
26、T) begin/時序過程時序過程 if (RST) cs=s0; else cs=next_state; end always (posedge LOCK) if (LOCK) REGL=D;/在在LOCK上升沿上升沿 將轉(zhuǎn)換好的數(shù)據(jù)鎖入將轉(zhuǎn)換好的數(shù)據(jù)鎖入 assign ADDA=0; assign Q=REGL; /選擇模擬信號進(jìn)入通道選擇模擬信號進(jìn)入通道IN0 assign LOCK_T=LOCK; /將測試信號輸出將測試信號輸出endmodule精選課件 E D A技術(shù)與應(yīng)用采樣狀態(tài)機(jī)采樣狀態(tài)機(jī)結(jié)構(gòu)框圖結(jié)構(gòu)框圖程序中包含三個過程結(jié)構(gòu):程序中包含三個過程結(jié)構(gòu):時序過程時序過程REG:在:
27、在CLK的驅(qū)動下,不斷將的驅(qū)動下,不斷將next_state中的內(nèi)容(狀態(tài)中的內(nèi)容(狀態(tài)元素)賦給現(xiàn)態(tài)元素)賦給現(xiàn)態(tài)cs,并由此信號將狀態(tài)變量傳輸給,并由此信號將狀態(tài)變量傳輸給COM組合過程。組合過程。組合過程組合過程COM:(1)狀態(tài)譯碼功能。根據(jù)從現(xiàn)態(tài)信號狀態(tài)譯碼功能。根據(jù)從現(xiàn)態(tài)信號cs中獲得的狀態(tài)中獲得的狀態(tài)變量,以及來自變量,以及來自0809的狀態(tài)線信號的狀態(tài)線信號EOC,決定下一狀態(tài)的轉(zhuǎn)移方向,決定下一狀態(tài)的轉(zhuǎn)移方向,即次態(tài)的狀態(tài)變量。即次態(tài)的狀態(tài)變量。(2)采樣控制功能。根據(jù)采樣控制功能。根據(jù)cs中的狀態(tài)變量確定對中的狀態(tài)變量確定對0809的控制信號的控制信號ALE、START、O
28、E等輸出相應(yīng)控制信號,當(dāng)采樣結(jié)束等輸出相應(yīng)控制信號,當(dāng)采樣結(jié)束后還要通過后還要通過LOCK向鎖存器過程向鎖存器過程LATCH發(fā)出鎖存信號。發(fā)出鎖存信號。鎖存器輔助過程鎖存器輔助過程LATCH:將由:將由0809的的D7.0數(shù)據(jù)輸出口輸出的數(shù)據(jù)輸出口輸出的8位已位已轉(zhuǎn)換好的數(shù)據(jù)鎖存起來。轉(zhuǎn)換好的數(shù)據(jù)鎖存起來。精選課件 E D A技術(shù)與應(yīng)用ADC0809采樣狀態(tài)機(jī)工作時序采樣狀態(tài)機(jī)工作時序狀態(tài)狀態(tài)s0:復(fù)位信號后即進(jìn)入狀態(tài):復(fù)位信號后即進(jìn)入狀態(tài)s0。狀態(tài)狀態(tài)s1:第二個時鐘上升沿后,狀態(tài)機(jī)進(jìn)入狀態(tài):第二個時鐘上升沿后,狀態(tài)機(jī)進(jìn)入狀態(tài)s1(即(即cs=s1),),由由START、ALE發(fā)出啟動采樣和
29、地址選通的控制信號。發(fā)出啟動采樣和地址選通的控制信號。狀態(tài)狀態(tài)s2:EOC由高電平變?yōu)榈碗娖剑筛唠娖阶優(yōu)榈碗娖剑?809的的8位數(shù)據(jù)輸出端呈現(xiàn)位數(shù)據(jù)輸出端呈現(xiàn)高阻態(tài)高阻態(tài)“ZZ”。等待。等待CLK數(shù)個時鐘周期后,數(shù)個時鐘周期后,EOC變?yōu)楦唠娖剑優(yōu)楦唠娖?,表示轉(zhuǎn)換結(jié)束。表示轉(zhuǎn)換結(jié)束。狀態(tài)狀態(tài)s3:在此狀態(tài)的輸出允許:在此狀態(tài)的輸出允許OE被設(shè)置成高電平。此時被設(shè)置成高電平。此時8089的的數(shù)據(jù)輸出端數(shù)據(jù)輸出端D7.0即輸出已經(jīng)轉(zhuǎn)換好的數(shù)據(jù)即輸出已經(jīng)轉(zhuǎn)換好的數(shù)據(jù)5EH。狀態(tài)狀態(tài)s4:LOCK_T發(fā)出一個脈沖,其上升沿立即將發(fā)出一個脈沖,其上升沿立即將D端口的端口的5E鎖入鎖入Q和和REGL中
30、。中。由內(nèi)部由內(nèi)部LOCK信信號引出的號引出的測試信號測試信號激勵按激勵按0809控制控制時序人為時序人為設(shè)定設(shè)定精選課件 E D A技術(shù)與應(yīng)用 例例10-3:修改后的:修改后的ADC0809采樣控制采樣控制 /將組合過程將組合過程COM拆分為兩個部分拆分為兩個部分 always (cs or EOC) begin/狀態(tài)譯碼和狀態(tài)轉(zhuǎn)換狀態(tài)譯碼和狀態(tài)轉(zhuǎn)換 case (cs)s0 : next_state=s1;s1 : next_state=s2;s2 : if (EOC=1b1) next_state=s3; else next_state=s2; s3 : next_state=s4; s4
31、 : next_state=s0; default : next_state=s0; endcase end always (cs or EOC) begin/對外控制信號輸出對外控制信號輸出 case (cs)s0 : begin ALE=0; START=0; OE=0; LOCK=0; ends1 : begin ALE=1; START=1; OE=0; LOCK=0; end s2 : begin ALE=0; START=0; OE=0; LOCK=0; end s3 : begin ALE=0; START=0; OE=1; LOCK=0; end s4 : begin ALE=
32、0; START=0; OE=1; LOCK=1; end default : begin ALE=0; START=0; OE=0; LOCK=0; end endcase end精選課件 E D A技術(shù)與應(yīng)用10.2.2 序列檢測器及其狀態(tài)機(jī)設(shè)計序列檢測器及其狀態(tài)機(jī)設(shè)計 序列檢測器序列檢測器用于檢測一組或多組由二進(jìn)制碼組成的脈沖序用于檢測一組或多組由二進(jìn)制碼組成的脈沖序列信號,當(dāng)序列檢測器連續(xù)收到一組串行二進(jìn)制碼后,如列信號,當(dāng)序列檢測器連續(xù)收到一組串行二進(jìn)制碼后,如果這組碼與檢測器中預(yù)先設(shè)置的碼相同,則輸出果這組碼與檢測器中預(yù)先設(shè)置的碼相同,則輸出1,否則輸,否則輸出出0。 這種檢測的這
33、種檢測的關(guān)鍵關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要在于正確碼的收到必須是連續(xù)的,這就要求檢測器必須記住前一次正確碼及正確序列,直到連續(xù)的求檢測器必須記住前一次正確碼及正確序列,直到連續(xù)的檢測中所收到的每一位碼都與預(yù)置數(shù)的對應(yīng)碼相同,任何檢測中所收到的每一位碼都與預(yù)置數(shù)的對應(yīng)碼相同,任何一位不相等都將回到初始狀態(tài)重新開始檢測。一位不相等都將回到初始狀態(tài)重新開始檢測。精選課件 E D A技術(shù)與應(yīng)用 例例10-4:8位序列數(shù)位序列數(shù)11010011的序列檢測器的序列檢測器 module SCHK (input CLK, DIN, RST, output SOUT); parameter s0=40
34、, s1=41, s2=42, s3=43, s4=44, s5=45, s6=46, s7=47, s8=48;/設(shè)定設(shè)定9個狀態(tài)參數(shù)個狀態(tài)參數(shù) reg 8: 0 ST, NST; always (posedge CLK or posedge RST) begin if (RST) ST=s0; else ST=NST; end always (ST or DIN) begin /11010011串行輸入,高位在前串行輸入,高位在前 case (ST)s0 : if (DIN=1b1) NST=s1; else NST=s0;s1 : if (DIN=1b1) NST=s2; else NS
35、T=s0;s2 : if (DIN=1b0) NST=s3; else NST=s0;s3 : if (DIN=1b1) NST=s4; else NST=s0;s4 : if (DIN=1b0) NST=s5; else NST=s0;s5 : if (DIN=1b0) NST=s6; else NST=s0;s6 : if (DIN=1b1) NST=s7; else NST=s0;s7 : if (DIN=1b1) NST=s8; else NST=s0;s8 : if (DIN=1b0) NST=s3; else NST=s0;default : NST=s0; endcase end
36、 assign SOUT= (ST=s8);endmodule測出的數(shù)據(jù)測出的數(shù)據(jù)110恰好與恰好與原序列數(shù)的頭三位相同原序列數(shù)的頭三位相同精選課件 E D A技術(shù)與應(yīng)用10.3 Mealy型狀態(tài)機(jī)設(shè)計型狀態(tài)機(jī)設(shè)計 Mealy型狀態(tài)機(jī)型狀態(tài)機(jī)與與Moore型狀態(tài)機(jī)相比,輸出變化要領(lǐng)型狀態(tài)機(jī)相比,輸出變化要領(lǐng)先一個周期,即一旦輸入信號或狀態(tài)發(fā)生變化,輸出信先一個周期,即一旦輸入信號或狀態(tài)發(fā)生變化,輸出信號即刻發(fā)生變化。號即刻發(fā)生變化。Mealy機(jī)與機(jī)與Moore機(jī)在設(shè)計上基本相機(jī)在設(shè)計上基本相同,只是同,只是Mealy機(jī)的組合過程結(jié)構(gòu)中的輸出信號是當(dāng)前機(jī)的組合過程結(jié)構(gòu)中的輸出信號是當(dāng)前狀態(tài)和當(dāng)前
37、輸入的函數(shù)。狀態(tài)和當(dāng)前輸入的函數(shù)。 Mealy機(jī)將時序過程與組合過程混合,在同一個過程中機(jī)將時序過程與組合過程混合,在同一個過程中決定主控狀態(tài)譯碼和主控時序,決定主控狀態(tài)譯碼和主控時序, 所以不需要用次態(tài)來傳所以不需要用次態(tài)來傳遞狀態(tài)。遞狀態(tài)。精選課件 E D A技術(shù)與應(yīng)用 例例10-5 :雙過程:雙過程Mealy機(jī)機(jī) module MEALY1 (input CLK, DIN1, DIN2, RST, output reg 4: 0 Q); reg 4: 0 PST; parameter st0=0, st1=1, st2=2, st3=3, st4=4; always (posedge C
38、LK or posedge RST) begin : REG if (RST) PST=st0; else begincase (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 : PST=s
39、t0;endcase end endAlways (PST of DIN2) begin : COM/輸出控制信號的過程輸出控制信號的過程 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=5b00000;
40、 endcase endendmodule精選課件 E D A技術(shù)與應(yīng)用過程過程REG是時序與組合混合型過程,將狀態(tài)機(jī)的主控時序電是時序與組合混合型過程,將狀態(tài)機(jī)的主控時序電路和主控狀態(tài)譯碼電路同時用一個過程來表達(dá)。路和主控狀態(tài)譯碼電路同時用一個過程來表達(dá)。過程過程COM負(fù)責(zé)根據(jù)狀態(tài)和輸入信號給出不同的對外控制信負(fù)責(zé)根據(jù)狀態(tài)和輸入信號給出不同的對外控制信號輸出。號輸出。雙過程雙過程Mealy機(jī)狀態(tài)圖機(jī)狀態(tài)圖精選課件 E D A技術(shù)與應(yīng)用雙過程雙過程Mealy機(jī)仿真波形機(jī)仿真波形 PST是現(xiàn)態(tài)轉(zhuǎn)換情況,是現(xiàn)態(tài)轉(zhuǎn)換情況,DIN1控制各狀態(tài)的轉(zhuǎn)換方式,控制各狀態(tài)的轉(zhuǎn)換方式,DIN2控制對控制對外控制
41、信號碼的輸出:當(dāng)復(fù)位后,且外控制信號碼的輸出:當(dāng)復(fù)位后,且DIN1=0時,一直處于時,一直處于st0狀狀態(tài),若此時態(tài),若此時DIN2=0,輸出碼,輸出碼0AH;當(dāng);當(dāng)DIN1都為都為1時,每一個時鐘時,每一個時鐘上升沿后,都轉(zhuǎn)入下一狀態(tài),直到狀態(tài)上升沿后,都轉(zhuǎn)入下一狀態(tài),直到狀態(tài)s4,同時根據(jù)每一個狀態(tài),同時根據(jù)每一個狀態(tài)下的下的DIN2的值輸出相應(yīng)設(shè)定的控制碼,一直到的值輸出相應(yīng)設(shè)定的控制碼,一直到DIN1=0才回到初才回到初始狀態(tài)始狀態(tài)s0。 輸出信號中存在毛刺,為了排除毛刺,可通過選擇可能的優(yōu)化設(shè)輸出信號中存在毛刺,為了排除毛刺,可通過選擇可能的優(yōu)化設(shè)置,也可將輸出通過寄存器鎖存,濾除毛
42、刺。置,也可將輸出通過寄存器鎖存,濾除毛刺。毛刺毛刺一旦輸入信號一旦輸入信號DIN2發(fā)生變化,發(fā)生變化,Q即刻發(fā)生變化(異步)即刻發(fā)生變化(異步)精選課件 E D A技術(shù)與應(yīng)用 例例10-6 :單過程:單過程Mealy機(jī)機(jī) module MEALY2 (input CLK, DIN1, DIN2, RST, output reg 4: 0 Q); reg 4: 0 PST; parameter st0=0, st1=1, st2=2, st3=3, st4=4; always (posedge CLK or posedge RST) begin : REG if (RST) PST=st0;
43、else begincase (PST) st0 : begin if (DIN2=1b1) Q=5H10; else Q=5H0A; if (DIN1=1b1) PST=st1; else PST=st0; end st1 : begin if (DIN2=1b0) Q=5H17; else Q=5H14; if (DIN1=1b1) PST=st2; else PST=st1; end st2 : begin if (DIN2=1b1) Q=5H15; else Q=5H13; if (DIN1=1b1) PST=st3; else PST=st2; end st3 : begin if
44、(DIN2=1b0) Q=5H1B; else Q=5H09; if (DIN1=1b1) PST=st4; else PST=st3; end st4 : begin if (DIN2=1b1) Q=5H1D; else Q=5H0D; if (DIN1=1b0) PST=st0; else PST=st4; default : begin PST=st0; Q=5b00000; endendcase end endendmodule精選課件 E D A技術(shù)與應(yīng)用單過程單過程Mealy機(jī)仿真波形機(jī)仿真波形單過程單過程Mealy機(jī)狀態(tài)圖(與雙過程相同)機(jī)狀態(tài)圖(與雙過程相同)輸入信號輸入信號D
45、IN2發(fā)生變化,要等時鐘上升沿后發(fā)生變化,要等時鐘上升沿后Q才發(fā)生變化(同步)才發(fā)生變化(同步)精選課件 E D A技術(shù)與應(yīng)用 例例10-7 :單過程序列檢測器:單過程序列檢測器Mealy機(jī)機(jī) module SCHK (input CLK, DIN, RST, output SOUT); parameter s0=0, s1=1, s2=2, s3=3, s4=4, s5=5, s6=6, s7=7, s8=8; reg 8: 0 ST; always (posedge CLK) begin SOUT=0; if (RST) ST=s0; else begincase (ST) s0 : if
46、 (DIN=1b1) ST=s1; else ST=s0; s1 : if (DIN=1b1) ST=s2; else ST=s0; s2 : if (DIN=1b0) ST=s3; else ST=s0; s3 : if (DIN=1b1) ST=s4; else ST=s0; s4 : if (DIN=1b0) ST=s5; else ST=s0; s5 : if (DIN=1b0) ST=s6; else ST=s0; s6 : if (DIN=1b1) ST=s7; else ST=s0; s7 : if (DIN=1b1) ST=s8; else ST=s0; s8 : begin
47、SOUT=1; if (DIN=1b0) ST=s3; else ST=s0; end default : ST=s0; endcase end endendmodule精選課件 E D A技術(shù)與應(yīng)用單過程序列檢測器單過程序列檢測器Mealy機(jī)仿真波形機(jī)仿真波形 與雙過程序列檢測器與雙過程序列檢測器Moore機(jī)相比,單過程機(jī)相比,單過程Mealy機(jī)的仿真波形在機(jī)的仿真波形在SOUT的輸出延遲了一個時鐘,這種延遲數(shù)據(jù)具有濾波作用。如的輸出延遲了一個時鐘,這種延遲數(shù)據(jù)具有濾波作用。如果果SOUT是一個多位復(fù)雜算法的組合邏輯輸出,可能會有許多毛是一個多位復(fù)雜算法的組合邏輯輸出,可能會有許多毛刺,引起
48、不良后果,利用單過程刺,引起不良后果,利用單過程Mealy機(jī)形式可以有所改善。機(jī)形式可以有所改善。雙過程序列檢測器雙過程序列檢測器Moore機(jī)仿真波形機(jī)仿真波形精選課件 E D A技術(shù)與應(yīng)用10.4 狀態(tài)機(jī)圖形編輯設(shè)計狀態(tài)機(jī)圖形編輯設(shè)計(1)打開狀態(tài)機(jī)圖形編輯窗打開狀態(tài)機(jī)圖形編輯窗:在:在Quartus II的工程管理窗的工程管理窗中點擊中點擊FileNew,選擇狀態(tài)機(jī)文件,選擇狀態(tài)機(jī)文件State Machine File。(2)打開狀態(tài)機(jī)圖形編輯窗后,在)打開狀態(tài)機(jī)圖形編輯窗后,在Quartus II的工程管理的工程管理窗中點擊窗中點擊ToolsState MachineWizard。精選
49、課件 E D A技術(shù)與應(yīng)用(3)在)在State Machine Wizard最初的對話框中選擇生成一個最初的對話框中選擇生成一個新狀態(tài)機(jī)新狀態(tài)機(jī)“Create a new state machine design”,然后在后面,然后在后面出來的框中分別選擇復(fù)位信號控制方式和有效方式,如異步出來的框中分別選擇復(fù)位信號控制方式和有效方式,如異步和高電平有效:和高電平有效:Asynchronous和和active-high。精選課件 E D A技術(shù)與應(yīng)用(4)在狀態(tài)機(jī)編輯器對話框中設(shè)置)在狀態(tài)機(jī)編輯器對話框中設(shè)置狀態(tài)元素狀態(tài)元素、輸入輸出信號輸入輸出信號、狀態(tài)轉(zhuǎn)換條件狀態(tài)轉(zhuǎn)換條件等。等。狀態(tài)元素狀
50、態(tài)元素輸入信號輸入信號轉(zhuǎn)換狀態(tài)條件轉(zhuǎn)換狀態(tài)條件輸出信號輸出信號不同狀態(tài)對應(yīng)的不同狀態(tài)對應(yīng)的輸出信號的值輸出信號的值精選課件 E D A技術(shù)與應(yīng)用(5)完成后存盤,文件后綴是)完成后存盤,文件后綴是.smf??梢詮臓顟B(tài)機(jī)圖形編輯。可以從狀態(tài)機(jī)圖形編輯器上看到轉(zhuǎn)換圖形,還可以利用左側(cè)的工具進(jìn)行一些修改補(bǔ)器上看到轉(zhuǎn)換圖形,還可以利用左側(cè)的工具進(jìn)行一些修改補(bǔ)充。將這個圖形狀態(tài)機(jī)存盤后,可以以此文件作為工程進(jìn)行充。將這個圖形狀態(tài)機(jī)存盤后,可以以此文件作為工程進(jìn)行設(shè)計。設(shè)計。狀態(tài)轉(zhuǎn)換圖形狀態(tài)轉(zhuǎn)換圖形精選課件 E D A技術(shù)與應(yīng)用(6)也可以將這個圖形狀態(tài)機(jī)文件轉(zhuǎn)變成)也可以將這個圖形狀態(tài)機(jī)文件轉(zhuǎn)變成HDL
51、代碼文件。選代碼文件。選擇擇ToolsGenerate HDL File(HDL文件控制項),在打開的文件控制項),在打開的窗口中,選擇需要轉(zhuǎn)變的硬件描述語言項,包括窗口中,選擇需要轉(zhuǎn)變的硬件描述語言項,包括VHDL、Verilog HDL或或System Verilog。精選課件 E D A技術(shù)與應(yīng)用10.5 不同編碼類型狀態(tài)機(jī)不同編碼類型狀態(tài)機(jī) 用用文字符號文字符號定義各狀態(tài)元素的狀態(tài)機(jī)稱為定義各狀態(tài)元素的狀態(tài)機(jī)稱為符號化狀態(tài)機(jī)符號化狀態(tài)機(jī),其狀態(tài)元素的具體編碼由其狀態(tài)元素的具體編碼由Verilog狀態(tài)機(jī)的綜合器根據(jù)預(yù)設(shè)狀態(tài)機(jī)的綜合器根據(jù)預(yù)設(shè)的約束來確定。的約束來確定。 可直接將各狀態(tài)用可
52、直接將各狀態(tài)用具體的二進(jìn)制數(shù)具體的二進(jìn)制數(shù)來定義,不使用文字符來定義,不使用文字符號,這種編碼方式稱為號,這種編碼方式稱為直接編碼方式直接編碼方式。精選課件 E D A技術(shù)與應(yīng)用10.5.1 直接輸出型編碼直接輸出型編碼最典型的應(yīng)用實例就是計數(shù)器。計數(shù)器本質(zhì)上是一個主控時最典型的應(yīng)用實例就是計數(shù)器。計數(shù)器本質(zhì)上是一個主控時序過程與一個主控組合過程合二為一的狀態(tài)機(jī),計數(shù)輸出就序過程與一個主控組合過程合二為一的狀態(tài)機(jī),計數(shù)輸出就是各狀態(tài)的狀態(tài)碼。是各狀態(tài)的狀態(tài)碼。決定了計數(shù)進(jìn)決定了計數(shù)進(jìn)制數(shù)(或膜制數(shù)(或膜n)計數(shù)輸出是計數(shù)輸出是此狀態(tài)機(jī)狀此狀態(tài)機(jī)狀態(tài)碼輸出態(tài)碼輸出若為異步清若為異步清0,則計數(shù)器
53、是模則計數(shù)器是模m計數(shù)器,若計數(shù)器,若為同步清為同步清0,則計數(shù)器是模則計數(shù)器是模m+1計數(shù)器計數(shù)器精選課件 E D A技術(shù)與應(yīng)用狀態(tài)碼直接輸出型狀態(tài)機(jī)狀態(tài)碼直接輸出型狀態(tài)機(jī):將狀態(tài)編碼直接輸出作為控制信:將狀態(tài)編碼直接輸出作為控制信號,即號,即output=state,要求各狀態(tài)的編碼作特殊的安排,以適,要求各狀態(tài)的編碼作特殊的安排,以適應(yīng)控制對象的要求。應(yīng)控制對象的要求。狀狀態(tài)態(tài)狀態(tài)編碼狀態(tài)編碼STARTALEOELOCKB功能說明功能說明s000000初始態(tài)初始態(tài)s111000啟動轉(zhuǎn)換啟動轉(zhuǎn)換s200001若測得若測得EOC=1時,轉(zhuǎn)下時,轉(zhuǎn)下一狀態(tài)一狀態(tài)ST3s300100輸出轉(zhuǎn)換好的
54、數(shù)據(jù)輸出轉(zhuǎn)換好的數(shù)據(jù)s400110利用利用LOCK的上升沿江的上升沿江轉(zhuǎn)換好的數(shù)據(jù)鎖存轉(zhuǎn)換好的數(shù)據(jù)鎖存控制控制ADC0809采樣狀態(tài)機(jī)的狀態(tài)編碼表采樣狀態(tài)機(jī)的狀態(tài)編碼表精選課件 E D A技術(shù)與應(yīng)用 例例10-8 :ADC0809采樣控制(狀態(tài)碼直接輸出型)采樣控制(狀態(tài)碼直接輸出型) module ADC0809 (D, CLK, ECO, RST, ALE, START, OE, ADDA, Q, LOCK_T); input 7: 0 D; input CLK, RST, EOC; output START, OE, ALE, ADDA, LOCK_T; output 7: 0 Q; p
55、arameter s0=5B00000, s1=5B11000, s2=5B00001, s3=5B00100, s4=5B00110; reg 4: 0 cs, SOUT, next_state; reg7: 0 REGL; reg LOCK; always (cs or EOC) begin case (cs) s0 : begin next_state=s1; SOUT=s0; end s1 : begin next_state=s2; SOUT=s1; end s2 : begin SOUT=s2; if (EOC=1b1) next_state=s3; else next_state
56、=s2; end s3 : begin SOUT=s3; next_state=s4; end s4 : begin SOUT=s4; next_state=s0; end default : begin next_state=s0; SOUT=s0; end endcase end always (posedge CLK or posedge RST) begin /時序過程時序過程 if (RST) cs=s0; else cs=next_state; end always (posedge SOUT1) /寄存器過程寄存器過程 if (SOUT1) REGAL=D; assign ADD
57、A=0; assign Q=REGL; assign LOCK_T=SOUT1; assign OE=SOUT2; assign ALE=SOUT3; assign START=SOUT4;endmodule精選課件 E D A技術(shù)與應(yīng)用狀態(tài)機(jī)工作時序狀態(tài)機(jī)工作時序狀態(tài)碼直接輸出型狀態(tài)機(jī)的優(yōu)點狀態(tài)碼直接輸出型狀態(tài)機(jī)的優(yōu)點:輸出速度快,不大可能出:輸出速度快,不大可能出現(xiàn)毛刺現(xiàn)象(因為控制輸出信號直接來自構(gòu)成狀態(tài)編碼的觸現(xiàn)毛刺現(xiàn)象(因為控制輸出信號直接來自構(gòu)成狀態(tài)編碼的觸發(fā)器)。發(fā)器)。狀態(tài)碼直接輸出型狀態(tài)機(jī)的缺點狀態(tài)碼直接輸出型狀態(tài)機(jī)的缺點:程序可讀性差,用于狀態(tài):程序可讀性差,用于狀態(tài)譯碼的
58、組合邏輯資源比其他以相同觸發(fā)器數(shù)量構(gòu)成的狀態(tài)要譯碼的組合邏輯資源比其他以相同觸發(fā)器數(shù)量構(gòu)成的狀態(tài)要多,而且控制非法狀態(tài)出現(xiàn)的容錯技術(shù)要求較高。多,而且控制非法狀態(tài)出現(xiàn)的容錯技術(shù)要求較高。精選課件 E D A技術(shù)與應(yīng)用10.5.2 用宏定義語句定義狀態(tài)編碼用宏定義語句定義狀態(tài)編碼 例例10-9 :ADC0809采樣控制(宏替換語句采樣控制(宏替換語句define定定義狀態(tài)元素)義狀態(tài)元素) define s0 5B00000define s1 5B11000define s2 5B00001define s3 5B00100define s4 5B00110module ADC0809 (D,
59、CLK, ECO, RST, ALE, START, OE, ADDA, Q, LOCK_T); input 7: 0 D; input CLK, RST, EOC; output START, OE, ALE, ADDA, LOCK_T; output 7: 0 Q;reg 4: 0 cs, SOUT, next_state; reg7: 0 REGL; reg LOCK; always (cs or EOC) begin case (cs) s0 : begin next_state=s1; SOUT=s0; end s1 : begin next_state=s2; SOUT=s1; e
60、nd s2 : begin SOUT=s2; if (EOC=1b1) next_state=s3; else next_state=s2; end s3 : begin SOUT=s3; next_state=s4; end s4 : begin SOUT=s4; next_state=s0; end default : begin next_state=s0; SOUT=s0; end endcase end精選課件 E D A技術(shù)與應(yīng)用10.5.2 用宏定義語句定義狀態(tài)編碼用宏定義語句定義狀態(tài)編碼 例例10-9 -續(xù)續(xù):ADC0809采樣控制(宏替換語句采樣控制(宏替換語句define定義狀態(tài)元
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年五金建材加盟協(xié)議
- 2025年分期家庭教育合同
- 《小島失蹤之謎》課件
- 2025年度綠色環(huán)保木材進(jìn)口與銷售合作合同范本大全4篇
- 二零二五年度冷鏈物流倉單質(zhì)押貸款服務(wù)協(xié)議2篇
- 二零二五年度競業(yè)禁止協(xié)議法律風(fēng)險防控及合規(guī)咨詢合同
- 二零二五年度商業(yè)地產(chǎn)地下車位銷售及品牌推廣協(xié)議
- 二零二五年度股份有限公司私下股份分配與公司戰(zhàn)略協(xié)議書
- 二零二五版鋁單板幕墻材料采購專項合同4篇
- 二零二五年度離婚協(xié)議中兩個子女教育支持合同
- 2025屆安徽省皖南八校高三上學(xué)期8月摸底考試英語試題+
- 工會資金采購管理辦法
- 玩具活動方案設(shè)計
- Q∕GDW 516-2010 500kV~1000kV 輸電線路劣化懸式絕緣子檢測規(guī)程
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 家長心理健康教育知識講座
- GB/T 292-2023滾動軸承角接觸球軸承外形尺寸
- 2024年九省聯(lián)考高考數(shù)學(xué)卷試題真題答案詳解(精校打?。?/a>
- 軍人結(jié)婚函調(diào)報告表
- 民用無人駕駛航空器實名制登記管理規(guī)定
- 北京地鐵6號線
評論
0/150
提交評論