《數(shù)字邏輯》第7章時(shí)序邏輯電路_第1頁
《數(shù)字邏輯》第7章時(shí)序邏輯電路_第2頁
《數(shù)字邏輯》第7章時(shí)序邏輯電路_第3頁
《數(shù)字邏輯》第7章時(shí)序邏輯電路_第4頁
《數(shù)字邏輯》第7章時(shí)序邏輯電路_第5頁
已閱讀5頁,還剩203頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、? ?數(shù)字邏輯數(shù)字邏輯? ?第第7 7章時(shí)序邏輯章時(shí)序邏輯電路電路2第第7章章 時(shí)序邏輯電路時(shí)序邏輯電路 本章介紹時(shí)序邏輯電路的描述方法和分析方法,具體本章介紹時(shí)序邏輯電路的描述方法和分析方法,具體介紹介紹FSMFSM、存放器、移位存放器、計(jì)數(shù)器等常用時(shí)序邏輯、存放器、移位存放器、計(jì)數(shù)器等常用時(shí)序邏輯電路的工作原理、邏輯功能及使用方法,時(shí)序邏輯電路電路的工作原理、邏輯功能及使用方法,時(shí)序邏輯電路和數(shù)字系統(tǒng)的和數(shù)字系統(tǒng)的HDLHDL設(shè)計(jì)方法。設(shè)計(jì)方法。v 概述概述 v 有限狀態(tài)機(jī)有限狀態(tài)機(jī) v 數(shù)碼存放器和移位存放器數(shù)碼存放器和移位存放器v 計(jì)數(shù)器計(jì)數(shù)器v 基于基于Verilog HDL的時(shí)序邏

2、輯電路設(shè)計(jì)的時(shí)序邏輯電路設(shè)計(jì)3本章重點(diǎn)本章重點(diǎn) v 時(shí)序邏輯電路的描述方法和分析方法;時(shí)序邏輯電路的描述方法和分析方法;v 有限狀態(tài)機(jī)有限狀態(tài)機(jī)FSM的的HDL設(shè)計(jì)方法;設(shè)計(jì)方法;v 常用時(shí)序邏輯電路的工作原理、邏輯功常用時(shí)序邏輯電路的工作原理、邏輯功能及使用方法;能及使用方法;v 基于基于Verilog HDL的時(shí)序邏輯電路設(shè)計(jì)的時(shí)序邏輯電路設(shè)計(jì)方法。方法。4 概述概述 7.1.1 時(shí)序邏輯電路的描述方法時(shí)序邏輯電路的描述方法7.1.2 時(shí)序邏輯電路的分析方法時(shí)序邏輯電路的分析方法57.1.1 時(shí)序邏輯電路的描述方法時(shí)序邏輯電路的描述方法數(shù)數(shù)字字邏邏輯輯組合邏輯組合邏輯由門電路構(gòu)成,沒有存儲(chǔ)

3、電路和反饋電路由門電路構(gòu)成,沒有存儲(chǔ)電路和反饋電路時(shí)序邏輯時(shí)序邏輯由組合邏輯電路和存儲(chǔ)電路構(gòu)成由組合邏輯電路和存儲(chǔ)電路構(gòu)成程序邏輯程序邏輯由控制電路由控制電路( (硬件硬件) )和程序數(shù)據(jù)和程序數(shù)據(jù)( (軟件軟件) )構(gòu)成構(gòu)成可編程邏輯可編程邏輯由用戶定制構(gòu)成各種類型的電路由用戶定制構(gòu)成各種類型的電路v 按存儲(chǔ)單元狀態(tài)改變的特點(diǎn)分類按存儲(chǔ)單元狀態(tài)改變的特點(diǎn)分類v 同步時(shí)序邏輯電路同步時(shí)序邏輯電路: 構(gòu)成時(shí)序邏輯電路的各級(jí)觸發(fā)器受一構(gòu)成時(shí)序邏輯電路的各級(jí)觸發(fā)器受一個(gè)系統(tǒng)時(shí)鐘統(tǒng)一控制。個(gè)系統(tǒng)時(shí)鐘統(tǒng)一控制。 v 異步時(shí)序邏輯電路異步時(shí)序邏輯電路: 構(gòu)成時(shí)序邏輯電路的各級(jí)觸發(fā)器可以構(gòu)成時(shí)序邏輯電路的各

4、級(jí)觸發(fā)器可以有各自的時(shí)鐘信號(hào),不受系統(tǒng)時(shí)鐘統(tǒng)一控制。有各自的時(shí)鐘信號(hào),不受系統(tǒng)時(shí)鐘統(tǒng)一控制。v 脈沖異步電路:記憶元件是觸發(fā)器,電路的輸入是脈沖脈沖異步電路:記憶元件是觸發(fā)器,電路的輸入是脈沖信號(hào)信號(hào)v 電位異步電路:記憶元件由帶反響的門電路組成,電路電位異步電路:記憶元件由帶反響的門電路組成,電路的輸入是電平信號(hào)的輸入是電平信號(hào)v 按輸出信號(hào)的特點(diǎn)分類按輸出信號(hào)的特點(diǎn)分類v 摩爾摩爾Moore型型時(shí)序電路的輸出信號(hào)僅與電路當(dāng)前狀時(shí)序電路的輸出信號(hào)僅與電路當(dāng)前狀態(tài)有關(guān)態(tài)有關(guān)v 米里米里Mealy型型時(shí)序電路的輸出信號(hào)與電路當(dāng)前狀態(tài)時(shí)序電路的輸出信號(hào)與電路當(dāng)前狀態(tài)及輸入信號(hào)有關(guān)及輸入信號(hào)有關(guān)v

5、按時(shí)序電路的邏輯功能分類按時(shí)序電路的邏輯功能分類v 數(shù)碼存放器,移位存放器,數(shù)碼存放器,移位存放器,計(jì)數(shù)器計(jì)數(shù)器6時(shí)序邏輯電路分類時(shí)序邏輯電路分類7時(shí)序邏輯電路的描述方法時(shí)序邏輯電路的描述方法) 3 . 7(),()2 . 7(),() 1 . 7(),(1nnQZhQQXgZQXfYv 時(shí)序邏輯電路可以用邏輯關(guān)系表達(dá)式方程組來描述。時(shí)序邏輯電路可以用邏輯關(guān)系表達(dá)式方程組來描述。v X為電路的輸入,為電路的輸入,Y為電路的輸出,為電路的輸出, Q為存儲(chǔ)電路的輸出,式為存儲(chǔ)電路的輸出,式(7.1)稱為輸出方程:電路輸出端的邏輯表達(dá)式;稱為輸出方程:電路輸出端的邏輯表達(dá)式;v Z為存儲(chǔ)電路的輸入,

6、式為存儲(chǔ)電路的輸入,式(7.2)稱為驅(qū)動(dòng)方程鼓勵(lì)方程:構(gòu)稱為驅(qū)動(dòng)方程鼓勵(lì)方程:構(gòu)成存儲(chǔ)電路的觸發(fā)器輸入端的表達(dá)式;成存儲(chǔ)電路的觸發(fā)器輸入端的表達(dá)式;v 式式(7.3)稱為狀態(tài)方程:表示觸發(fā)器的狀態(tài)變化特性,由驅(qū)動(dòng)方稱為狀態(tài)方程:表示觸發(fā)器的狀態(tài)變化特性,由驅(qū)動(dòng)方程代入觸發(fā)器的特性方程得到。程代入觸發(fā)器的特性方程得到。X0X1Xi-1Y0Y1Yj-1組合邏輯電路組合邏輯電路存儲(chǔ)電路存儲(chǔ)電路Q0Ql-1Z0Zk-1v 其他描述方法:其他描述方法:狀態(tài)轉(zhuǎn)換表狀態(tài)轉(zhuǎn)換表、狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖、時(shí)序圖時(shí)序圖同步時(shí)序邏輯電路舉例同步時(shí)序邏輯電路舉例1+XCPYDQQ組合邏組合邏輯電路輯電路存儲(chǔ)電路存儲(chǔ)電路

7、輸出方程:輸出方程:Y=XQn驅(qū)動(dòng)鼓勵(lì)方程:驅(qū)動(dòng)鼓勵(lì)方程:D=XQn+XQn=X QnD FF特性方程特性方程:Qn+1=D8狀態(tài)特征方程:狀態(tài)特征方程:Qn+1=XQn+XQn=X Qn同步時(shí)序邏輯電路舉例同步時(shí)序邏輯電路舉例29Y=AQ1nQ2nAQ1nQ2n=AQ1nQ2n+AQ1nQ2nD2=A Q1n Q2nD1=Q1n輸出方程:輸出方程:驅(qū)動(dòng)方程:驅(qū)動(dòng)方程:v 同步同步時(shí)序邏輯電路時(shí)序邏輯電路: 有一個(gè)公共的時(shí)鐘信號(hào),電路中各記憶元件受它統(tǒng)一有一個(gè)公共的時(shí)鐘信號(hào),電路中各記憶元件受它統(tǒng)一控制??刂?。 只有該時(shí)鐘信號(hào)到來時(shí),記憶元件的狀態(tài)才能發(fā)生變化,從而使時(shí)只有該時(shí)鐘信號(hào)到來時(shí),記

8、憶元件的狀態(tài)才能發(fā)生變化,從而使時(shí)序電路的輸出發(fā)生變化。序電路的輸出發(fā)生變化。v 每來一次時(shí)鐘信號(hào),記憶元件的狀態(tài)和時(shí)序電路的輸出才可能變化一次。每來一次時(shí)鐘信號(hào),記憶元件的狀態(tài)和時(shí)序電路的輸出才可能變化一次。Q2n+1=A Q1n Q2nQ1n+1=Q1n狀態(tài)方程:狀態(tài)方程:.脈沖異步電路舉例脈沖異步電路舉例時(shí)鐘方程時(shí)鐘方程: : CP0 = CP2= CP CP1=Q0 K0Q0Q0J0K0Q0J1K1Q1Q1J2K2Q2Q2.CP驅(qū)動(dòng)方程驅(qū)動(dòng)方程:J0=Q2n J1=Q0n J2=Q1nQ0nK0=1 K1=1 K2=1狀態(tài)方程:狀態(tài)方程: Q1n+1=Q1nQ0n (Q0 )Q2n+1

9、=Q2nQn1Q0n (CP ) Q0n+1=Q2nQ0n (CP ) 10脈沖異步電路的分析過程脈沖異步電路的分析過程3狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖000001010011100101110111結(jié)論:電路為異步五進(jìn)制加法計(jì)數(shù)器結(jié)論:電路為異步五進(jìn)制加法計(jì)數(shù)器2狀態(tài)轉(zhuǎn)換表狀態(tài)轉(zhuǎn)換表 Q2nQ1nQ0nQ2n+1 Q1n+1 Q0n+1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 0 0 Q1n+1=Q1nQ0n (Q0 )Q2n+1=Q2nQn1Q0n (CP

10、) Q0n+1=Q2nQ0n (CP ) 111狀態(tài)方程:狀態(tài)方程:原態(tài)按照從小到大的順原態(tài)按照從小到大的順序列出全部取值組合序列出全部取值組合127.1.2 時(shí)序邏輯電路的分析方法時(shí)序邏輯電路的分析方法時(shí)序邏輯電路的分析方法:時(shí)序邏輯電路的分析方法:根據(jù)電路結(jié)構(gòu),寫出方程式根據(jù)電路結(jié)構(gòu),寫出方程式時(shí)鐘方程異步時(shí)序電路時(shí)鐘方程異步時(shí)序電路、輸出方程、驅(qū)動(dòng)方程和狀態(tài)方程將驅(qū)動(dòng)方程代入、輸出方程、驅(qū)動(dòng)方程和狀態(tài)方程將驅(qū)動(dòng)方程代入觸發(fā)器的特性方程得到。觸發(fā)器的特性方程得到。將輸入變量和觸發(fā)器初態(tài)的各種取值組合按從小到大的將輸入變量和觸發(fā)器初態(tài)的各種取值組合按從小到大的順序,代入狀態(tài)方程和輸出方程,計(jì)

11、算出各級(jí)觸發(fā)器順序,代入狀態(tài)方程和輸出方程,計(jì)算出各級(jí)觸發(fā)器的次態(tài)值和電路的輸出值,得到狀態(tài)轉(zhuǎn)換表。的次態(tài)值和電路的輸出值,得到狀態(tài)轉(zhuǎn)換表。根據(jù)狀態(tài)轉(zhuǎn)換表,畫狀態(tài)轉(zhuǎn)換圖或時(shí)序圖。根據(jù)狀態(tài)轉(zhuǎn)換表,畫狀態(tài)轉(zhuǎn)換圖或時(shí)序圖。根據(jù)狀態(tài)轉(zhuǎn)換圖和時(shí)序圖,說明電路的邏輯功能。根據(jù)狀態(tài)轉(zhuǎn)換圖和時(shí)序圖,說明電路的邏輯功能。v 時(shí)序邏輯電路的分析時(shí)序邏輯電路的分析u找出給定電路的邏輯功能,即找出在輸入信號(hào)和時(shí)鐘信號(hào)作找出給定電路的邏輯功能,即找出在輸入信號(hào)和時(shí)鐘信號(hào)作用下的電路狀態(tài)和輸出信號(hào)的變化規(guī)律。用下的電路狀態(tài)和輸出信號(hào)的變化規(guī)律?!纠糠治鱿旅骐娐返倪壿嫻δ堋纠糠治鱿旅骐娐返倪壿嫻δ?CP D CP D

12、CP DCPQ2Q1Q0QQQ1 1寫出驅(qū)動(dòng)方程、狀態(tài)方程和輸出方程寫出驅(qū)動(dòng)方程、狀態(tài)方程和輸出方程根據(jù)電路結(jié)構(gòu),寫出驅(qū)動(dòng)方程;根據(jù)電路結(jié)構(gòu),寫出驅(qū)動(dòng)方程;將驅(qū)動(dòng)方程代入觸發(fā)器的特性方程得到狀態(tài)方程;將驅(qū)動(dòng)方程代入觸發(fā)器的特性方程得到狀態(tài)方程;由于該電路的輸出就是各觸發(fā)器的輸出,所以輸出方程同狀由于該電路的輸出就是各觸發(fā)器的輸出,所以輸出方程同狀態(tài)方程態(tài)方程D2Q1nD1Q0nD0Q2n驅(qū)動(dòng)方程驅(qū)動(dòng)方程D觸發(fā)器的特性方程觸發(fā)器的特性方程Q2n+1=D2=Q1nQ1n+1=D1=Q0nQ0n+1=D0=Q2n13狀態(tài)方程狀態(tài)方程QQQ畫出狀態(tài)轉(zhuǎn)換表畫出狀態(tài)轉(zhuǎn)換表2狀態(tài)轉(zhuǎn)換表狀態(tài)轉(zhuǎn)換表Q2nQ1n

13、Q0nQ2n+1Q1n+1Q0n+10 0 00 0 10 0 10 1 10 1 01 0 10 1 11 1 11 0 00 0 01 0 10 1 01 1 01 0 01 1 11 1 014按按從小到大從小到大的順序的順序?qū)懗鲇|發(fā)器初態(tài)的寫出觸發(fā)器初態(tài)的各種取值組合各種取值組合畫出狀態(tài)轉(zhuǎn)換圖畫出狀態(tài)轉(zhuǎn)換圖假設(shè)假設(shè)Q2Q1Q0初初始狀態(tài)始狀態(tài): 0 0 0000001110111011100010101有效有效循環(huán)循環(huán)無效循環(huán)無效循環(huán)153狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖v 根據(jù)狀態(tài)轉(zhuǎn)換表,畫出根據(jù)狀態(tài)轉(zhuǎn)換表,畫出狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖u從從初始狀態(tài)初始狀態(tài)000畫,在次態(tài)輸出列中找到其對(duì)應(yīng)下一狀態(tài)

14、的取畫,在次態(tài)輸出列中找到其對(duì)應(yīng)下一狀態(tài)的取值,畫出;值,畫出;u然后將其作為初態(tài),在原態(tài)輸出列中找到它,再在次態(tài)輸出然后將其作為初態(tài),在原態(tài)輸出列中找到它,再在次態(tài)輸出列中找到其對(duì)應(yīng)下一狀態(tài)的取值,畫出;列中找到其對(duì)應(yīng)下一狀態(tài)的取值,畫出;u確保每個(gè)狀態(tài)在確保每個(gè)狀態(tài)在狀態(tài)轉(zhuǎn)換圖中都應(yīng)出現(xiàn)一次,且僅有一次。狀態(tài)轉(zhuǎn)換圖中都應(yīng)出現(xiàn)一次,且僅有一次。計(jì)數(shù)器相關(guān)概念計(jì)數(shù)器相關(guān)概念16v幾個(gè)概念幾個(gè)概念v有效狀態(tài)編碼狀態(tài)有效狀態(tài)編碼狀態(tài)設(shè)計(jì)時(shí)選中進(jìn)入計(jì)數(shù)循環(huán)的設(shè)計(jì)時(shí)選中進(jìn)入計(jì)數(shù)循環(huán)的狀態(tài)狀態(tài)v無效狀態(tài)非編碼狀態(tài)無效狀態(tài)非編碼狀態(tài)設(shè)計(jì)時(shí)未選中進(jìn)入計(jì)數(shù)循設(shè)計(jì)時(shí)未選中進(jìn)入計(jì)數(shù)循環(huán)的狀態(tài)環(huán)的狀態(tài)010、101

15、v死循環(huán)無效循環(huán)死循環(huán)無效循環(huán)由無效狀態(tài)構(gòu)成的循環(huán)由無效狀態(tài)構(gòu)成的循環(huán)v自啟動(dòng)自啟動(dòng)不存在死循環(huán),計(jì)數(shù)循環(huán)以外的狀態(tài),都能不存在死循環(huán),計(jì)數(shù)循環(huán)以外的狀態(tài),都能回到計(jì)數(shù)循環(huán)中來回到計(jì)數(shù)循環(huán)中來4時(shí)序圖時(shí)序圖CPQ0Q1Q2電路功能:同步電路功能:同步3位格雷碼計(jì)數(shù)器或位格雷碼計(jì)數(shù)器或同步六進(jìn)制計(jì)數(shù)器同步六進(jìn)制計(jì)數(shù)器u由于計(jì)數(shù)循環(huán)以外的狀態(tài)不能回到計(jì)數(shù)循環(huán)里由于計(jì)數(shù)循環(huán)以外的狀態(tài)不能回到計(jì)數(shù)循環(huán)里來,所以該計(jì)數(shù)器來,所以該計(jì)數(shù)器不能自啟動(dòng)不能自啟動(dòng)17Q2Q1Q0000 001 011 111 110 100 000【例】分析下面電路的邏輯功能【例】分析下面電路的邏輯功能D D 觸 發(fā) 器 的觸

16、 發(fā) 器 的特性方程特性方程18 QCP DQ QCP D QCP DCPQ2Q1Q0QQ.驅(qū)動(dòng)方程驅(qū)動(dòng)方程D2=Q1nD1=Q0nD0=Q0nQ1nQ2n=(Q0n+Q1n)Q2n狀態(tài)方程狀態(tài)方程Q2n+1=Q1nQ1n+1=Q0nQ0n+1=Q0nQ1nQ2n=(Q0n+Q1n)Q2n狀態(tài)轉(zhuǎn)換表和狀態(tài)圖狀態(tài)轉(zhuǎn)換表和狀態(tài)圖19狀態(tài)轉(zhuǎn)換表狀態(tài)轉(zhuǎn)換表Q2nQ1nQ0nQ2n+1Q1n+1Q0n+10 0 00 0 10 0 10 1 10 1 01 0 00 1 11 1 11 0 00 0 01 0 10 1 01 1 01 0 01 1 11 1 0000001101110111010011

17、100Q2Q1Q0狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖能夠回到計(jì)能夠回到計(jì)數(shù)循環(huán)中來數(shù)循環(huán)中來最終狀態(tài)圖和電路功能最終狀態(tài)圖和電路功能20整理后的狀態(tài)轉(zhuǎn)換圖整理后的狀態(tài)轉(zhuǎn)換圖u電路功能:能夠自行進(jìn)入工作循環(huán)的同步電路功能:能夠自行進(jìn)入工作循環(huán)的同步3位格雷碼位格雷碼計(jì)數(shù)器同步六進(jìn)制計(jì)數(shù)器計(jì)數(shù)器同步六進(jìn)制計(jì)數(shù)器u由于計(jì)數(shù)循環(huán)以外的狀態(tài)都能回到計(jì)數(shù)循環(huán)里來,所由于計(jì)數(shù)循環(huán)以外的狀態(tài)都能回到計(jì)數(shù)循環(huán)里來,所以稱該計(jì)數(shù)器為能自啟動(dòng)的同步六進(jìn)制計(jì)數(shù)器以稱該計(jì)數(shù)器為能自啟動(dòng)的同步六進(jìn)制計(jì)數(shù)器000001110111101011010100217.2 有限狀態(tài)機(jī)有限狀態(tài)機(jī) 7.2.1 有限狀態(tài)機(jī)概述有限狀態(tài)機(jī)概述7.2.2

18、 Moore型有限狀態(tài)機(jī)型有限狀態(tài)機(jī)7.2.3 Mealy型有限狀態(tài)機(jī)型有限狀態(tài)機(jī)7.2.1 有限狀態(tài)機(jī)概述有限狀態(tài)機(jī)概述v有限狀態(tài)機(jī)有限狀態(tài)機(jī)Finite State Machine,F(xiàn)SM是表示有限個(gè)是表示有限個(gè)狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的離散數(shù)學(xué)模型狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的離散數(shù)學(xué)模型。v有限狀態(tài)機(jī)是組合邏輯和存放器邏輯的特殊組合。組合邏輯有限狀態(tài)機(jī)是組合邏輯和存放器邏輯的特殊組合。組合邏輯局部包括次態(tài)邏輯根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài)和輸出邏輯局部包括次態(tài)邏輯根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài)和輸出邏輯,分別用于狀態(tài)譯碼和產(chǎn)生輸出信號(hào);存放器邏輯局部用于,分別用于狀態(tài)譯碼和產(chǎn)生

19、輸出信號(hào);存放器邏輯局部用于存儲(chǔ)狀態(tài)。存儲(chǔ)狀態(tài)。22輸出輸出現(xiàn)態(tài)現(xiàn)態(tài)次態(tài)次態(tài)現(xiàn)態(tài)現(xiàn)態(tài)輸入輸入次態(tài)次態(tài)邏輯邏輯狀態(tài)狀態(tài)寄存器寄存器輸出輸出邏輯邏輯Moore型狀態(tài)機(jī)典型結(jié)構(gòu)型狀態(tài)機(jī)典型結(jié)構(gòu)組合邏輯組合邏輯組合邏輯組合邏輯存放器邏輯存放器邏輯v FSM常用于常用于時(shí)序邏輯電路時(shí)序邏輯電路設(shè)計(jì),尤其適于設(shè)計(jì)數(shù)字系統(tǒng)的控設(shè)計(jì),尤其適于設(shè)計(jì)數(shù)字系統(tǒng)的控制模塊。具有速度快、結(jié)構(gòu)簡(jiǎn)單、可靠性高、邏輯清晰、復(fù)制模塊。具有速度快、結(jié)構(gòu)簡(jiǎn)單、可靠性高、邏輯清晰、復(fù)雜問題簡(jiǎn)單化的優(yōu)點(diǎn)。雜問題簡(jiǎn)單化的優(yōu)點(diǎn)。v 根據(jù)輸出信號(hào)產(chǎn)生的機(jī)理不同,狀態(tài)機(jī)可以分成兩類:根據(jù)輸出信號(hào)產(chǎn)生的機(jī)理不同,狀態(tài)機(jī)可以分成兩類:w摩爾摩爾(

20、Moore)型狀態(tài)機(jī)型狀態(tài)機(jī)-輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān)輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān)w米里米里(Mealy)型狀態(tài)機(jī)型狀態(tài)機(jī)-輸出信號(hào)與當(dāng)前狀態(tài)及輸入信號(hào)輸出信號(hào)與當(dāng)前狀態(tài)及輸入信號(hào)有關(guān)有關(guān)有限狀態(tài)機(jī)的分類有限狀態(tài)機(jī)的分類23輸出輸出現(xiàn)態(tài)現(xiàn)態(tài)次態(tài)次態(tài)現(xiàn)態(tài)現(xiàn)態(tài)輸入輸入次態(tài)邏次態(tài)邏輯輯狀態(tài)狀態(tài)寄存器寄存器輸出邏輸出邏輯輯Mealy型狀態(tài)機(jī)的典型結(jié)構(gòu)型狀態(tài)機(jī)的典型結(jié)構(gòu)有限狀態(tài)機(jī)的表示方法有限狀態(tài)機(jī)的表示方法24v狀態(tài)機(jī)有狀態(tài)機(jī)有3 3種表示方法種表示方法v狀態(tài)圖狀態(tài)圖State DiagramState Diagram、狀態(tài)表、狀態(tài)表State State TableTable和流程圖和流程圖v三者等價(jià),

21、可以相互轉(zhuǎn)換三者等價(jià),可以相互轉(zhuǎn)換 000/0001/0010/0011/0100/1CQQQ/012狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖Q2nQ1nQ0nQ2n+1Q1n+1Q0n+1C0 0 00 0 100 0 10 1 000 1 00 1 100 1 11 0 001 0 00 0 01狀態(tài)轉(zhuǎn)換表狀態(tài)轉(zhuǎn)換表有限狀態(tài)機(jī)的設(shè)計(jì)方法有限狀態(tài)機(jī)的設(shè)計(jì)方法v 實(shí)用的狀態(tài)機(jī)一般都設(shè)計(jì)為同步時(shí)序邏輯電路,它在實(shí)用的狀態(tài)機(jī)一般都設(shè)計(jì)為同步時(shí)序邏輯電路,它在同一個(gè)時(shí)鐘信號(hào)的觸發(fā)下,完成各狀態(tài)之間的轉(zhuǎn)移。同一個(gè)時(shí)鐘信號(hào)的觸發(fā)下,完成各狀態(tài)之間的轉(zhuǎn)移。 v 狀態(tài)機(jī)設(shè)計(jì)步驟:狀態(tài)機(jī)設(shè)計(jì)步驟: 1. 分析設(shè)計(jì)要求,列出全部可

22、能狀態(tài);分析設(shè)計(jì)要求,列出全部可能狀態(tài); 2. 畫出狀態(tài)轉(zhuǎn)移圖;畫出狀態(tài)轉(zhuǎn)移圖; 3. 用用Verilog HDL語言描述狀態(tài)機(jī),主要采用語言描述狀態(tài)機(jī),主要采用always塊語句,完成塊語句,完成3項(xiàng)任務(wù):項(xiàng)任務(wù):v 1定義起始狀態(tài)敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào);定義起始狀態(tài)敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào);v 2用用case或或if-else語句描述出狀態(tài)的轉(zhuǎn)移根語句描述出狀態(tài)的轉(zhuǎn)移根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài);據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài);v 3用用case或或if-else語句描述狀態(tài)機(jī)的輸出信號(hào)語句描述狀態(tài)機(jī)的輸出信號(hào)敏感信號(hào)為現(xiàn)態(tài)敏感信號(hào)為現(xiàn)態(tài) 。 25狀態(tài)機(jī)的設(shè)計(jì)要點(diǎn)狀態(tài)機(jī)的設(shè)計(jì)要點(diǎn)v 起始狀態(tài)的選擇起始狀

23、態(tài)的選擇 v 起始狀態(tài)指電路復(fù)位后所處的狀態(tài),選擇一個(gè)合理的起始狀態(tài)指電路復(fù)位后所處的狀態(tài),選擇一個(gè)合理的起始狀態(tài)將使整個(gè)系統(tǒng)簡(jiǎn)捷高效。有限狀態(tài)機(jī)必須有時(shí)鐘起始狀態(tài)將使整個(gè)系統(tǒng)簡(jiǎn)捷高效。有限狀態(tài)機(jī)必須有時(shí)鐘信號(hào)和復(fù)位信號(hào)建議采用異步復(fù)位!信號(hào)和復(fù)位信號(hào)建議采用異步復(fù)位!v 狀態(tài)編碼方式狀態(tài)編碼方式v 二進(jìn)制編碼順序編碼二進(jìn)制編碼順序編碼 :采用順序的二進(jìn)制數(shù)編碼每個(gè)狀:采用順序的二進(jìn)制數(shù)編碼每個(gè)狀態(tài),態(tài),N N個(gè)狀態(tài)用個(gè)狀態(tài)用log2Nlog2N個(gè)觸發(fā)器來表示個(gè)觸發(fā)器來表示節(jié)省邏輯資源,但節(jié)省邏輯資源,但可能產(chǎn)生毛刺可能產(chǎn)生毛刺v 格雷編碼格雷編碼Gray CodeGray Code: N N

24、個(gè)狀態(tài)用個(gè)狀態(tài)用log2Nlog2N個(gè)觸發(fā)器來表示,個(gè)觸發(fā)器來表示,在狀態(tài)的順序轉(zhuǎn)換中,相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變?cè)跔顟B(tài)的順序轉(zhuǎn)換中,相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變化化節(jié)省邏輯資源;又防止產(chǎn)生毛刺節(jié)省邏輯資源;又防止產(chǎn)生毛刺v 一位熱碼編碼一位熱碼編碼One-Hot EncodingOne-Hot Encoding:采用:采用N N位二進(jìn)制數(shù)位二進(jìn)制數(shù)N N個(gè)觸發(fā)器編碼個(gè)觸發(fā)器編碼N N個(gè)狀態(tài),每個(gè)狀態(tài)下只有個(gè)狀態(tài),每個(gè)狀態(tài)下只有1 1位為位為“1“1,其余,其余位為位為“0“0。相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變化。相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變化防止防止產(chǎn)生毛刺;但耗用邏輯資源多產(chǎn)

25、生毛刺;但耗用邏輯資源多26對(duì)對(duì)8個(gè)狀態(tài)三種編碼方式的比照個(gè)狀態(tài)三種編碼方式的比照狀態(tài)狀態(tài)二進(jìn)制編碼二進(jìn)制編碼格雷編碼格雷編碼一位熱碼編碼一位熱碼編碼 state000000000000001 state100100100000010 state201001100000100 state301101000001000 state410011000010000 state510111100100000 state611010101000000 state711110010000000v 采用一位熱碼編碼,雖然使用觸發(fā)器較多,但可以有效節(jié)省和采用一位熱碼編碼,雖然使用觸發(fā)器較多,但可以有效節(jié)省和簡(jiǎn)

26、化組合邏輯電路。簡(jiǎn)化組合邏輯電路。v FPGA有豐富的存放器資源,門邏輯相對(duì)缺乏,采用一位熱碼有豐富的存放器資源,門邏輯相對(duì)缺乏,采用一位熱碼編碼可以有效提高電路的速度和可靠性,也有利于提高器件資編碼可以有效提高電路的速度和可靠性,也有利于提高器件資源的利用率。源的利用率。27狀態(tài)編碼的狀態(tài)編碼的HDL定義定義v 狀態(tài)編碼的定義狀態(tài)編碼的定義有兩種方式:有兩種方式:parameter和和 define語句語句【例例】為為state0, state1 ,state2 ,state3四個(gè)狀態(tài)四個(gè)狀態(tài)定義碼字為:定義碼字為:00,01 ,11,10parameter state0=2 b00 , s

27、tate1=2 b01, state2=2 b11, state3=2 b10; case (state) state0:; state1:; define state0=2 b00 /不要加分號(hào)不要加分號(hào) define state1=2 b01 define state2=2 b11 define state3=2 b10case (state) state0:; state1:; 方式一:用方式一:用parameter參數(shù)定義參數(shù)定義用用n個(gè)個(gè)parameter常量表示常量表示n個(gè)狀態(tài)個(gè)狀態(tài)方式二:用方式二:用 define語句定義語句定義用用n個(gè)宏名表示個(gè)宏名表示n個(gè)狀態(tài)個(gè)狀態(tài)28狀態(tài)轉(zhuǎn)

28、換的描述狀態(tài)轉(zhuǎn)換的描述v 一般用一般用case、casez或或casex語句,比用語句,比用if-else語句語句更清晰明了!更清晰明了!v 實(shí)用的狀態(tài)機(jī)都應(yīng)設(shè)計(jì)為由唯一的實(shí)用的狀態(tài)機(jī)都應(yīng)設(shè)計(jì)為由唯一的時(shí)鐘邊沿時(shí)鐘邊沿觸發(fā)的觸發(fā)的同同步步運(yùn)行方式運(yùn)行方式29v多余狀態(tài)有效狀態(tài)之外的狀態(tài)的處理多余狀態(tài)有效狀態(tài)之外的狀態(tài)的處理v在在case語句中用語句中用default分支語句決定如果進(jìn)入無效狀分支語句決定如果進(jìn)入無效狀態(tài)應(yīng)采取的措施如返回到起始狀態(tài);態(tài)應(yīng)采取的措施如返回到起始狀態(tài);v編寫必要的編寫必要的Verilog代碼明確指定進(jìn)入無效狀態(tài)所采取代碼明確指定進(jìn)入無效狀態(tài)所采取的行為。的行為。30

29、有限狀態(tài)機(jī)的描述風(fēng)格有限狀態(tài)機(jī)的描述風(fēng)格1/3v 狀態(tài)機(jī)設(shè)計(jì)中主要包含狀態(tài)機(jī)設(shè)計(jì)中主要包含3個(gè)對(duì)象個(gè)對(duì)象v 當(dāng)前狀態(tài),現(xiàn)態(tài)當(dāng)前狀態(tài),現(xiàn)態(tài)Current State;v 下一個(gè)狀態(tài),次態(tài)下一個(gè)狀態(tài),次態(tài) Next State ;v 輸出邏輯。輸出邏輯。最常用最常用31有限狀態(tài)機(jī)的描述風(fēng)格有限狀態(tài)機(jī)的描述風(fēng)格2/3v 狀態(tài)機(jī)的狀態(tài)機(jī)的Verilog描述建議采用風(fēng)格描述建議采用風(fēng)格C雙過程描述:雙過程描述:一個(gè)過程描述現(xiàn)態(tài)和次態(tài)時(shí)序邏輯;另一個(gè)過程描述輸一個(gè)過程描述現(xiàn)態(tài)和次態(tài)時(shí)序邏輯;另一個(gè)過程描述輸出邏輯組合邏輯。這樣寫結(jié)構(gòu)清晰;將時(shí)序邏輯和出邏輯組合邏輯。這樣寫結(jié)構(gòu)清晰;將時(shí)序邏輯和組合邏輯分開

30、描述,便于修改。組合邏輯分開描述,便于修改。v 描述包括描述包括2個(gè)個(gè)always塊:塊:v 1 always(posedge clk or posedge reset) v if(reset) state=;/復(fù)位時(shí)回到初始狀態(tài);復(fù)位時(shí)回到初始狀態(tài);v else /狀態(tài)的轉(zhuǎn)移;狀態(tài)的轉(zhuǎn)移;v 2 always(state) /狀態(tài)機(jī)的輸出狀態(tài)機(jī)的輸出u次態(tài)邏輯指實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài);次態(tài)邏輯指實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài);u狀態(tài)存放器指根據(jù)復(fù)位信號(hào)定義起始狀態(tài)以及在時(shí)鐘上升沿時(shí)將狀態(tài)存放器指根據(jù)復(fù)位信號(hào)定義起始狀態(tài)以及在時(shí)鐘上升沿時(shí)將次態(tài)賦給現(xiàn)態(tài)次態(tài)賦給現(xiàn)態(tài)prese

31、nt=next;;u輸出邏輯指輸出邏輯指Moore型狀態(tài)機(jī)根據(jù)現(xiàn)態(tài)產(chǎn)生輸出信號(hào),或者型狀態(tài)機(jī)根據(jù)現(xiàn)態(tài)產(chǎn)生輸出信號(hào),或者M(jìn)ealy型狀態(tài)機(jī)根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生輸出信號(hào)。型狀態(tài)機(jī)根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生輸出信號(hào)。32有限狀態(tài)機(jī)的描述風(fēng)格有限狀態(tài)機(jī)的描述風(fēng)格3/3v 有時(shí)也采用風(fēng)格有時(shí)也采用風(fēng)格B單過程描述方式,即將狀態(tài)機(jī)的現(xiàn)態(tài)、次單過程描述方式,即將狀態(tài)機(jī)的現(xiàn)態(tài)、次態(tài)和輸出邏輯放在一個(gè)態(tài)和輸出邏輯放在一個(gè)always塊中進(jìn)行描述。塊中進(jìn)行描述。v 其優(yōu)點(diǎn)是采用時(shí)鐘信號(hào)來同步輸出信號(hào),可以克服輸出信號(hào)出現(xiàn)其優(yōu)點(diǎn)是采用時(shí)鐘信號(hào)來同步輸出信號(hào),可以克服輸出信號(hào)出現(xiàn)毛刺的問題,適于輸出信號(hào)作為控制邏輯的場(chǎng)合使用,

32、有效防止毛刺的問題,適于輸出信號(hào)作為控制邏輯的場(chǎng)合使用,有效防止了因輸出信號(hào)帶有毛刺而產(chǎn)生錯(cuò)誤的控制邏輯了因輸出信號(hào)帶有毛刺而產(chǎn)生錯(cuò)誤的控制邏輯.v 缺乏是輸出信號(hào)會(huì)比雙過程描述方式中的輸出信號(hào)延遲一個(gè)時(shí)鐘缺乏是輸出信號(hào)會(huì)比雙過程描述方式中的輸出信號(hào)延遲一個(gè)時(shí)鐘周期的時(shí)間。周期的時(shí)間。v 描述只有描述只有1個(gè)個(gè)always塊:塊:v always(posedge clk or posedge reset) v if(reset) state=;/復(fù)位時(shí)回到初始狀態(tài);復(fù)位時(shí)回到初始狀態(tài);v else /狀態(tài)的轉(zhuǎn)移和狀態(tài)機(jī)的輸出狀態(tài)的轉(zhuǎn)移和狀態(tài)機(jī)的輸出v case(state)v Moore型有限

33、狀態(tài)機(jī)型有限狀態(tài)機(jī)33輸出輸出現(xiàn)態(tài)現(xiàn)態(tài)次態(tài)次態(tài)現(xiàn)態(tài)現(xiàn)態(tài)輸入輸入次態(tài)次態(tài)邏輯邏輯狀態(tài)狀態(tài)寄存器寄存器輸出輸出邏輯邏輯Moore型狀態(tài)機(jī)典型結(jié)構(gòu)型狀態(tài)機(jī)典型結(jié)構(gòu)輸入輸入現(xiàn)態(tài)現(xiàn)態(tài)輸出輸出次態(tài)次態(tài)輸出輸出Moore型狀態(tài)圖的表示型狀態(tài)圖的表示 v Moore型狀態(tài)機(jī),其輸出只為狀態(tài)機(jī)型狀態(tài)機(jī),其輸出只為狀態(tài)機(jī)當(dāng)前狀態(tài)當(dāng)前狀態(tài)的的函數(shù),而與外部輸入無關(guān)。函數(shù),而與外部輸入無關(guān)。v 外部輸出是內(nèi)部狀態(tài)的函數(shù)。外部輸出是內(nèi)部狀態(tài)的函數(shù)。34第第1 1步:分析設(shè)計(jì)要求,列出全部可能狀態(tài)步:分析設(shè)計(jì)要求,列出全部可能狀態(tài): : 未收到一個(gè)有效位未收到一個(gè)有效位0 0:S0S0收到一個(gè)有效位收到一個(gè)有效位1 1:

34、S1S1連續(xù)收到兩個(gè)有效位連續(xù)收到兩個(gè)有效位1111:S2S2連續(xù)收到三個(gè)有效位連續(xù)收到三個(gè)有效位110110:S3 S3 連續(xù)收到四個(gè)有效位連續(xù)收到四個(gè)有效位11011101 :S4S4v 由于序列檢測(cè)器的輸出只為狀態(tài)機(jī)當(dāng)前狀態(tài)的函由于序列檢測(cè)器的輸出只為狀態(tài)機(jī)當(dāng)前狀態(tài)的函數(shù),而與外部輸入無關(guān),所以為數(shù),而與外部輸入無關(guān),所以為Moore型狀態(tài)機(jī)型狀態(tài)機(jī)Moore型有限狀態(tài)機(jī)設(shè)計(jì)舉例型有限狀態(tài)機(jī)設(shè)計(jì)舉例1【例【例7.3】設(shè)計(jì)一個(gè)序列檢測(cè)器。要求檢測(cè)器連續(xù)收到串行】設(shè)計(jì)一個(gè)序列檢測(cè)器。要求檢測(cè)器連續(xù)收到串行碼碼1101后,輸出檢測(cè)標(biāo)志為后,輸出檢測(cè)標(biāo)志為1,否那么輸出檢測(cè)標(biāo)志為,否那么輸出檢測(cè)

35、標(biāo)志為0。序列序列1101S0/0S1/0S2/0S4/1S3/01101010100Si/ZOiData_INi35第第2步:畫出狀態(tài)圖步:畫出狀態(tài)圖只有在只有在S4狀態(tài)下輸出狀態(tài)下輸出zo置置1,其他狀態(tài)下其他狀態(tài)下zo為為0,且,且輸出與外部輸出與外部輸入無關(guān)輸入無關(guān)36第第3步:用步:用Verilog語言描述狀態(tài)機(jī)語言描述狀態(tài)機(jī)v 在程序的開頭定義狀態(tài)機(jī)狀態(tài)的編碼形式在程序的開頭定義狀態(tài)機(jī)狀態(tài)的編碼形式v 用用parameter或或 define語句語句v 復(fù)位時(shí)回到起始狀態(tài)復(fù)位時(shí)回到起始狀態(tài)v 敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào)敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào)v 狀態(tài)轉(zhuǎn)換描述狀態(tài)轉(zhuǎn)換描述v 用用cas

36、e或或if-else語句描述出狀態(tài)的轉(zhuǎn)移根據(jù)現(xiàn)態(tài)和輸語句描述出狀態(tài)的轉(zhuǎn)移根據(jù)現(xiàn)態(tài)和輸入產(chǎn)生次態(tài),可與復(fù)位時(shí)回到起始狀態(tài)的語句放在同一入產(chǎn)生次態(tài),可與復(fù)位時(shí)回到起始狀態(tài)的語句放在同一個(gè)個(gè)always塊中,即敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào)塊中,即敏感信號(hào)為時(shí)鐘和復(fù)位信號(hào)v 輸出信號(hào)描述輸出信號(hào)描述v 用用case語句語句Mealy型狀態(tài)機(jī)還要用到型狀態(tài)機(jī)還要用到if-else語句描述語句描述狀態(tài)機(jī)的輸出信號(hào)單獨(dú)放在一個(gè)狀態(tài)機(jī)的輸出信號(hào)單獨(dú)放在一個(gè)always塊中,敏感信塊中,敏感信號(hào)為現(xiàn)態(tài)號(hào)為現(xiàn)態(tài) module monitor(clk,clr,data,zo,state); parameter S0=3

37、b000, S1=3b001, S2=3b010,S3=3b011,S4=3b100; /狀態(tài)編碼的定義狀態(tài)編碼的定義 input clk,clr,data; output zo; output2:0 state; /狀態(tài)機(jī)狀態(tài)機(jī) reg 2:0 state; reg zo; always (posedge clk or posedge clr) begin if (clr) state=S0; /1復(fù)位時(shí)回到初始狀態(tài)復(fù)位時(shí)回到初始狀態(tài) else begin case (state)/ 2狀態(tài)的轉(zhuǎn)移狀態(tài)的轉(zhuǎn)移 S0: if (data=1b1) state=S1; else state=S0;

38、 S1: if (data=1b1) state=S2; else state=S0; S2: if (data=1b0) state=S3; else state=S2; S3: if (data=1b1) state=S4; else state=S0; S4: if (data=1b1) state=S1; else state=S0; default: state=S0; endcase zo=(state=S4)?1b1:1b0; /3狀態(tài)機(jī)的輸出信號(hào)狀態(tài)機(jī)的輸出信號(hào) end endendmodule37序列檢測(cè)器源程序序列檢測(cè)器源程序 Moore型狀態(tài)機(jī)型狀態(tài)機(jī)在在S4時(shí)給時(shí)給zo

39、置置1輸出只為狀態(tài)機(jī)輸出只為狀態(tài)機(jī)當(dāng)前狀態(tài)的函數(shù),當(dāng)前狀態(tài)的函數(shù),而與外部輸入無關(guān)而與外部輸入無關(guān)38狀態(tài)機(jī)的輸出信號(hào)描述狀態(tài)機(jī)的輸出信號(hào)描述 v 如果輸出表達(dá)式很簡(jiǎn)單,可以單獨(dú)用一條賦值語句寫出如果輸出表達(dá)式很簡(jiǎn)單,可以單獨(dú)用一條賦值語句寫出v 最好將狀態(tài)機(jī)的輸出語句單獨(dú)寫在另一個(gè)最好將狀態(tài)機(jī)的輸出語句單獨(dú)寫在另一個(gè)always塊中純塊中純組合邏輯,這樣邏輯清晰,不易出錯(cuò):組合邏輯,這樣邏輯清晰,不易出錯(cuò):v 語句語句“zo=(state=S4)?1b1:1b0;去掉,換成如去掉,換成如下下always塊組合邏輯,塊組合邏輯, monitor_good.v :v always (state)

40、 /3狀態(tài)機(jī)的輸出信號(hào)狀態(tài)機(jī)的輸出信號(hào)v beginv case (state) v S0: zo=1b0; v S1: zo=1b0; v S2: zo=1b0; v S3: zo=1b0; v S4: zo=1b1; v default: zo=1b0;v endcase v end返回返回39序列檢測(cè)器的仿真波形序列檢測(cè)器的仿真波形1101返回返回40Moore型有限狀態(tài)機(jī)設(shè)計(jì)舉例型有限狀態(tài)機(jī)設(shè)計(jì)舉例2v設(shè)計(jì)思路:電路采用狀態(tài)機(jī)來設(shè)計(jì),一共包括設(shè)計(jì)思路:電路采用狀態(tài)機(jī)來設(shè)計(jì),一共包括3個(gè)狀態(tài)個(gè)狀態(tài)vS0:判斷被除數(shù)是否大于除數(shù),假設(shè)是,得到第:判斷被除數(shù)是否大于除數(shù),假設(shè)是,得到第1次的

41、商次的商和余數(shù),跳轉(zhuǎn)到和余數(shù),跳轉(zhuǎn)到S1;假設(shè)不是,那么商為;假設(shè)不是,那么商為0,余數(shù)等于被,余數(shù)等于被除數(shù),跳轉(zhuǎn)到除數(shù),跳轉(zhuǎn)到S2vS1:進(jìn)行除法運(yùn)算,當(dāng)余數(shù)小于被除數(shù)時(shí),跳轉(zhuǎn)到:進(jìn)行除法運(yùn)算,當(dāng)余數(shù)小于被除數(shù)時(shí),跳轉(zhuǎn)到S2vS2:得到運(yùn)算結(jié)果,然后返回:得到運(yùn)算結(jié)果,然后返回S0【例【例7.4】用有限狀態(tài)機(jī)設(shè)計(jì)】用有限狀態(tài)機(jī)設(shè)計(jì)4位二進(jìn)制數(shù)的除法電路位二進(jìn)制數(shù)的除法電路單過程單過程40除法電路源程序除法電路源程序module division(a, b, clk, reset, result, yu, state); input3:0 a, b;/ 被除數(shù)和除數(shù)被除數(shù)和除數(shù) input

42、clk, reset; output reg3:0 result, yu; / 最終結(jié)果:商和余數(shù)最終結(jié)果:商和余數(shù) output reg1:0 state; reg3:0 m, n;/ 每步除法運(yùn)算的商和余數(shù)每步除法運(yùn)算的商和余數(shù) parameter S0=2b00, S1=2b01, S2=2b10;/狀態(tài)編碼順序編碼狀態(tài)編碼順序編碼 always (posedge clk or posedge reset) beginif(reset) begin m=4b0000; n=4b0000; result=4b0000; yu=4b0000; state=b) begin m=4b0001;

43、 n=a-b; state=S1; end else begin m=4b0000; n=a; state=b) begin m=m+1b1; n=n-b; state=S1; end else begin state=S2; end endS2: begin /得到運(yùn)算結(jié)果得到運(yùn)算結(jié)果 result=m; yu=n; state=S0; end default: state 1;/實(shí)現(xiàn)右移操作實(shí)現(xiàn)右移操作 q7 = dir; end /存放器的最高位接收串行右移輸入信號(hào)存放器的最高位接收串行右移輸入信號(hào) else begin q = q 1;/實(shí)現(xiàn)左移操作實(shí)現(xiàn)左移操作 q0 = dil; e

44、nd /存放器的最低位接收串行左移輸入信號(hào)存放器的最低位接收串行左移輸入信號(hào) endendmodule1518位雙向移位存放器的仿真波形位雙向移位存放器的仿真波形1510000_00010000_0011復(fù)位復(fù)位預(yù)置預(yù)置串入右移串入右移0000_0110串入左移串入左移0010_01000001_00101527.5.3 計(jì)數(shù)器的設(shè)計(jì)計(jì)數(shù)器的設(shè)計(jì)1、十進(jìn)制同步計(jì)數(shù)器異步去除、十進(jìn)制同步計(jì)數(shù)器異步去除CT74160【例【例7.23】用】用always塊語句設(shè)計(jì)十進(jìn)制塊語句設(shè)計(jì)十進(jìn)制同步計(jì)數(shù)器同步計(jì)數(shù)器CT74160并行數(shù)據(jù)輸入端:并行數(shù)據(jù)輸入端:D3-D0 時(shí)鐘輸入端:時(shí)鐘輸入端:CP,上升沿有

45、效,上升沿有效 狀態(tài)輸出端:狀態(tài)輸出端: Q3-Q0, Q3、Q2、Q1和和Q0的權(quán)值依次為的權(quán)值依次為23、22、21和和20異步復(fù)位輸入端:異步復(fù)位輸入端:CRN,低電平有效,低電平有效同步預(yù)置控制輸入端:同步預(yù)置控制輸入端:LDN,低電平有,低電平有效效使能控制輸入端:使能控制輸入端:EP和和ET,高電平有效,高電平有效,均為均為1時(shí)計(jì)數(shù)器工作,只要有時(shí)計(jì)數(shù)器工作,只要有1個(gè)信號(hào)個(gè)信號(hào)為為0,那么計(jì)數(shù)器保持,那么計(jì)數(shù)器保持進(jìn)位輸出端進(jìn)位輸出端: OC, Q3Q2Q1Q0=1001且且ET=1時(shí),時(shí),OC=1功能:異步復(fù)位;同功能:異步復(fù)位;同步預(yù)置;計(jì)數(shù);保持步預(yù)置;計(jì)數(shù);保持153 C

46、T74160的的HDL設(shè)計(jì)設(shè)計(jì)module CT74160(LDN,D3,D2,D1,D0,CP,CRN,EP,ET,Q3,Q2,Q1,Q0,OC); inputLDN,D3,D2,D1,D0,CP,CRN,EP,ET; output Q3,Q2,Q1,Q0,OC; reg Q3,Q2,Q1,Q0,OC; reg3:0 Q_TEMP; always(posedge CP or negedge CRN ) begin if (!CRN) Q_TEMP = 4b0000; /異步異步復(fù)位復(fù)位 else begin if (!LDN) Q_TEMP = D3,D2,D1,D0; /同步同步預(yù)置預(yù)置

47、else if (EP & ET)/計(jì)數(shù)計(jì)數(shù) if (Q_TEMP 4b1001) Q_TEMP = Q_TEMP + 1; else Q_TEMP = 4b0000; else Q_TEMP = Q_TEMP; /保持保持 end end 異步異步復(fù)位復(fù)位最大只計(jì)到最大只計(jì)到9154 CT74160的的HDL設(shè)計(jì)續(xù)設(shè)計(jì)續(xù) always/產(chǎn)生進(jìn)位輸出和對(duì)最終輸出賦值產(chǎn)生進(jìn)位輸出和對(duì)最終輸出賦值 begin if (Q_TEMP = 4b1001 & ET = 1b1) OC = 1b1; else OC = 1b0; Q3,Q2,Q1,Q0 = Q_TEMP; endendmo

48、dule返回返回74161的設(shè)計(jì)的設(shè)計(jì)組合邏輯組合邏輯155CT74160的仿真波形圖的仿真波形圖同步預(yù)置同步預(yù)置計(jì)數(shù)計(jì)數(shù)保持保持ET=0 時(shí)保持時(shí)保持異步復(fù)位異步復(fù)位156【例【例7.24】二進(jìn)制同步計(jì)數(shù)器】二進(jìn)制同步計(jì)數(shù)器CT74161(異步去除異步去除)【例【例7.24】用】用always塊語句設(shè)計(jì)二進(jìn)制同步計(jì)塊語句設(shè)計(jì)二進(jìn)制同步計(jì)數(shù)器數(shù)器CT74161并行數(shù)據(jù)輸入端:并行數(shù)據(jù)輸入端:D3-D0時(shí)鐘輸入端:時(shí)鐘輸入端:CP,上升沿有效,上升沿有效狀態(tài)輸出端:狀態(tài)輸出端: Q3-Q0, Q3、Q2、Q1和和Q0的的權(quán)值依次為權(quán)值依次為23、22、21和和20異步復(fù)位輸入端:異步復(fù)位輸入端:

49、CRN,低電平有效,低電平有效同步預(yù)置控制輸入端:同步預(yù)置控制輸入端:LDN ,低電平有效,低電平有效使能控制輸入端:使能控制輸入端:EP和和ET,高電平有效,均,高電平有效,均為為1時(shí)計(jì)數(shù)器工作,只要有時(shí)計(jì)數(shù)器工作,只要有1個(gè)信號(hào)為個(gè)信號(hào)為0,那,那么計(jì)數(shù)器保持么計(jì)數(shù)器保持進(jìn)位輸出端:進(jìn)位輸出端:OC, Q3Q2Q1Q0=1111且且ET=1時(shí),時(shí),OC=12、4位二進(jìn)制同步計(jì)數(shù)器異步去除位二進(jìn)制同步計(jì)數(shù)器異步去除CT74161157CT74161的的HDL設(shè)計(jì)設(shè)計(jì)module CT74161(LDN,D3,D2,D1,D0,CP,CRN,EP,ET,Q3,Q2,Q1,Q0,OC); inp

50、ut LDN,D3,D2,D1,D0,CP,CRN,EP,ET; output Q3,Q2,Q1,Q0,OC; reg Q3,Q2,Q1,Q0,OC; reg3:0 Q_TEMP; always(posedge CP or negedge CRN ) begin if (!CRN) Q_TEMP = 4b0000; /異步異步復(fù)位復(fù)位 else begin if (!LDN) Q_TEMP = D3,D2,D1,D0; /同步同步預(yù)置預(yù)置 else if (EP & ET) Q_TEMP = Q_TEMP + 1; /計(jì)數(shù)計(jì)數(shù) else Q_TEMP = Q_TEMP; /保持保持 e

51、nd end與與CT74160的區(qū)的區(qū)別別:不必判斷計(jì)數(shù)不必判斷計(jì)數(shù)最大值為多少,最大值為多少,每來一個(gè)時(shí)鐘脈每來一個(gè)時(shí)鐘脈沖,都加沖,都加1計(jì)數(shù)計(jì)數(shù)158CT74161的的HDL設(shè)計(jì)續(xù)設(shè)計(jì)續(xù)always/產(chǎn)生進(jìn)位輸出和對(duì)最終輸出賦值產(chǎn)生進(jìn)位輸出和對(duì)最終輸出賦值 begin if (Q_TEMP = 4b1111 & ET = 1b1) OC = 1b1; else OC = 1b0;Q3,Q2,Q1,Q0 = Q_TEMP; endendmodule與與CT74160的區(qū)別的區(qū)別CT74160源程序源程序159CT74161的仿真波形圖的仿真波形圖毛刺毛刺異步復(fù)位異步復(fù)位最大計(jì)到最大

52、計(jì)到(1111)2160【例【例7.25】同步計(jì)數(shù)器】同步計(jì)數(shù)器CT74163同步去除同步去除3、4位二進(jìn)制同步計(jì)數(shù)器位二進(jìn)制同步計(jì)數(shù)器CT74163【例【例7.25】用】用always塊語句設(shè)計(jì)二進(jìn)制同步計(jì)塊語句設(shè)計(jì)二進(jìn)制同步計(jì)數(shù)器數(shù)器CT74163 同步去除同步去除 并行數(shù)據(jù)輸入端:并行數(shù)據(jù)輸入端:D3-D0; 時(shí)鐘輸入端:時(shí)鐘輸入端:CP,上升沿有效;,上升沿有效; 狀態(tài)輸出端:狀態(tài)輸出端: Q3-Q0, Q3、Q2、 Q1和和Q0的權(quán)值依次為的權(quán)值依次為23、22、21和和20同步復(fù)位輸入端:同步復(fù)位輸入端:CRN,低電平有效,低電平有效同步預(yù)置控制輸入端:同步預(yù)置控制輸入端:LDN

53、,低電平有效,低電平有效使能控制輸入端:使能控制輸入端:EP和和ET,高電平有效,均,高電平有效,均為為1時(shí)計(jì)數(shù)器工作,只要有時(shí)計(jì)數(shù)器工作,只要有1個(gè)信號(hào)為個(gè)信號(hào)為0,那么計(jì)數(shù)器保持那么計(jì)數(shù)器保持進(jìn)位輸出端:進(jìn)位輸出端:OC, Q3Q2Q1Q0=1111且且ET=1時(shí),時(shí),OC=1161CT74163的的HDL設(shè)計(jì)設(shè)計(jì)module CT74163(LDN,D3,D2,D1,D0,CP,CRN,EP,ET,Q3,Q2,Q1,Q0,OC); inputLDN,D3,D2,D1,D0,CP,CRN,EP,ET; outputQ3,Q2,Q1,Q0,OC; regQ3,Q2,Q1,Q0,OC; reg

54、3:0 Q_TEMP; always(posedge CP ) beginif (!CRN) Q_TEMP = 4b0000; /同步同步復(fù)位復(fù)位else if (!LDN) Q_TEMP = D3,D2,D1,D0; /同步同步預(yù)置預(yù)置else if (EP & ET) Q_TEMP = Q_TEMP + 1; /計(jì)數(shù)計(jì)數(shù)else Q_TEMP = Q_TEMP; /保持保持 end always beginif (Q_TEMP = 4b1111 & ET = 1b1) OC = 1b1;else OC = 1b0;Q3,Q2,Q1,Q0 = Q_TEMP; endendmo

55、dule 程序與程序與CT74161有何區(qū)別?有何區(qū)別?162CT74163的設(shè)計(jì)的仿真波形圖的設(shè)計(jì)的仿真波形圖同步復(fù)位同步復(fù)位1634、同步加、同步加/減計(jì)數(shù)器減計(jì)數(shù)器CT74191【例例7.26】4位二進(jìn)制同步加位二進(jìn)制同步加/減計(jì)數(shù)器減計(jì)數(shù)器CT74191u并行數(shù)據(jù)輸入端:并行數(shù)據(jù)輸入端:D3-D0u 時(shí)鐘輸入端:時(shí)鐘輸入端:CP,上升沿有效,上升沿有效u狀態(tài)輸出端:狀態(tài)輸出端: Q3-Q0, Q3、Q2、 Q1和和Q0的權(quán)值依次為的權(quán)值依次為23、22、21和和20u加加/減控制輸入端:減控制輸入端:M,M=0時(shí),計(jì)數(shù)器加計(jì)數(shù);時(shí),計(jì)數(shù)器加計(jì)數(shù);M=1時(shí),計(jì)數(shù)器減計(jì)數(shù)時(shí),計(jì)數(shù)器減計(jì)數(shù)u

56、使能控制輸入端:使能控制輸入端:SN,低電平有效,低電平有效u同步預(yù)置控制輸入端:同步預(yù)置控制輸入端:LDN,低電平有效,低電平有效u進(jìn)位進(jìn)位/借位輸出端:借位輸出端:OC_OB,加法計(jì)數(shù)時(shí),當(dāng),加法計(jì)數(shù)時(shí),當(dāng)Q3Q2Q1Q0=1111時(shí),時(shí),OC_OB=1;減法計(jì)數(shù);減法計(jì)數(shù)時(shí),當(dāng)時(shí),當(dāng)Q3Q2Q1Q0=0000時(shí),時(shí),OC_OB=1 ;uOC_OB的反相輸出端的反相輸出端: OCN,輸出脈沖寬度為,輸出脈沖寬度為半個(gè)時(shí)鐘周期低電平段半個(gè)時(shí)鐘周期低電平段164CT74191的的HDL設(shè)計(jì)設(shè)計(jì)module CT74191(LDN,D3,D2,D1,D0,CP,M,SN, Q3,Q2,Q1,Q0

57、,OC_OB,OCN); input LDN,D3,D2,D1,D0,CP,M,SN; output Q3,Q2,Q1,Q0,OC_OB,OCN; reg Q3,Q2,Q1,Q0,OC_OB,OCN; reg3:0 Q_TEMP; always (posedge CP ) /1處理加處理加/減操作減操作 begin if (!LDN) Q_TEMP = D3,D2,D1,D0; /同步預(yù)置同步預(yù)置 else if (!SN) /計(jì)數(shù)器工作計(jì)數(shù)器工作 if (!M) Q_TEMP = Q_TEMP + 1; /假設(shè)假設(shè)M為為0,做加,做加法法 else Q_TEMP = Q_TEMP - 1;

58、/假設(shè)假設(shè)M為為1,做減,做減法法 else Q_TEMP = Q_TEMP;/計(jì)數(shù)器保持計(jì)數(shù)器保持 end165CT74191的的HDL設(shè)計(jì)續(xù)設(shè)計(jì)續(xù)always /2處理進(jìn)位處理進(jìn)位/借位操作借位操作 begin if (Q_TEMP = 4b1111 & M = 1b0) begin OC_OB = 1b1;/產(chǎn)生進(jìn)位產(chǎn)生進(jìn)位 OCN = (OC_OB & CP); end else if (Q_TEMP = 4b0000 & M = 1b1) begin OC_OB = 1b1; /產(chǎn)生借位產(chǎn)生借位 OCN = (OC_OB & CP); end else

59、 OC_OB = 1b0; Q3,Q2,Q1,Q0 = Q_TEMP; endendmodule166CT74191的仿真波形圖的仿真波形圖M=1時(shí)時(shí), 減減計(jì)數(shù)計(jì)數(shù)SN=0時(shí),工作時(shí),工作SN=1時(shí)時(shí)保持保持借位借位預(yù)置預(yù)置進(jìn)位進(jìn)位M=0時(shí)時(shí), 加加計(jì)數(shù)計(jì)數(shù)167計(jì)數(shù)器同步清零與異步清零計(jì)數(shù)器同步清零與異步清零u通常采用異步清零通常采用異步清零只要清零信號(hào)有效,那么無論有無時(shí)鐘脈只要清零信號(hào)有效,那么無論有無時(shí)鐘脈沖到來,計(jì)數(shù)器輸出立刻被清零。沖到來,計(jì)數(shù)器輸出立刻被清零。 always (posedge CP or negedge CRN) begin if (!CRN) /異步清零異步清

60、零 Q=4b0000; end 異步清零異步清零168計(jì)數(shù)器同步清零與異步清零續(xù)計(jì)數(shù)器同步清零與異步清零續(xù)u只有在時(shí)鐘周期很小或清零信號(hào)為電平信號(hào)時(shí)容易捕捉到清只有在時(shí)鐘周期很小或清零信號(hào)為電平信號(hào)時(shí)容易捕捉到清零信號(hào)采用同步清零零信號(hào)采用同步清零當(dāng)清零信號(hào)有效時(shí),假設(shè)來一個(gè)時(shí)當(dāng)清零信號(hào)有效時(shí),假設(shè)來一個(gè)時(shí)鐘脈沖,那么計(jì)數(shù)器輸出被清零。鐘脈沖,那么計(jì)數(shù)器輸出被清零。always (posedge CP) begin if (!CRN) /同步清零同步清零 Q=4b0000; end同步清零同步清零1697.5.4 順序脈沖發(fā)生器的設(shè)計(jì)順序脈沖發(fā)生器的設(shè)計(jì) v 在時(shí)鐘脈沖的控制下,各觸發(fā)器輸在時(shí)鐘脈沖的控制下,各觸發(fā)器輸出端順序產(chǎn)生脈沖信號(hào)的電路稱為出端順序產(chǎn)生脈沖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論