![已看第五章VHDL有限狀態(tài)機(jī)設(shè)計(jì)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-6/25/82cde705-fba1-49ad-892f-649e8c141032/82cde705-fba1-49ad-892f-649e8c1410321.gif)
![已看第五章VHDL有限狀態(tài)機(jī)設(shè)計(jì)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-6/25/82cde705-fba1-49ad-892f-649e8c141032/82cde705-fba1-49ad-892f-649e8c1410322.gif)
![已看第五章VHDL有限狀態(tài)機(jī)設(shè)計(jì)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-6/25/82cde705-fba1-49ad-892f-649e8c141032/82cde705-fba1-49ad-892f-649e8c1410323.gif)
![已看第五章VHDL有限狀態(tài)機(jī)設(shè)計(jì)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-6/25/82cde705-fba1-49ad-892f-649e8c141032/82cde705-fba1-49ad-892f-649e8c1410324.gif)
![已看第五章VHDL有限狀態(tài)機(jī)設(shè)計(jì)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-6/25/82cde705-fba1-49ad-892f-649e8c141032/82cde705-fba1-49ad-892f-649e8c1410325.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VHDL有限狀態(tài)機(jī)設(shè)計(jì)有限狀態(tài)機(jī)設(shè)計(jì) 內(nèi)容內(nèi)容 u有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 uVHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u狀態(tài)機(jī)設(shè)計(jì)舉例狀態(tài)機(jī)設(shè)計(jì)舉例 u三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u毛刺信號(hào)的數(shù)字排除方式毛刺信號(hào)的數(shù)字排除方式 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u狀態(tài)機(jī)是一種思想方法狀態(tài)機(jī)是一種思想方法 狀態(tài)機(jī)的本質(zhì)就是對(duì)具有邏輯順序或時(shí)序規(guī)律狀態(tài)機(jī)的本質(zhì)就是對(duì)具有邏輯順序或時(shí)序規(guī)律 事件的一種描述方法。具有邏輯順序和時(shí)序規(guī)事件的一種描述方法。具有邏輯順序和時(shí)序規(guī) 律的事件都適合用狀態(tài)機(jī)描述。律的事
2、件都適合用狀態(tài)機(jī)描述。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 某學(xué)生在學(xué)校的學(xué)習(xí)生活可以簡(jiǎn)單地概括為宿某學(xué)生在學(xué)校的學(xué)習(xí)生活可以簡(jiǎn)單地概括為宿 舍、教室、食堂之間的周而復(fù)始。舍、教室、食堂之間的周而復(fù)始。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 右圖也是一張標(biāo)準(zhǔn)右圖也是一張標(biāo)準(zhǔn) 的狀態(tài)轉(zhuǎn)移圖,通過(guò)的狀態(tài)轉(zhuǎn)移圖,通過(guò) 狀態(tài)機(jī)的方式我們?cè)贍顟B(tài)機(jī)的方式我們?cè)?次清晰地描述另一個(gè)次清晰地描述另一個(gè) 學(xué)生的在校生活方式。學(xué)生的在校生活方式。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u例:設(shè)計(jì)一個(gè)以秒為單位的例:設(shè)計(jì)一個(gè)以秒為單位的4位流水燈。要求:位流水燈。要求: 每秒只能點(diǎn)亮每秒只
3、能點(diǎn)亮1個(gè)個(gè)LED,點(diǎn)亮方式為高電平有效。,點(diǎn)亮方式為高電平有效。 u例:設(shè)計(jì)一個(gè)串行數(shù)據(jù)流檢測(cè)器。要求:輸入連例:設(shè)計(jì)一個(gè)串行數(shù)據(jù)流檢測(cè)器。要求:輸入連 續(xù)的二進(jìn)制數(shù),當(dāng)檢測(cè)到連續(xù)續(xù)的二進(jìn)制數(shù),當(dāng)檢測(cè)到連續(xù)“1”的個(gè)數(shù)大于的個(gè)數(shù)大于2 個(gè)的時(shí)候,輸出個(gè)的時(shí)候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出“0”。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u有限狀態(tài)機(jī)的定義有限狀態(tài)機(jī)的定義 所謂有限狀態(tài)機(jī)是指那些輸出取決于過(guò)去輸入所謂有限狀態(tài)機(jī)是指那些輸出取決于過(guò)去輸入 部分和當(dāng)前輸入部分的時(shí)序邏輯電路。部分和當(dāng)前輸入部分的時(shí)序邏輯電路。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u狀態(tài)機(jī)的
4、本質(zhì)狀態(tài)機(jī)的本質(zhì) 對(duì)具有對(duì)具有“邏輯順序邏輯順序”和和“時(shí)序規(guī)律時(shí)序規(guī)律”事件的一事件的一 種描述方法。種描述方法。 u應(yīng)用思路應(yīng)用思路 從狀態(tài)變量入手,分析每個(gè)狀態(tài)的輸入,狀態(tài)從狀態(tài)變量入手,分析每個(gè)狀態(tài)的輸入,狀態(tài) 轉(zhuǎn)移和輸出,從而完成電路的功能。轉(zhuǎn)移和輸出,從而完成電路的功能。 首先明確電路的輸出關(guān)系,這些輸出相當(dāng)于狀首先明確電路的輸出關(guān)系,這些輸出相當(dāng)于狀 態(tài)的輸出,回溯規(guī)劃每個(gè)狀態(tài)和狀態(tài)轉(zhuǎn)移條件態(tài)的輸出,回溯規(guī)劃每個(gè)狀態(tài)和狀態(tài)轉(zhuǎn)移條件 與狀態(tài)輸入。與狀態(tài)輸入。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u狀態(tài)機(jī)的基本要素狀態(tài)機(jī)的基本要素 狀態(tài):也叫狀態(tài)變量。在邏輯設(shè)計(jì)中,使用狀狀
5、態(tài):也叫狀態(tài)變量。在邏輯設(shè)計(jì)中,使用狀 態(tài)劃分邏輯順序和時(shí)序規(guī)律。態(tài)劃分邏輯順序和時(shí)序規(guī)律。 輸出:輸出指在某一個(gè)狀態(tài)時(shí)特定發(fā)生的事件。輸出:輸出指在某一個(gè)狀態(tài)時(shí)特定發(fā)生的事件。 輸入:指狀態(tài)機(jī)中進(jìn)入每個(gè)狀態(tài)的條件,有的輸入:指狀態(tài)機(jī)中進(jìn)入每個(gè)狀態(tài)的條件,有的 狀態(tài)機(jī)沒(méi)有輸入條件,其中的狀態(tài)轉(zhuǎn)移較為簡(jiǎn)狀態(tài)機(jī)沒(méi)有輸入條件,其中的狀態(tài)轉(zhuǎn)移較為簡(jiǎn) 單,有的狀態(tài)機(jī)有輸入條件,當(dāng)某個(gè)輸入條件單,有的狀態(tài)機(jī)有輸入條件,當(dāng)某個(gè)輸入條件 存在時(shí)才能轉(zhuǎn)移到相應(yīng)的狀態(tài)。存在時(shí)才能轉(zhuǎn)移到相應(yīng)的狀態(tài)。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u有限狀態(tài)機(jī)的組成有限狀態(tài)機(jī)的組成 組合邏輯組合邏輯 組合邏輯又可分為
6、次態(tài)邏輯和輸出邏輯兩個(gè)部分。其組合邏輯又可分為次態(tài)邏輯和輸出邏輯兩個(gè)部分。其 中:次態(tài)邏輯的功能是用來(lái)確定有限狀態(tài)機(jī)的下一個(gè)中:次態(tài)邏輯的功能是用來(lái)確定有限狀態(tài)機(jī)的下一個(gè) 狀態(tài);輸出邏輯是用來(lái)確定有限狀態(tài)機(jī)的輸出。狀態(tài);輸出邏輯是用來(lái)確定有限狀態(tài)機(jī)的輸出。 時(shí)序邏輯時(shí)序邏輯 時(shí)序邏輯:時(shí)序邏輯:同步時(shí)序方式工作下運(yùn)轉(zhuǎn)及狀態(tài)轉(zhuǎn)換。同步時(shí)序方式工作下運(yùn)轉(zhuǎn)及狀態(tài)轉(zhuǎn)換。 寄存器邏輯寄存器邏輯 寄存器邏輯的功能:用來(lái)存儲(chǔ)有限狀態(tài)機(jī)的內(nèi)部狀態(tài)。寄存器邏輯的功能:用來(lái)存儲(chǔ)有限狀態(tài)機(jī)的內(nèi)部狀態(tài)。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u狀態(tài)機(jī)實(shí)現(xiàn)三個(gè)功能狀態(tài)機(jī)實(shí)現(xiàn)三個(gè)功能 狀態(tài)譯碼:根據(jù)輸入以及系統(tǒng)當(dāng)
7、前的狀態(tài),狀態(tài)譯碼:根據(jù)輸入以及系統(tǒng)當(dāng)前的狀態(tài), 由狀態(tài)方程來(lái)決定下一狀態(tài)的狀態(tài)碼。由狀態(tài)方程來(lái)決定下一狀態(tài)的狀態(tài)碼。 狀態(tài)輸出:根據(jù)當(dāng)前的狀態(tài)碼決定電路當(dāng)前輸出。狀態(tài)輸出:根據(jù)當(dāng)前的狀態(tài)碼決定電路當(dāng)前輸出。 狀態(tài)轉(zhuǎn)換:將下一狀態(tài)轉(zhuǎn)變?yōu)楫?dāng)前狀態(tài)。狀態(tài)轉(zhuǎn)換:將下一狀態(tài)轉(zhuǎn)變?yōu)楫?dāng)前狀態(tài)。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u1. 說(shuō)明部分說(shuō)明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state, next_state: FSM_ST; u2.主控時(shí)序進(jìn)程主控時(shí)序進(jìn)程 負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在時(shí)鐘驅(qū)動(dòng)下的狀態(tài)
8、轉(zhuǎn)換,隨負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在時(shí)鐘驅(qū)動(dòng)下的狀態(tài)轉(zhuǎn)換,隨 外部時(shí)鐘信號(hào),以同步時(shí)序方式工作。外部時(shí)鐘信號(hào),以同步時(shí)序方式工作。 u3.主控組合進(jìn)程主控組合進(jìn)程 通過(guò)通過(guò)pr_state的改變,進(jìn)入主控組合進(jìn)程,根據(jù)外部的改變,進(jìn)入主控組合進(jìn)程,根據(jù)外部 輸入信號(hào)確定輸出和下一狀態(tài)的走向(輸入信號(hào)確定輸出和下一狀態(tài)的走向(nx_state) u4. 輔助進(jìn)程輔助進(jìn)程 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u有限狀態(tài)機(jī)的類型有限狀態(tài)機(jī)的類型 從信號(hào)輸出方式上分從信號(hào)輸出方式上分 Mealy型狀態(tài)機(jī)型狀態(tài)機(jī) Moore型狀態(tài)機(jī)型狀態(tài)機(jī) 從結(jié)構(gòu)上分從結(jié)構(gòu)上分 單進(jìn)程狀態(tài)機(jī)單進(jìn)程狀態(tài)機(jī) 兩進(jìn)程狀態(tài)機(jī)兩
9、進(jìn)程狀態(tài)機(jī) 三進(jìn)程狀態(tài)機(jī)三進(jìn)程狀態(tài)機(jī) 從表達(dá)方式上分從表達(dá)方式上分 符號(hào)化狀態(tài)機(jī)符號(hào)化狀態(tài)機(jī) 確定狀態(tài)編碼的狀態(tài)機(jī)確定狀態(tài)編碼的狀態(tài)機(jī) 從編碼方式上分從編碼方式上分 順序編碼狀態(tài)機(jī)順序編碼狀態(tài)機(jī) 獨(dú)熱碼狀態(tài)機(jī)獨(dú)熱碼狀態(tài)機(jī) 格雷碼狀態(tài)機(jī)格雷碼狀態(tài)機(jī) 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 uMoore型有限狀態(tài)機(jī)型有限狀態(tài)機(jī) 是指那些輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān)的有限狀是指那些輸出信號(hào)僅與當(dāng)前狀態(tài)有關(guān)的有限狀 態(tài)機(jī),即可以把態(tài)機(jī),即可以把Moore型有限狀態(tài)機(jī)的輸出看型有限狀態(tài)機(jī)的輸出看 成是當(dāng)前狀態(tài)的函數(shù)。成是當(dāng)前狀態(tài)的函數(shù)。 Moore型有限狀態(tài)機(jī)框圖:型有限狀態(tài)機(jī)框圖: 1 有限狀態(tài)機(jī)的
10、基本概念有限狀態(tài)機(jī)的基本概念 uMealy型有限狀態(tài)機(jī)型有限狀態(tài)機(jī) 是指那些輸出信號(hào)不僅與當(dāng)前狀態(tài)有關(guān),而且是指那些輸出信號(hào)不僅與當(dāng)前狀態(tài)有關(guān),而且 還與所有的輸入信號(hào)有關(guān)的有限狀態(tài)機(jī),即可還與所有的輸入信號(hào)有關(guān)的有限狀態(tài)機(jī),即可 以把以把Mealy有限狀態(tài)機(jī)的輸出看作當(dāng)前狀態(tài)和有限狀態(tài)機(jī)的輸出看作當(dāng)前狀態(tài)和 所有輸入信號(hào)的函數(shù)。可見(jiàn),所有輸入信號(hào)的函數(shù)??梢?jiàn),Mealy有限狀態(tài)有限狀態(tài) 機(jī)要比機(jī)要比Moore有限狀態(tài)機(jī)復(fù)雜一些。有限狀態(tài)機(jī)復(fù)雜一些。 Mealy有限狀態(tài)機(jī)框圖:有限狀態(tài)機(jī)框圖: 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 uMoore型和型和Mealy型有限狀態(tài)機(jī)的區(qū)別:型有
11、限狀態(tài)機(jī)的區(qū)別: Moore型有限狀態(tài)機(jī)僅與當(dāng)前狀態(tài)有關(guān),而與型有限狀態(tài)機(jī)僅與當(dāng)前狀態(tài)有關(guān),而與 輸入信號(hào)無(wú)關(guān);輸入信號(hào)無(wú)關(guān); Mealy型有限狀態(tài)機(jī)不但與當(dāng)前狀態(tài)有關(guān),而型有限狀態(tài)機(jī)不但與當(dāng)前狀態(tài)有關(guān),而 且還與狀態(tài)機(jī)的輸入信號(hào)有關(guān)。且還與狀態(tài)機(jī)的輸入信號(hào)有關(guān)。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u采用何種有限狀態(tài)機(jī)的判別條件:采用何種有限狀態(tài)機(jī)的判別條件: Moore型有限狀態(tài)機(jī)可能要比相應(yīng)的型有限狀態(tài)機(jī)可能要比相應(yīng)的Mealy型型 有限狀態(tài)機(jī)需要更多的狀態(tài)。有限狀態(tài)機(jī)需要更多的狀態(tài)。 Moore型有限狀態(tài)機(jī)的輸出與當(dāng)前的輸入部分型有限狀態(tài)機(jī)的輸出與當(dāng)前的輸入部分 無(wú)關(guān),因此當(dāng)
12、前輸入產(chǎn)生的任何效果將會(huì)延遲無(wú)關(guān),因此當(dāng)前輸入產(chǎn)生的任何效果將會(huì)延遲 到下一個(gè)時(shí)鐘周期??梢?jiàn),到下一個(gè)時(shí)鐘周期??梢?jiàn),Moore型狀態(tài)機(jī)的型狀態(tài)機(jī)的 最大優(yōu)點(diǎn)就是可以將輸入部分和輸出部分隔離最大優(yōu)點(diǎn)就是可以將輸入部分和輸出部分隔離 開(kāi)。開(kāi)。 對(duì)于對(duì)于Mealy型有限狀態(tài)機(jī)來(lái)說(shuō),由于它的輸出型有限狀態(tài)機(jī)來(lái)說(shuō),由于它的輸出 是輸入信號(hào)的函數(shù),因此如果輸入信號(hào)發(fā)生改是輸入信號(hào)的函數(shù),因此如果輸入信號(hào)發(fā)生改 變,那么輸出可以在一個(gè)時(shí)鐘周期內(nèi)發(fā)生改變。變,那么輸出可以在一個(gè)時(shí)鐘周期內(nèi)發(fā)生改變。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u單進(jìn)程狀態(tài)機(jī)單進(jìn)程狀態(tài)機(jī) 整個(gè)狀態(tài)機(jī)的描述在一個(gè)進(jìn)程中完成整個(gè)
13、狀態(tài)機(jī)的描述在一個(gè)進(jìn)程中完成 u雙進(jìn)程狀態(tài)機(jī)雙進(jìn)程狀態(tài)機(jī) 將組合邏輯部分和時(shí)序邏輯部分分開(kāi)描述,放將組合邏輯部分和時(shí)序邏輯部分分開(kāi)描述,放 在結(jié)構(gòu)體的說(shuō)明部分在結(jié)構(gòu)體的說(shuō)明部分 u三進(jìn)程狀態(tài)機(jī)三進(jìn)程狀態(tài)機(jī) 將組合邏輯部分再分為產(chǎn)生次態(tài)的組合邏輯部將組合邏輯部分再分為產(chǎn)生次態(tài)的組合邏輯部 分和產(chǎn)生輸出的組合邏輯部分,與時(shí)序邏輯部分和產(chǎn)生輸出的組合邏輯部分,與時(shí)序邏輯部 分一起放在結(jié)構(gòu)體的說(shuō)明部分分一起放在結(jié)構(gòu)體的說(shuō)明部分 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u符號(hào)化狀態(tài)機(jī)符號(hào)化狀態(tài)機(jī) 所謂符號(hào)化狀態(tài)機(jī),就是在程序的說(shuō)明部分使所謂符號(hào)化狀態(tài)機(jī),就是在程序的說(shuō)明部分使 用用TYPE語(yǔ)句定義
14、枚舉類型,其元素用狀態(tài)機(jī)語(yǔ)句定義枚舉類型,其元素用狀態(tài)機(jī) 的狀態(tài)名來(lái)定義。狀態(tài)變量(如狀態(tài)機(jī)的現(xiàn)態(tài)的狀態(tài)名來(lái)定義。狀態(tài)變量(如狀態(tài)機(jī)的現(xiàn)態(tài) 和次態(tài))定義為變量或信號(hào),并將狀態(tài)變量的和次態(tài))定義為變量或信號(hào),并將狀態(tài)變量的 數(shù)據(jù)類型定義為含有既定狀態(tài)元素的枚舉類型。數(shù)據(jù)類型定義為含有既定狀態(tài)元素的枚舉類型。 在使用多進(jìn)程時(shí),為便于信息傳遞,要將狀態(tài)在使用多進(jìn)程時(shí),為便于信息傳遞,要將狀態(tài) 變量定義為信號(hào)。變量定義為信號(hào)。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u類型定義語(yǔ)句類型定義語(yǔ)句 TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 OF 基本數(shù)基本數(shù) 據(jù)類型據(jù)類型; 或
15、或 TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義; 例:例: TYPE st1 IS ARRAY (0 TO 15) OF STD_LOGIC; TYPE week IS (sun, mon, tue, wed, thu, fri, sat); 符號(hào)化狀態(tài)機(jī)應(yīng)用符號(hào)化狀態(tài)機(jī)應(yīng)用 TYPE m_state IS (st0, st1, st2, st3, st4, st5); SIGNAL present_state, next_state : m_state; 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u確定狀態(tài)編碼的狀態(tài)機(jī)確定狀態(tài)編碼的狀態(tài)機(jī) 使用符號(hào)化定義的枚舉類型,枚
16、舉類型文字元使用符號(hào)化定義的枚舉類型,枚舉類型文字元 素的編碼通常是自動(dòng)設(shè)置的,綜合器根據(jù)優(yōu)化素的編碼通常是自動(dòng)設(shè)置的,綜合器根據(jù)優(yōu)化 情況、優(yōu)化控制的設(shè)置或設(shè)計(jì)者的特殊設(shè)定來(lái)情況、優(yōu)化控制的設(shè)置或設(shè)計(jì)者的特殊設(shè)定來(lái) 確定各元素具體編碼的二進(jìn)制位數(shù)、數(shù)值及元確定各元素具體編碼的二進(jìn)制位數(shù)、數(shù)值及元 素間編碼的順序。素間編碼的順序。 也可以在程序中指明編碼方式。也可以在程序中指明編碼方式。 常用的編碼方式常用的編碼方式 2進(jìn)制編碼進(jìn)制編碼 格雷碼編碼格雷碼編碼 One-hot編碼編碼 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u2進(jìn)制編碼進(jìn)制編碼 狀態(tài)機(jī)的每一個(gè)狀態(tài)用二進(jìn)制位來(lái)編碼狀態(tài)機(jī)的每
17、一個(gè)狀態(tài)用二進(jìn)制位來(lái)編碼 例:實(shí)現(xiàn)例:實(shí)現(xiàn)4狀態(tài)的狀態(tài)機(jī),其其二進(jìn)制編碼可狀態(tài)的狀態(tài)機(jī),其其二進(jìn)制編碼可 為為 狀態(tài)狀態(tài)1=“00”狀態(tài)狀態(tài)2=“01”狀態(tài)狀態(tài)3=“10” 狀態(tài)狀態(tài)4=“11” 需要的寄存器數(shù)量最少,有需要的寄存器數(shù)量最少,有n個(gè)寄存器就可以個(gè)寄存器就可以 對(duì)對(duì)2n個(gè)狀態(tài)進(jìn)行編碼。個(gè)狀態(tài)進(jìn)行編碼。 需要更多的外部輔助邏輯,并且速度較慢。需要更多的外部輔助邏輯,并且速度較慢。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u格雷碼狀態(tài)機(jī)編碼格雷碼狀態(tài)機(jī)編碼 格雷碼編碼每次僅一個(gè)狀態(tài)位的值發(fā)生變化格雷碼編碼每次僅一個(gè)狀態(tài)位的值發(fā)生變化 例:實(shí)現(xiàn)例:實(shí)現(xiàn)4狀態(tài)的狀態(tài)機(jī),其格雷碼編碼
18、可為狀態(tài)的狀態(tài)機(jī),其格雷碼編碼可為 狀態(tài)狀態(tài)1=“00”狀態(tài)狀態(tài)2=“01”狀態(tài)狀態(tài)3=“11”狀狀 態(tài)態(tài)4=“10” 特點(diǎn):觸發(fā)器使用較少,速度較慢,不會(huì)產(chǎn)生特點(diǎn):觸發(fā)器使用較少,速度較慢,不會(huì)產(chǎn)生 兩位同時(shí)翻轉(zhuǎn)的情況。當(dāng)狀態(tài)位的輸出被異步兩位同時(shí)翻轉(zhuǎn)的情況。當(dāng)狀態(tài)位的輸出被異步 應(yīng)用時(shí),格雷碼編碼是有益的。應(yīng)用時(shí),格雷碼編碼是有益的。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 uOne-hot狀態(tài)機(jī)編碼狀態(tài)機(jī)編碼 One hot的編碼方案對(duì)每一個(gè)狀態(tài)采用一個(gè)觸的編碼方案對(duì)每一個(gè)狀態(tài)采用一個(gè)觸 發(fā)器,即發(fā)器,即4個(gè)狀態(tài)的狀態(tài)機(jī)需個(gè)狀態(tài)的狀態(tài)機(jī)需4個(gè)觸發(fā)器。同一個(gè)觸發(fā)器。同一 時(shí)間僅時(shí)間僅
19、1個(gè)狀態(tài)位處于有效電平(如邏輯個(gè)狀態(tài)位處于有效電平(如邏輯“1”) 例:實(shí)現(xiàn)例:實(shí)現(xiàn)4狀態(tài)的狀態(tài)機(jī),其狀態(tài)的狀態(tài)機(jī),其one hot編碼可為編碼可為 狀態(tài)狀態(tài)1=“0001”狀態(tài)狀態(tài)2=“0010”狀態(tài)狀態(tài) 3=“0100”狀態(tài)狀態(tài)4=“1000” 特點(diǎn):觸發(fā)器使用較多,但邏輯簡(jiǎn)單,速度快。特點(diǎn):觸發(fā)器使用較多,但邏輯簡(jiǎn)單,速度快。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u關(guān)于關(guān)于one-hot、gray-code、binary編碼使編碼使 用說(shuō)明用說(shuō)明 Binary、gray-code編碼使用較少的觸發(fā)器,編碼使用較少的觸發(fā)器, 較多的組合邏輯,而較多的組合邏輯,而one-hot編碼
20、反之。由于編碼反之。由于 CPLD更多的提供組合邏輯,而更多的提供組合邏輯,而FPGA更多的更多的 提供觸發(fā)器資源,所以提供觸發(fā)器資源,所以CPLD多使用多使用gray- code,而,而FPGA多使用多使用one-hot編碼。編碼。 對(duì)于小型設(shè)計(jì)使用對(duì)于小型設(shè)計(jì)使用gray-code和和binary編碼更編碼更 有效,而大型狀態(tài)機(jī)使用有效,而大型狀態(tài)機(jī)使用one-hot編碼更有效。編碼更有效。 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u程序中指明編碼方式程序中指明編碼方式 ARCHITECTURE BEHAV OF BINARY IS TYPE STATE_TYPE IS(S1, S2
21、, S3, S4, S5, S6, S7); ATTRIBUTE ENUM_ENCODING: STRING; ATTRIBUTE ENUM_ENCODING OF STATE_TYPE: TYPE IS 001 010 011 100 101 110 111; ARCHITECTURE BEHAV OF ONE_HOT IS TYPE STATE_TYPE IS(S1, S2, S3, S4, S5, S6, S7); ATTRIBUTE ENUM_ENCODING: STRING; ATTRIBUTE ENUM_ENCODING OF STATE_TYPE: TYPE IS 0000000
22、1 00000010 00000100 00001000 00010000 00100000 01000000 10000000; Binary編碼 One-hot編碼 1 有限狀態(tài)機(jī)的基本概念有限狀態(tài)機(jī)的基本概念 u程序中指明編碼方式程序中指明編碼方式 2 狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 u設(shè)計(jì)狀態(tài)機(jī)的步驟:設(shè)計(jì)狀態(tài)機(jī)的步驟: 分析設(shè)計(jì)要求,列出狀態(tài)機(jī)的全部可能狀態(tài),分析設(shè)計(jì)要求,列出狀態(tài)機(jī)的全部可能狀態(tài), 并對(duì)每一個(gè)狀態(tài)進(jìn)行編碼。并對(duì)每一個(gè)狀態(tài)進(jìn)行編碼。 根據(jù)狀態(tài)轉(zhuǎn)移關(guān)系和輸出函數(shù)畫(huà)出狀態(tài)轉(zhuǎn)移圖。根據(jù)狀態(tài)轉(zhuǎn)移關(guān)系和輸出函數(shù)畫(huà)出狀態(tài)轉(zhuǎn)移圖。 由狀態(tài)轉(zhuǎn)移圖,用由狀態(tài)轉(zhuǎn)移圖,用VHDL
23、VHDL語(yǔ)句對(duì)狀態(tài)機(jī)描述語(yǔ)句對(duì)狀態(tài)機(jī)描述。 2 狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 u狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移圖 狀態(tài)轉(zhuǎn)移圖是狀態(tài)機(jī)描述的最自然的方式,下?tīng)顟B(tài)轉(zhuǎn)移圖是狀態(tài)機(jī)描述的最自然的方式,下 圖是使用圖是使用HDL Designer設(shè)計(jì)的一個(gè)簡(jiǎn)單的狀設(shè)計(jì)的一個(gè)簡(jiǎn)單的狀 態(tài)轉(zhuǎn)移圖。態(tài)轉(zhuǎn)移圖。 2 狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 u狀態(tài)轉(zhuǎn)移列表狀態(tài)轉(zhuǎn)移列表 狀態(tài)轉(zhuǎn)移列表使用列表的方式描述狀態(tài)機(jī),是狀態(tài)轉(zhuǎn)移列表使用列表的方式描述狀態(tài)機(jī),是 數(shù)字邏輯電路常用的設(shè)計(jì)方法之一,經(jīng)常被用數(shù)字邏輯電路常用的設(shè)計(jì)方法之一,經(jīng)常被用 于對(duì)狀態(tài)化簡(jiǎn),對(duì)于可編程邏輯設(shè)計(jì),由于可于對(duì)狀態(tài)化簡(jiǎn),對(duì)于可編程邏
24、輯設(shè)計(jì),由于可 用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設(shè)用邏輯資源比較豐富,而且狀態(tài)編碼要考慮設(shè) 計(jì)的穩(wěn)定性、安全性等因素,所以并不經(jīng)常使計(jì)的穩(wěn)定性、安全性等因素,所以并不經(jīng)常使 用狀態(tài)轉(zhuǎn)移列表優(yōu)化狀態(tài)。用狀態(tài)轉(zhuǎn)移列表優(yōu)化狀態(tài)。 狀態(tài) 輸入a=1b=1default S0S1S2 S1S2S0 S2S0 2 狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 uHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) 使用使用HDL語(yǔ)言描述狀態(tài)機(jī)有一定的靈活性,但語(yǔ)言描述狀態(tài)機(jī)有一定的靈活性,但 是決不是天馬行空,而是有章可循的。通過(guò)一是決不是天馬行空,而是有章可循的。通過(guò)一 些規(guī)范的描述方法,可以使些規(guī)范的描述方法,可以使
25、HDL語(yǔ)言描述的狀語(yǔ)言描述的狀 態(tài)機(jī)更安全、穩(wěn)定、高效、易于維護(hù)。下面是態(tài)機(jī)更安全、穩(wěn)定、高效、易于維護(hù)。下面是 使用使用“HDL Designer”軟件,通過(guò)以上的狀軟件,通過(guò)以上的狀 態(tài)轉(zhuǎn)移圖自動(dòng)生成的態(tài)轉(zhuǎn)移圖自動(dòng)生成的VHDL描述的狀態(tài)機(jī)代碼。描述的狀態(tài)機(jī)代碼。 自動(dòng)生成的代碼的形式,是嚴(yán)格按照三進(jìn)程狀自動(dòng)生成的代碼的形式,是嚴(yán)格按照三進(jìn)程狀 態(tài)機(jī)描述風(fēng)格實(shí)現(xiàn)的。態(tài)機(jī)描述風(fēng)格實(shí)現(xiàn)的。 2 狀態(tài)機(jī)的基本描述方式狀態(tài)機(jī)的基本描述方式 u1. 說(shuō)明部分說(shuō)明部分 ARCHITECTURE .IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state
26、, next_state: FSM_ST; u2.主控時(shí)序進(jìn)程主控時(shí)序進(jìn)程 負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在時(shí)鐘驅(qū)動(dòng)下的狀態(tài)轉(zhuǎn)換,隨負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在時(shí)鐘驅(qū)動(dòng)下的狀態(tài)轉(zhuǎn)換,隨 外部時(shí)鐘信號(hào),以同步時(shí)序方式工作。外部時(shí)鐘信號(hào),以同步時(shí)序方式工作。 u3.主控組合進(jìn)程主控組合進(jìn)程 通過(guò)通過(guò)pr_state的改變,進(jìn)入主控組合進(jìn)程,根據(jù)外部的改變,進(jìn)入主控組合進(jìn)程,根據(jù)外部 輸入信號(hào)確定輸出和下一狀態(tài)的走向(輸入信號(hào)確定輸出和下一狀態(tài)的走向(nx_state) u4. 輔助進(jìn)程輔助進(jìn)程 ENTITY smtest IS PORT( a : IN std_logic; b : IN std_logic; clk :
27、 IN std_logic; rst : IN std_logic; x : OUT std_logic; y : OUT std_logic ); - Declarations END smtest ; LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ARCHITECTURE fsm OF smtest IS TYPE STATE_TYPE IS ( s0, s1, s2 ); - Declare current and next state signals SIGNAL current_sta
28、te : STATE_TYPE; SIGNAL next_state : STATE_TYPE; BEGIN - clocked_proc : PROCESS ( clk, rst ) - BEGIN IF (rst = 0) THEN current_state = s0; ELSIF (clkEVENT AND clk = 1) THEN current_state IF (b=1) THEN next_state = s2; ELSIF (a=1) THEN next_state = s1; ELSE next_state IF (a=1) THEN next_state = s2; E
29、LSIF (b=1) THEN next_state = s0; ELSE next_state next_state next_state x y NULL; END CASE; END PROCESS output_proc; END fsm; 狀 態(tài) 類 型 定 義 時(shí) 序 邏 輯 進(jìn) 程 輸 入 組 合 邏 輯 進(jìn) 程 輸 出 組 合 邏 輯 進(jìn) 程 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) uRTL級(jí)級(jí)FSM描述評(píng)判標(biāo)準(zhǔn)描述評(píng)判標(biāo)準(zhǔn) 安全,穩(wěn)定性高安全,穩(wěn)定性高 所謂所謂FSM安全是指安全是指FSM不會(huì)進(jìn)入死循環(huán),特別是不會(huì)進(jìn)入非不會(huì)進(jìn)入死循環(huán),特別是不會(huì)進(jìn)入非 預(yù)知狀態(tài),而且由于某
30、些擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快的恢預(yù)知狀態(tài),而且由于某些擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快的恢 復(fù)到正常的狀態(tài)循環(huán)中來(lái)。這里面有兩層含義,第一:要求該復(fù)到正常的狀態(tài)循環(huán)中來(lái)。這里面有兩層含義,第一:要求該 FSM的綜合實(shí)現(xiàn)結(jié)果無(wú)毛刺等異常擾動(dòng);第二:要求狀態(tài)機(jī)的綜合實(shí)現(xiàn)結(jié)果無(wú)毛刺等異常擾動(dòng);第二:要求狀態(tài)機(jī) 要完備,即使收到異常擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快恢復(fù)到要完備,即使收到異常擾動(dòng)進(jìn)入非設(shè)計(jì)狀態(tài),也能很快恢復(fù)到 正常狀態(tài)。正常狀態(tài)。 速度快,滿足設(shè)計(jì)的頻率要求速度快,滿足設(shè)計(jì)的頻率要求 任何任何RLT設(shè)計(jì)都應(yīng)該滿足設(shè)計(jì)的頻率要求。設(shè)計(jì)都應(yīng)該滿足設(shè)計(jì)的頻率要求。 面積小,滿足設(shè)計(jì)的面積要求面積小,
31、滿足設(shè)計(jì)的面積要求 任何任何RTL設(shè)計(jì)都應(yīng)該滿足設(shè)計(jì)的面積要求。設(shè)計(jì)都應(yīng)該滿足設(shè)計(jì)的面積要求。 FSM設(shè)計(jì)要清晰易懂、易維護(hù)設(shè)計(jì)要清晰易懂、易維護(hù) 不規(guī)范的不規(guī)范的FSM寫(xiě)法上很難讓其他人解讀,甚至過(guò)一段時(shí)間后寫(xiě)法上很難讓其他人解讀,甚至過(guò)一段時(shí)間后 設(shè)計(jì)者也發(fā)現(xiàn)很難維護(hù)。設(shè)計(jì)者也發(fā)現(xiàn)很難維護(hù)。 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u時(shí)序邏輯設(shè)計(jì)時(shí)序邏輯設(shè)計(jì) 由右圖可知,由右圖可知,clock和和reset 作為時(shí)序邏輯部分的輸入,作為時(shí)序邏輯部分的輸入, Nx_state也使輸入之一。也使輸入之一。 Pr_state作為其輸出??梢宰鳛槠漭敵?。可以 描述如下描述如下 PROCESS (
32、reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock = 1) THEN pr_state IF (input=.) THEN nx_state IF (input=.) THEN nx_state IF (input=.) THEN nx_state = state3; ELSIF . END IF; . END CASE; END PROCESS; PROCESS (input, pr_state) BEGIN IF (input=. AND pr_state=. ) T
33、HEN output = ; ELSIF . END IF; END PROCESS; ROCESS (pr_state) BEGIN IF (pr_state=. ) THEN output = ; ELSIF . END IF; END PROCESS; 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u通過(guò)以上分析,我們?cè)谶@里給出使用通過(guò)以上分析,我們?cè)谶@里給出使用VHDL 語(yǔ)言描述狀態(tài)機(jī)的兩個(gè)一般性的語(yǔ)言描述狀態(tài)機(jī)的兩個(gè)一般性的“套路套路” 。 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u模板一模板一 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; -
34、ENTITY IS PORT (input: IN; reset, clock: IN STD_LOGIC; output: OUT); END ; - ARCHITECTURE OFIS TYPE state IS (state0, state1, state2, state3, .); SIGNAL pr_state, nx_state: state; BEGIN -Lower section- PROCESS (reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock =
35、1) THEN pr_state IF (input=.) THEN outpur = ; nx_state IF (input=.) THEN output = ; nx_state IF (input=.) THEN outpur = ; nx_state = state3; ELSI . END IF; . END CASE; END PROCESS; END ; 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u模板二模板二 LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY IS PORT (input: IN ; reset, cloc
36、k: IN STD_LOGIC; output: OUT ); END ; - ARCHITECTURE OFIS TYPE states IS (state0, state1, state2, state3, .); SIGNAL pr_state, nx_state: states; SIGNAL temp: ; BEGIN -Lower section:- PROCESS (reset, clock) BEGIN IF (reset = 1) THEN pr_state = state0; ELSIF (clockEVENT AND clock = 1) THEN output = te
37、mp; pr_state temp = ; IF (condition) THEN nx_state temp = ; IF (condition) THEN nx_state temp = ; IF (condition) THEN nx_state = state3; . END IF; . END CASE; END PROCESS; END ; 僅一個(gè) 寄存器 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u舉例(模板一)舉例(模板一) - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY simple_fsm IS PORT (a,
38、b, d, clk, rst: IN BIT; x: OUT BIT); END simple_fsm; - ARCHITECTURE simple_fsm OF simple_fsm IS TYPE state IS (stateA, stateB); SIGNAL pr_state, nx_state: state; BEGIN -Lower section: - PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = stateA; ELSIF (clkEVENT AND clk = 1) THEN pr_state x = a; IF
39、 (d = 1) THEN nx_state = stateB; ELSE nx_state x = b; IF (d = 1) THEN nx_state = stateA; ELSE nx_state = stateB; END IF; END CASE; END PROCESS; END simple_fsm; 使用synplify綜合后的RTL圖 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u舉例(模板二)舉例(模板二) - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY simple_fsm IS PORT (a, b, d, c
40、lk, rst: IN BIT; x: OUT BIT); END simple_fsm; - ARCHITECTURE simple_fsm OF simple_fsm IS TYPE state IS (stateA, stateB); SIGNAL pr_state, nx_state: state; SIGNAL temp: BIT := 0; BEGIN -Lower section: - PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = stateA; ELSIF (clkEVENT AND clk = 1) THEN x
41、= temp; pr_state temp = a; IF (d = 1) THEN nx_state = stateB; ELSE nx_state temp = b; IF (d = 1) THEN nx_state = stateA; ELSE nx_state = stateB; END IF; END CASE; END PROCESS; END simple_fsm; 使用synplify綜合后的RTL圖 多出一 個(gè)輸出 寄存器 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u兩種方式的仿真結(jié)果對(duì)比兩種方式的仿真結(jié)果對(duì)比 模板一方式實(shí)現(xiàn)的Mealy型狀態(tài)機(jī), 其輸出結(jié)果與時(shí)鐘不同步。
42、模板二方式實(shí)現(xiàn)的同樣的狀態(tài)機(jī), 其輸出結(jié)果與時(shí)鐘是同步的。 3 VHDL語(yǔ)言描述狀態(tài)機(jī)語(yǔ)言描述狀態(tài)機(jī) u結(jié)論結(jié)論 從形式上看:模板一只存儲(chǔ)了從形式上看:模板一只存儲(chǔ)了pr_state;而模;而模 板二同時(shí)存儲(chǔ)了板二同時(shí)存儲(chǔ)了output。 對(duì)于對(duì)于Mealy型狀態(tài)機(jī),為了時(shí)序同步,必須采型狀態(tài)機(jī),為了時(shí)序同步,必須采 用模板二的方式。用模板二的方式。 而而moore型狀態(tài)機(jī),則不需要使用模板二的描型狀態(tài)機(jī),則不需要使用模板二的描 述方式。述方式。 模板一模板二 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 u上例是一個(gè)上例是一個(gè)Mealy型狀態(tài)機(jī)。下面我們來(lái)型狀態(tài)機(jī)。下面我們來(lái) 設(shè)計(jì)一個(gè)設(shè)計(jì)一個(gè)Mo
43、ore型狀態(tài)機(jī)。型狀態(tài)機(jī)。 例:設(shè)計(jì)一個(gè)串行數(shù)據(jù)流檢測(cè)器。要求:輸入例:設(shè)計(jì)一個(gè)串行數(shù)據(jù)流檢測(cè)器。要求:輸入 連續(xù)的二進(jìn)制數(shù),當(dāng)檢測(cè)到連續(xù)連續(xù)的二進(jìn)制數(shù),當(dāng)檢測(cè)到連續(xù)“1”的個(gè)數(shù)的個(gè)數(shù) 大于大于2個(gè)的時(shí)候,輸出個(gè)的時(shí)候,輸出“1”;其他狀態(tài)輸出;其他狀態(tài)輸出 “0”。 分析:確定所需的狀態(tài)數(shù),取決于數(shù)據(jù)流中出分析:確定所需的狀態(tài)數(shù),取決于數(shù)據(jù)流中出 現(xiàn)連續(xù)現(xiàn)連續(xù)“1”的個(gè)數(shù),應(yīng)該為的個(gè)數(shù),應(yīng)該為4個(gè)狀態(tài)。個(gè)狀態(tài)。 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 畫(huà)出狀態(tài)轉(zhuǎn)移圖畫(huà)出狀態(tài)轉(zhuǎn)移圖 zero (q=0) one (q=0) two (q=0) three (q=1) rst d=0 d=1 d
44、=0 d=0 d=0 d=1 d=1 d=1 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 根據(jù)狀態(tài)轉(zhuǎn)移圖,寫(xiě)出根據(jù)狀態(tài)轉(zhuǎn)移圖,寫(xiě)出VHDL代碼代碼 - LIBRARY ieee; USE ieee.std_logic_1164.all; - ENTITY string_detector IS PORT (d, clk, rst: IN BIT; q: OUT BIT); END string_detector; - ARCHITECTURE my_arch OF string_detector IS TYPE state IS (zero, one ,two, three); SIGNAL pr_
45、state, nx_state: state; BEGIN -Lower section;- PROCESS (rst, clk) BEGIN IF (rst = 1) THEN pr_state = zero; ELSIF (clkEVENT AND clk = 1) THEN pr_state q = 0; 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 IF (d = 1) THEN nx_state = one; ELSE nx_state q = 0; IF (d = 1) THEN nx_state = two; ELSE nx_state q = 0; IF (d = 1) THEN n
46、x_state = three; ELSE nx_state q = 1; IF (d = 1) THEN nx_state = three; ELSE nx_state = zero; END IF; END CASE; END PROCESS; END my_arch; 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 設(shè)計(jì)后使用設(shè)計(jì)后使用synplify生成的狀態(tài)轉(zhuǎn)移圖如下生成的狀態(tài)轉(zhuǎn)移圖如下 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機(jī), 但是輸出依然可以保持與時(shí)鐘上升沿同步。 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 功能仿真后的結(jié)果功能仿真后的結(jié)果 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機(jī), 但是輸出依然
47、可以保持與時(shí)鐘上升沿同步。 雖然使用的是模板一的風(fēng)格描述的狀態(tài)機(jī), 但是輸出依然可以保持與時(shí)鐘上升沿同步。 可見(jiàn),對(duì)于可見(jiàn),對(duì)于Moore狀態(tài)機(jī),不需要對(duì)輸出進(jìn)行狀態(tài)機(jī),不需要對(duì)輸出進(jìn)行 同步。同步。 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 u使用使用synplify綜合之后,可以看出默認(rèn)的綜合之后,可以看出默認(rèn)的 編碼方式是編碼方式是one-hot編碼。編碼。 綜合后是one-hot編碼方式 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 u如果將在原來(lái)的程序的基礎(chǔ)上通過(guò)如果將在原來(lái)的程序的基礎(chǔ)上通過(guò) attribute語(yǔ)句指定編碼方式,即將結(jié)構(gòu)體語(yǔ)句指定編碼方式,即將結(jié)構(gòu)體 的聲明部分添加如下代碼
48、,可將編碼方式的聲明部分添加如下代碼,可將編碼方式 改為二進(jìn)制編碼:改為二進(jìn)制編碼: ATTRIBUTE enum_encoding: string; ATTRIBUTE enum_encoding OF state : TYPE IS 00 01 10 11; 綜合后是binary碼編碼方式 4 Moore型狀態(tài)機(jī)舉例型狀態(tài)機(jī)舉例 u以上兩種情況是在默認(rèn)綜合的情況下生成以上兩種情況是在默認(rèn)綜合的情況下生成 的,即沒(méi)有將的,即沒(méi)有將“FSM Explorer”的選項(xiàng)勾的選項(xiàng)勾 選。選。 u如果將如果將“FSM Explorer”選項(xiàng)勾選,那么選項(xiàng)勾選,那么 即使是在程序中指定了編碼方式,其綜合
49、即使是在程序中指定了編碼方式,其綜合 后的狀態(tài)編碼也是后的狀態(tài)編碼也是one-hot編碼。編碼。 u因此,在狀態(tài)機(jī)設(shè)計(jì)的時(shí)候,大家要注意因此,在狀態(tài)機(jī)設(shè)計(jì)的時(shí)候,大家要注意 軟件的使用細(xì)節(jié),應(yīng)當(dāng)有意識(shí)的通過(guò)軟件軟件的使用細(xì)節(jié),應(yīng)當(dāng)有意識(shí)的通過(guò)軟件 進(jìn)行性能優(yōu)化。進(jìn)行性能優(yōu)化。 沒(méi)有勾選“FSM Explorer” 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u單進(jìn)程描述單進(jìn)程描述 它就是將狀態(tài)機(jī)的三個(gè)邏輯單元(狀態(tài)寄存器、它就是將狀態(tài)機(jī)的三個(gè)邏輯單元(狀態(tài)寄存器、 下?tīng)顟B(tài)產(chǎn)生邏輯、輸出邏輯)合并起來(lái),采用下?tīng)顟B(tài)產(chǎn)生邏輯、輸出邏輯)合并起來(lái),采用 一個(gè)進(jìn)程描述。一個(gè)進(jìn)程描述。 適用
50、于簡(jiǎn)單的設(shè)計(jì);適用于簡(jiǎn)單的設(shè)計(jì); 對(duì)于復(fù)雜的狀態(tài)機(jī),可讀性差,易出錯(cuò),不利對(duì)于復(fù)雜的狀態(tài)機(jī),可讀性差,易出錯(cuò),不利 于于EDA軟件優(yōu)化。軟件優(yōu)化。 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 下一狀態(tài) 組合邏輯 寄存輸 出邏輯 當(dāng)前狀態(tài) 時(shí)序邏輯 u單進(jìn)程描述單進(jìn)程描述 u單進(jìn)程描述單進(jìn)程描述 下一狀態(tài) 組合邏輯 寄存輸 出邏輯 當(dāng)前狀態(tài) 時(shí)序邏輯 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u雙進(jìn)程描述雙進(jìn)程描述 將輸出進(jìn)程和狀態(tài)轉(zhuǎn)移進(jìn)程合并起來(lái),采用一將輸出進(jìn)程和狀態(tài)轉(zhuǎn)移進(jìn)程合并起來(lái),采用一 個(gè)組合邏輯來(lái)描述。個(gè)組合邏輯來(lái)描述。 通常情況下,綜合工具可以較好地識(shí)
51、別這兩部通常情況下,綜合工具可以較好地識(shí)別這兩部 邏輯并進(jìn)行優(yōu)化,但建議如果不是輸出邏輯非邏輯并進(jìn)行優(yōu)化,但建議如果不是輸出邏輯非 常簡(jiǎn)單,還是采用兩個(gè)不同的進(jìn)程來(lái)描述,這常簡(jiǎn)單,還是采用兩個(gè)不同的進(jìn)程來(lái)描述,這 樣綜合工具可以明確下?tīng)顟B(tài)轉(zhuǎn)移邏輯,優(yōu)化效樣綜合工具可以明確下?tīng)顟B(tài)轉(zhuǎn)移邏輯,優(yōu)化效 果較好。果較好。 另一種雙進(jìn)程描述另一種雙進(jìn)程描述將下?tīng)顟B(tài)轉(zhuǎn)移邏輯和當(dāng)將下?tīng)顟B(tài)轉(zhuǎn)移邏輯和當(dāng) 前狀態(tài)寄存器描述結(jié)合,省略中間變量。前狀態(tài)寄存器描述結(jié)合,省略中間變量。 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u雙進(jìn)程描述雙進(jìn)程描述 第二個(gè)進(jìn)程(純組合邏輯), 描述狀態(tài)轉(zhuǎn)移條件的判斷。 第
52、一個(gè)進(jìn)程(同步時(shí)序),格式 化地描述次態(tài)到現(xiàn)態(tài)的轉(zhuǎn)移。 一般情況是組合邏輯輸出,如果時(shí) 序允許,盡量插入寄存器輸出。 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u三進(jìn)程描述三進(jìn)程描述 一般可以采用三個(gè)進(jìn)程來(lái)描述狀態(tài)機(jī):一般可以采用三個(gè)進(jìn)程來(lái)描述狀態(tài)機(jī): 描述狀態(tài)寄存器的時(shí)序進(jìn)程描述狀態(tài)寄存器的時(shí)序進(jìn)程 描述下?tīng)顟B(tài)產(chǎn)生邏輯的組合進(jìn)程描述下?tīng)顟B(tài)產(chǎn)生邏輯的組合進(jìn)程 定義輸出的組合邏輯進(jìn)程定義輸出的組合邏輯進(jìn)程 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u三進(jìn)程描述三進(jìn)程描述 第一個(gè)進(jìn)程(同步時(shí)序) 格式化描述次態(tài)寄存器遷 移到現(xiàn)態(tài)寄存器 第二個(gè)進(jìn)程(純組合邏輯), 描
53、述狀態(tài)轉(zhuǎn)移條件判斷 第三個(gè)進(jìn)程(同步時(shí)序),格式 化描述次態(tài)的寄存器輸出。 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u舉例:舉例: 分別使用單進(jìn)程、雙進(jìn)程、三進(jìn)程描述方式如分別使用單進(jìn)程、雙進(jìn)程、三進(jìn)程描述方式如 下?tīng)顟B(tài)轉(zhuǎn)移圖所示的狀態(tài)機(jī):下?tīng)顟B(tài)轉(zhuǎn)移圖所示的狀態(tài)機(jī): 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u單進(jìn)程描述的單進(jìn)程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine1 IS PORT ( clk, reset : IN STD_LOGIC; state_in
54、puts : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine2; ARCHITECTURE behv OF s_machine1 IS TYPE FSM_ST IS (s0, s1, s2, s3); VARIABLE state: FSM_ST; BEGIN PROCESS (reset, clk, state, state_inputs) BEGIN IF reset = 1 THEN state comb_outputs = 5; IF state_inputs
55、 = 00 THEN state = s0; ELSE state comb_outputs = 8; IF state_inputs = 00 THEN state = s1; ELSE state comb_outputs = 12; IF state_inputs = 11 THEN state = s3; ELSE state comb_outputs = 14; IF state_inputs = 11 THEN state = s3; ELSE state = s0; END IF; END CASE; END IF; END PROCESS; END behv; -(完)(完)
56、5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u單進(jìn)程描述單進(jìn)程描述RTL圖圖 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u雙進(jìn)程描述的雙進(jìn)程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT ( clk, reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine; AR
57、CHITECTURE behv OF s_machine IS TYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state : FSM_ST; BEGIN REG: PROCESS (reset, clk) BEGIN IF reset = 1 THEN current_state = s0; ELSIF clk = 1 AND clkEVENT THEN current_state comb_outputs = 5; IF state_inputs = 00 THEN next_state = s0; ELSE 5 三種
58、進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 next_state comb_outputs = 8; IF state_inputs = 00 THEN next_state = s1; ELSE next_state comb_outputs = 12; IF state_inputs = 11 THEN next_state = s3; ELSE next_state comb_outputs = 14; IF state_inputs = 11 THEN next_state = s3; ELSE next_state = s0; END IF; END CASE; END PRO
59、CESS; END behv; 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u雙進(jìn)程描述產(chǎn)生的雙進(jìn)程描述產(chǎn)生的RTL圖圖 5 三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比三種進(jìn)程描述狀態(tài)機(jī)方式對(duì)比 u三進(jìn)程描述的三進(jìn)程描述的VHDL代碼代碼 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine2 IS PORT ( clk, reset : IN STD_LOGIC; state_inputs : IN STD_LOGIC_VECTOR (0 TO 1); comb_outputs : OUT INTEGER RANGE 0 TO
60、15 ); END s_machine2; ARCHITECTURE behv OF s_machine2 IS TYPE FSM_ST IS (s0, s1, s2, s3); SIGNAL current_state, next_state: FSM_ST; BEGIN REG: PROCESS (reset, clk) BEGIN IF reset = 1 THEN current_state = s0; ELSIF clk = 1 AND clkEVENT THEN current_state IF state_inputs = 00 THEN next_state = s0; ELS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 精準(zhǔn)發(fā)放服務(wù)消費(fèi)券的具體措施
- 2025年度新能源汽車電池回收利用合同-@-28
- 2025年度新型城鎮(zhèn)化建設(shè)項(xiàng)目招投標(biāo)管理與合同執(zhí)行標(biāo)準(zhǔn)
- 中國(guó)企業(yè)理財(cái)行業(yè)市場(chǎng)深度分析及發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 2025年中國(guó)木珠壁掛畫(huà)行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年度公司員工宿舍租賃合同示范文本
- 誠(chéng)實(shí)守信申請(qǐng)書(shū)
- 2025年度合同擔(dān)保在跨境貿(mào)易中的風(fēng)險(xiǎn)控制
- 2025年度盡職調(diào)查報(bào)告應(yīng)用與風(fēng)險(xiǎn)防范合同
- 2025年度數(shù)據(jù)中心建設(shè)與運(yùn)營(yíng)管理合同
- 春季安全教育培訓(xùn)課件
- 《大學(xué)英語(yǔ)1》期末考試試卷及答案(???
- 《石油鉆井基本知識(shí)》課件
- 2024新滬教版英語(yǔ)(五四學(xué)制)七年級(jí)上單詞默寫(xiě)單
- 電力兩票培訓(xùn)
- TCCEAS001-2022建設(shè)項(xiàng)目工程總承包計(jì)價(jià)規(guī)范
- 2024.8.1十七個(gè)崗位安全操作規(guī)程手冊(cè)(值得借鑒)
- 小王子-英文原版
- 二次供水衛(wèi)生管理制度及辦法(4篇)
- 電影《白日夢(mèng)想家》課件
- 婦產(chǎn)科產(chǎn)后虛脫患者的應(yīng)急預(yù)案及程序
評(píng)論
0/150
提交評(píng)論