EDA技術(shù)8_狀態(tài)機(jī)_第1頁
EDA技術(shù)8_狀態(tài)機(jī)_第2頁
EDA技術(shù)8_狀態(tài)機(jī)_第3頁
EDA技術(shù)8_狀態(tài)機(jī)_第4頁
EDA技術(shù)8_狀態(tài)機(jī)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(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è)計(jì)方法同步時(shí)序電路的設(shè)計(jì)方法深圳大學(xué)信息工程學(xué)院本章提要 有限狀態(tài)機(jī)FSM簡(jiǎn)介 FSM的分類:Moore機(jī)和Mealy機(jī) FSM的VHDL實(shí)現(xiàn)同步系統(tǒng)設(shè)計(jì)原則 方法:所有輸入到觸發(fā)器,寄存器和計(jì)數(shù)器等部件的時(shí)鐘,必須是由系統(tǒng)時(shí)鐘直接驅(qū)動(dòng)的。 結(jié)果:所有的狀態(tài)變化均在時(shí)鐘的有效沿(rising or falling edges)發(fā)生。 優(yōu)勢(shì):所有的開關(guān)暫態(tài),開關(guān)噪聲和其他干擾均發(fā)生在時(shí)鐘脈沖間,對(duì)系統(tǒng)性能沒有影響。*系統(tǒng)的最大時(shí)鐘頻率由最長(zhǎng)路徑的最大延遲決定系統(tǒng)的最大時(shí)鐘頻率由最長(zhǎng)路徑的最大延遲決定深圳大學(xué)信息工程學(xué)院同步時(shí)序電路的構(gòu)成示意圖深圳大學(xué)信息工程學(xué)院有限狀態(tài)機(jī)的狀態(tài)

2、轉(zhuǎn)移圖圖形表示:狀態(tài)、轉(zhuǎn)移、條件和邏輯開關(guān)6 FSMFSM是為時(shí)序電路設(shè)計(jì)而創(chuàng)建的特殊模型技術(shù),是為時(shí)序電路設(shè)計(jì)而創(chuàng)建的特殊模型技術(shù),在針對(duì)在針對(duì)任務(wù)順序非常明確任務(wù)順序非常明確的電路(如交通燈控制器)是非常的電路(如交通燈控制器)是非常實(shí)用實(shí)用。 理論上,任何時(shí)序電路都可以建立理論上,任何時(shí)序電路都可以建立FSMFSM模型,但并不總模型,但并不總是一種高效的方法。是一種高效的方法。如果一味地追求使用如果一味地追求使用FSMFSM來設(shè)計(jì)時(shí)來設(shè)計(jì)時(shí)序電路,可能會(huì)導(dǎo)致代碼冗長(zhǎng)和容易出錯(cuò)序電路,可能會(huì)導(dǎo)致代碼冗長(zhǎng)和容易出錯(cuò)。例如,任。例如,任務(wù)簡(jiǎn)單的寄存器就不必使用務(wù)簡(jiǎn)單的寄存器就不必使用FSMFS

3、M方式實(shí)現(xiàn)。又例如,方式實(shí)現(xiàn)。又例如,雖雖然任務(wù)與順序很明確,但任務(wù)數(shù)目太多或者性能要求然任務(wù)與順序很明確,但任務(wù)數(shù)目太多或者性能要求較高時(shí),較高時(shí),也不宜用也不宜用FSMFSM方式實(shí)現(xiàn)。方式實(shí)現(xiàn)。 狀態(tài)機(jī)的設(shè)計(jì)包含兩個(gè)主要過程,狀態(tài)機(jī)的設(shè)計(jì)包含兩個(gè)主要過程,一是狀態(tài)機(jī)的建模,一是狀態(tài)機(jī)的建模,二是狀態(tài)機(jī)的編碼。二是狀態(tài)機(jī)的編碼。有限狀態(tài)機(jī)有限狀態(tài)機(jī)(Finite State Machine,FSM)(Finite State Machine,FSM)7組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_state狀態(tài)機(jī)的組成狀態(tài)機(jī)的組成: :如圖。如圖。狀態(tài)機(jī)的種

4、類狀態(tài)機(jī)的種類: MealyMealy型:當(dāng)前狀態(tài)、當(dāng)前輸入相關(guān)型:當(dāng)前狀態(tài)、當(dāng)前輸入相關(guān) Moore Moore型:僅當(dāng)前狀態(tài)相關(guān)型:僅當(dāng)前狀態(tài)相關(guān)VHDLVHDL代碼結(jié)構(gòu):代碼結(jié)構(gòu): 時(shí)序邏輯部分:時(shí)序邏輯部分:processprocess內(nèi)部?jī)?nèi)部 組合邏輯部分:組合邏輯部分: 在使用在使用FSMFSM方式設(shè)計(jì)方式設(shè)計(jì)VHDLVHDL代碼時(shí),通常代碼時(shí),通常會(huì)會(huì)在結(jié)構(gòu)體的開始部分插入一個(gè)用戶自在結(jié)構(gòu)體的開始部分插入一個(gè)用戶自定義的枚舉數(shù)據(jù)類型定義的枚舉數(shù)據(jù)類型,其中,其中包含所有可包含所有可能出現(xiàn)的電路狀態(tài)能出現(xiàn)的電路狀態(tài)。8設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#1#1一種結(jié)構(gòu)清晰、易于實(shí)現(xiàn)的一種結(jié)構(gòu)清晰、易

5、于實(shí)現(xiàn)的FSMFSM設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格:FSMFSM中的時(shí)序邏輯部分和組合邏輯部分中的時(shí)序邏輯部分和組合邏輯部分分別獨(dú)立設(shè)分別獨(dú)立設(shè)計(jì)計(jì);定義一個(gè)枚舉數(shù)據(jù)類型,內(nèi)部包含所有定義一個(gè)枚舉數(shù)據(jù)類型,內(nèi)部包含所有FSMFSM需要的需要的狀態(tài);狀態(tài);9組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_stateFSMFSM中中時(shí)序邏輯部分時(shí)序邏輯部分的設(shè)計(jì)特點(diǎn):的設(shè)計(jì)特點(diǎn):確定的輸入確定的輸入/ /輸出端口輸出端口典型的模板可供使用典型的模板可供使用-lower section-process (clock, reset)begin if (reset = 1) then

6、pr_state = state0; elsif (clockevent and clock=1) then pr_state /多個(gè)條件轉(zhuǎn)移分支 if (input=.) then output = ; nx_state if (input=.) then output = ; nx_state=state2; else .; end if; . end case;end process;11設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#1#1的狀態(tài)機(jī)模板的狀態(tài)機(jī)模板 library ieee;use ieee.std_logic_1164.all;entity is port (input: in ; reset,

7、clock: in std_logic; output: out );end ;architecture of is type state is (state0, state1, state2, state3, .); signal pr_state, nx_state: state;begin-lower section-process (clock, reset)begin if (reset = 1) then pr_state = state0; elsif (clockevent and clock=1) then pr_state if (input=.) then output

8、= ; nx_state if (input=.) then output = ; nx_state=state2; else .; end if; . end case;end process;end 兩個(gè)進(jìn)程兩個(gè)進(jìn)程并發(fā)執(zhí)行并發(fā)執(zhí)行12例例8.1 8.1 模模1010計(jì)數(shù)器計(jì)數(shù)器功能描述功能描述:狀態(tài)轉(zhuǎn)移圖:狀態(tài)轉(zhuǎn)移圖特點(diǎn)分析特點(diǎn)分析:摩爾型狀態(tài)機(jī):摩爾型狀態(tài)機(jī)設(shè)計(jì)分析設(shè)計(jì)分析:狀態(tài)較多,枚舉很不方便,:狀態(tài)較多,枚舉很不方便,僅作為例子參考,不推薦實(shí)際應(yīng)用。僅作為例子參考,不推薦實(shí)際應(yīng)用。zero(0000)one(0001)two(0010)three(0011)four(0100)f

9、ive(0101)nine(1001)eight(1000)seven(0111)six(0110)rst13library ieee;use ieee.std_logic_1164.all;entity counter is port ( -無輸入數(shù)據(jù)- rst, clk: in std_logic; count: out std_logic_vector(3 downto 0);end counter;architecture state_machine of counter is type state is (zero, one, two, three, four, five, six,

10、 seven, eight, nine); signal pr_state, nx_state: state;begin-lower section-process (clk, rst)begin if (rst = 1) then pr_state = zero; elsif (clkevent and clock=1) then pr_state count = “0000”; nx_state count = “0001”; nx_state count=“0010”; nx_state count=“1001”; nx_state=zero; end case;end process;

11、end state_machine;兩個(gè)進(jìn)程兩個(gè)進(jìn)程并發(fā)執(zhí)行并發(fā)執(zhí)行代碼實(shí)現(xiàn):代碼實(shí)現(xiàn):所需寄存器個(gè)數(shù)所需寄存器個(gè)數(shù): 上限上限loglog2 210=410=414例例8.2 8.2 簡(jiǎn)單的簡(jiǎn)單的FSM#1FSM#1功能描述功能描述:FSMxabdclkrststateA(x=a)stateB(x=b)d=0d=0d=1d=1rst15entity simple_fsm is port ( a, b, c, d, rst, clk: in BIT; x: out BIT);end simple_fsm;architecture simple_fsm of simple_fsm is type

12、 state is (stateA, stateB); signal pr_state, nx_state: state;begin-lower section-process (clk, rst)begin if (rst = 1) then pr_state = stateA; elsif (clkevent and clock=1) then pr_state x =a; if (d=1) then nx_state=stateB; else nx_state x=b; if (d=1) then nx_state=stateA; else nx_state=stateB; end if

13、; end case;end process;end simple_fsm;代碼實(shí)現(xiàn):代碼實(shí)現(xiàn):所需寄存器個(gè)數(shù)所需寄存器個(gè)數(shù): 1 1個(gè),用于存儲(chǔ)兩個(gè)狀態(tài)編碼。個(gè),用于存儲(chǔ)兩個(gè)狀態(tài)編碼。168.3 8.3 設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#2#2 在很多應(yīng)用中(如波形整齊、流水線技術(shù)等),在很多應(yīng)用中(如波形整齊、流水線技術(shù)等),需要同步的寄存器輸出,即需先使用寄存器存儲(chǔ)起需要同步的寄存器輸出,即需先使用寄存器存儲(chǔ)起來,然后在時(shí)鐘邊沿時(shí)才進(jìn)行更新,如圖來,然后在時(shí)鐘邊沿時(shí)才進(jìn)行更新,如圖b b:17設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#2#2的狀態(tài)機(jī)模板的狀態(tài)機(jī)模板使用輔助信號(hào)如使用輔助信號(hào)如temptemp library i

14、eee;use ieee.std_logic_1164.all;entity is port (input: in ; reset, clock: in std_logic; output: out );end ;architecture of is type state is (state0, state1, state2, state3, .); signal pr_state, nx_state: state; signal temp: ;begin-lower section-process (clock, reset)begin if (reset = 1) then pr_stat

15、e = state0; elsif (clockevent and clock=1) then output=temp; pr_state temp = ; if (condition) then nx_state temp = ; if (condition) then nx_state=state2; .; end if; . end case;end process;end temp信號(hào)將輸出結(jié)信號(hào)將輸出結(jié)果存儲(chǔ)起來,只有果存儲(chǔ)起來,只有當(dāng)所需時(shí)鐘邊沿到當(dāng)所需時(shí)鐘邊沿到來時(shí)才被賦值給輸來時(shí)才被賦值給輸出端口出端口18entity simple_fsm is port ( a, b, c,

16、 d, rst, clk: 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;begin-lower section-process (clk, rst)begin if (rst = 1) then pr_state = stateA; elsif (clkevent and clock=1) then pr_state = n

17、x_state; x 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;所需寄存器個(gè)數(shù)所需寄存器個(gè)數(shù): 2 2個(gè),一個(gè)用于存儲(chǔ)兩個(gè)個(gè),一個(gè)用于存儲(chǔ)兩個(gè)狀態(tài)編碼,另一個(gè)用于存儲(chǔ)同步輸出結(jié)果。狀態(tài)編碼,另一個(gè)用于存儲(chǔ)同步輸出結(jié)果。例例8.38.3:用:用FSM#2FSM#2實(shí)現(xiàn)例實(shí)現(xiàn)例8.28.2: -同步輸出同步輸出198.4 8.4

18、 狀態(tài)機(jī)的編碼風(fēng)格狀態(tài)機(jī)的編碼風(fēng)格二進(jìn)制碼和獨(dú)熱碼二進(jìn)制碼和獨(dú)熱碼(1 1)狀態(tài)機(jī)編碼的概念)狀態(tài)機(jī)編碼的概念:在設(shè)計(jì)狀態(tài)機(jī)時(shí),需要對(duì)狀態(tài)機(jī)在設(shè)計(jì)狀態(tài)機(jī)時(shí),需要對(duì)狀態(tài)機(jī)的狀態(tài)進(jìn)行編碼,從而決定需要使用的寄存器數(shù)目。的狀態(tài)進(jìn)行編碼,從而決定需要使用的寄存器數(shù)目。(2 2)狀態(tài)機(jī)編碼的方式:)狀態(tài)機(jī)編碼的方式:二進(jìn)制編碼、一位熱獨(dú)碼、兩位二進(jìn)制編碼、一位熱獨(dú)碼、兩位獨(dú)熱碼或其它編碼方式,獨(dú)熱碼或其它編碼方式,默認(rèn)的方式是二進(jìn)制編碼默認(rèn)的方式是二進(jìn)制編碼。 例:例:8狀態(tài)狀態(tài)FSM的狀態(tài)編碼的狀態(tài)編碼20(3 3)不同的編碼方式所需要的觸發(fā)器數(shù)目和組合邏輯資源是)不同的編碼方式所需要的觸發(fā)器數(shù)目和組

19、合邏輯資源是不同的:不同的: 二進(jìn)制編碼:二進(jìn)制編碼:需要寄存器數(shù)目最少,但所需組合邏輯最需要寄存器數(shù)目最少,但所需組合邏輯最多,速度最慢;多,速度最慢;這些特性對(duì)于這些特性對(duì)于PALPAL和門陣列結(jié)構(gòu)和門陣列結(jié)構(gòu)是可以接是可以接受的。但是因?yàn)槭艿?。但是因?yàn)镕PGAFPGA具有許多觸發(fā)器和較少的組合邏輯資具有許多觸發(fā)器和較少的組合邏輯資源,高編碼的狀態(tài)變量會(huì)導(dǎo)致低的源,高編碼的狀態(tài)變量會(huì)導(dǎo)致低的FPGAFPGA速度和密度的實(shí)現(xiàn)速度和密度的實(shí)現(xiàn)效率。效率。一位獨(dú)熱編碼(一位獨(dú)熱編碼(One-Hot EncodingOne-Hot Encoding):):就是使每個(gè)狀態(tài)占就是使每個(gè)狀態(tài)占用狀態(tài)寄存

20、器的一位。這種編碼方法看起來好像很浪費(fèi)資用狀態(tài)寄存器的一位。這種編碼方法看起來好像很浪費(fèi)資源,例如,對(duì)于一位熱獨(dú)碼編碼來說,一個(gè)具有源,例如,對(duì)于一位熱獨(dú)碼編碼來說,一個(gè)具有1616個(gè)狀態(tài)個(gè)狀態(tài)的在限狀態(tài)機(jī)需要的在限狀態(tài)機(jī)需要1616個(gè)觸發(fā)器,但如果使用二進(jìn)制編碼,個(gè)觸發(fā)器,但如果使用二進(jìn)制編碼,則只需要?jiǎng)t只需要4 4個(gè)觸發(fā)器。但是,一位有效編碼方法可以簡(jiǎn)化個(gè)觸發(fā)器。但是,一位有效編碼方法可以簡(jiǎn)化組合邏輯和邏輯之間的內(nèi)部連接。一位熱獨(dú)碼編碼可以產(chǎn)組合邏輯和邏輯之間的內(nèi)部連接。一位熱獨(dú)碼編碼可以產(chǎn)生較小的并且更快的有效狀態(tài)機(jī)。這對(duì)于順序邏輯資源比生較小的并且更快的有效狀態(tài)機(jī)。這對(duì)于順序邏輯資源比

21、組合邏輯資源更豐富的可編程組合邏輯資源更豐富的可編程ASICASIC來說,是比較有效的編來說,是比較有效的編碼方式。特別是碼方式。特別是對(duì)于對(duì)于FPGAFPGA結(jié)構(gòu)來說,一位熱獨(dú)碼編碼是最結(jié)構(gòu)來說,一位熱獨(dú)碼編碼是最好的狀態(tài)編碼方式好的狀態(tài)編碼方式。另外,。另外,One-hotOne-hot編碼所需的編碼所需的 組合邏輯組合邏輯最少最少, ,觸發(fā)器最多觸發(fā)器最多, ,工作時(shí)鐘頻率可以做到最高工作時(shí)鐘頻率可以做到最高。21雙熱碼:介于二進(jìn)制編碼和獨(dú)熱編碼之間,雙熱碼:介于二進(jìn)制編碼和獨(dú)熱編碼之間,每一次狀態(tài)變每一次狀態(tài)變化都會(huì)帶來兩個(gè)位的跳變,使用化都會(huì)帶來兩個(gè)位的跳變,使用n n個(gè)寄存器可以實(shí)

22、現(xiàn)對(duì)個(gè)寄存器可以實(shí)現(xiàn)對(duì)n(n-1)/2n(n-1)/2個(gè)狀態(tài)進(jìn)行編碼個(gè)狀態(tài)進(jìn)行編碼。 GrayGray碼:碼:就面積與速度的折中考慮來說是最好的選擇就面積與速度的折中考慮來說是最好的選擇, ,當(dāng)當(dāng)然然GrayGray碼還有其他很多好的特性碼還有其他很多好的特性, ,暫時(shí)不屬于這次討論的暫時(shí)不屬于這次討論的范疇。范疇。其他編碼方式其他編碼方式(4 4)狀態(tài)機(jī)編碼方式的選擇狀態(tài)機(jī)編碼方式的選擇:一般的綜合工具對(duì)狀態(tài)機(jī)進(jìn)行:一般的綜合工具對(duì)狀態(tài)機(jī)進(jìn)行綜合時(shí)都可以讓用戶對(duì)這三種編碼進(jìn)行選擇。對(duì)于大的基于綜合時(shí)都可以讓用戶對(duì)這三種編碼進(jìn)行選擇。對(duì)于大的基于FPGAFPGA的狀態(tài)機(jī)的實(shí)現(xiàn)來說,一位有效編碼

23、是最佳的方法。對(duì)的狀態(tài)機(jī)的實(shí)現(xiàn)來說,一位有效編碼是最佳的方法。對(duì)于較少狀態(tài)的有限狀態(tài)機(jī)(小于于較少狀態(tài)的有限狀態(tài)機(jī)(小于8 8個(gè)狀態(tài)),二進(jìn)制編碼可能個(gè)狀態(tài)),二進(jìn)制編碼可能更有效。更有效。為了提高狀態(tài)機(jī)的設(shè)計(jì)性能,可以將大的狀態(tài)機(jī)為了提高狀態(tài)機(jī)的設(shè)計(jì)性能,可以將大的狀態(tài)機(jī)(大于(大于3232個(gè)狀態(tài))分為幾個(gè)小的狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)都使用個(gè)狀態(tài))分為幾個(gè)小的狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)都使用合適的編碼方式。合適的編碼方式。主干路(major)次要馬路(minor)傳感器(sensor)常態(tài):主干路綠燈,次要馬路紅燈變態(tài):有小車在次要馬路行使,主干路紅燈,次要馬路綠燈。燈變化時(shí),計(jì)數(shù)器開始工作。記時(shí)完成,燈

24、恢復(fù)常態(tài)。 輸入l次要馬路的車,carl計(jì)數(shù)器完成記時(shí),timed 輸出l主干路燈l次要馬路燈l啟動(dòng)計(jì)數(shù)器(start_timer)例例8.8.4 4:用:用FSMFSM實(shí)現(xiàn)交通燈控制實(shí)現(xiàn)交通燈控制交通燈控制器major=greenminor=redcarstart_timermajor=redminor=greentimedGR00112 態(tài)(G,R)狀態(tài)框,包含輸出:主干路燈G,次要路燈R判斷框,條件:car,timed條件輸出框,與輸出信號(hào)在同一個(gè)周期里被置位(set)交通燈控制器交通燈控制器交通燈控制器交通燈控制器LIBRARY IEEE; USE IEEE.STD_LOGIC_116

25、4.ALL;USE IEEE.NUMERIC_STD.ALL; ENTITY traffic_light_ctrl IS PORT( clk : IN STD_LOGIC; car : IN STD_LOGIC; timed : IN STD_LOGIC; major_green : OUT STD_LOGIC; manir_gree : OUT STD_LOGIC; start_timer : OUT STD_LOGIC );END traffic_light_ctrl;交通燈控制器ARCHITECTURE rtl OF traffic_light_ctrl IS TYPE state_ty

26、pe IS (G,R); SIGNAL p_state, n_state : state_type; BEGIN交通燈控制器 seq_proc : PROCESS (clk) IS BEGIN IF RISING_EDGE (clk) THEN p_state = n_state; END IF; END PROCESS seq_proc;交通燈控制器 comb_proc : PROCESS (car, timed, p_state) BEGIN start_timer major_green = 1; minor_green = 0; IF (car = 1) THEN start_time

27、r = 1; n_state = R; ELSE n_state major_green = 0; minor_green = 1; IF (timed = 1) THEN n_state = G; ELSE n_state = R; END IF; END CASE; END PROCESS comb_proc; END rtl;同步有限狀態(tài)機(jī)種類 Moore 和Mealy 機(jī)lMoore機(jī)僅輸出當(dāng)前狀態(tài)的函數(shù)lMealy機(jī)輸出的是當(dāng)前狀態(tài)和輸入的函數(shù)深圳大學(xué)信息工程學(xué)院Mealy 狀態(tài)機(jī)下一個(gè)狀態(tài) = F(當(dāng)前狀態(tài),輸入信號(hào)); 輸出信號(hào) = G(當(dāng)前狀態(tài),輸入信號(hào));深圳大學(xué)信息工程學(xué)院

28、Moor e狀態(tài)機(jī)下一個(gè)狀態(tài) = F(當(dāng)前狀態(tài),輸入信號(hào))輸出信號(hào) = G(當(dāng)前狀態(tài));算法狀態(tài)機(jī)ASM 算法狀態(tài)機(jī)(Algorithmic State Machine)l和軟件的流程圖相似,但包含隱含的時(shí)序信息l比狀態(tài)圖更容易讓人理解電路的執(zhí)行過程l常用來描述復(fù)雜的時(shí)序系統(tǒng)l用狀態(tài)的變化來描述系統(tǒng)算法狀態(tài)機(jī)ASM狀態(tài)輸出值YAJ01Z=1(a)狀態(tài)框(b)判斷框(c)條件輸出框1011判斷框深圳大學(xué)信息工程學(xué)院J01判斷框表示狀態(tài)變量對(duì)控制器工作的影響判斷框表示狀態(tài)變量對(duì)控制器工作的影響注意:判斷框不占用時(shí)間注意:判斷框不占用時(shí)間狀態(tài)框深圳大學(xué)信息工程學(xué)院如果一個(gè)信號(hào)沒有被賦值,則它在此狀態(tài)

29、被置位,而在其如果一個(gè)信號(hào)沒有被賦值,則它在此狀態(tài)被置位,而在其它狀態(tài)被復(fù)位。它狀態(tài)被復(fù)位。一個(gè)狀態(tài)框占用一個(gè)時(shí)鐘脈沖周期一個(gè)狀態(tài)框占用一個(gè)時(shí)鐘脈沖周期條件輸出框深圳大學(xué)信息工程學(xué)院條件框的入口必定與判斷框的輸出相連。條件框的入口必定與判斷框的輸出相連。注意:條件輸出框的輸出信號(hào)與它所屬的狀態(tài)框的輸注意:條件輸出框的輸出信號(hào)與它所屬的狀態(tài)框的輸出信號(hào)(包括判斷框)在同一時(shí)鐘周期內(nèi)被置位。出信號(hào)(包括判斷框)在同一時(shí)鐘周期內(nèi)被置位。深圳大學(xué)信息工程學(xué)院ASM圖的綜合 狀態(tài)賦值 狀態(tài)越多,可能的賦值數(shù)目隨之增加狀態(tài)越多,可能的賦值數(shù)目隨之增加 如果狀態(tài)表中有如果狀態(tài)表中有m個(gè)狀態(tài)個(gè)狀態(tài) ,則需要,

30、則需要n個(gè)觸個(gè)觸發(fā)器發(fā)器 One-hot編碼,需要編碼,需要m個(gè)觸發(fā)器個(gè)觸發(fā)器 l三個(gè)狀態(tài):三個(gè)狀態(tài):001,010,100l每次只有一個(gè)觸發(fā)器被置位每次只有一個(gè)觸發(fā)器被置位l次態(tài)邏輯可能比較簡(jiǎn)單次態(tài)邏輯可能比較簡(jiǎn)單l對(duì)于可編程的邏輯器件,對(duì)于可編程的邏輯器件,one-hot編碼系統(tǒng)使用的的資源可能編碼系統(tǒng)使用的的資源可能會(huì)比用最少數(shù)量觸發(fā)器的系統(tǒng)使用少會(huì)比用最少數(shù)量觸發(fā)器的系統(tǒng)使用少l檢查系統(tǒng)故障相對(duì)容易些檢查系統(tǒng)故障相對(duì)容易些nnm221ASM EXAMPLE1 序列檢測(cè)器 檢測(cè)輸入X中是否含有101串 如果輸入X中含有101時(shí),那么當(dāng)輸入串101中最后一個(gè)1出現(xiàn)時(shí),與此同步就有輸出Z=1

31、,且Z=1時(shí)電路不復(fù)位。X = 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0Z = 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0Mealy機(jī) VS Moore機(jī)Moore機(jī)需要更多的狀態(tài),不過更容易設(shè)計(jì)和調(diào)試機(jī)需要更多的狀態(tài),不過更容易設(shè)計(jì)和調(diào)試Moore機(jī)的輸出不是在狀態(tài)轉(zhuǎn)移過程中產(chǎn)生的,而是完全由狀態(tài)本身決定機(jī)的輸出不是在狀態(tài)轉(zhuǎn)移過程中產(chǎn)生的,而是完全由狀態(tài)本身決定Mealy機(jī)機(jī)Moore機(jī)s0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000111Z=1X=1s3

32、T10ASM圖的綜合 序列檢測(cè)器(Mealy)當(dāng)前狀態(tài)下一狀態(tài)當(dāng)前輸出ZX=0 X=1X=0X=1S0S0S100S1S2S100S2S0S101ABABZX=0 X=1X=0X=1S0000100S1100100S2000101布爾量狀態(tài)表One-hot vs. Binary state assignments0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110ASM圖的綜合圖的綜合 序列檢測(cè)器(序列檢測(cè)器(Mealy)XAB010000011011XX1000XAB010001010111XX1001XAB010000010011XX1001B=XZ=X and A

33、ABZ輸出由當(dāng)前狀態(tài)及輸入決定A= (not X) and BASM圖的綜合 序列檢測(cè)器(Mealy)次態(tài)邏輯次態(tài)邏輯寄存器寄存器輸出邏輯輸出邏輯B=XZ=X and AA=(not X) and BASM圖的綜合 序列檢測(cè)器(Moore)當(dāng)前狀態(tài)下一狀態(tài)當(dāng)前輸出ZX=0 X=1X=0X=1S0S0S100S1S2S100S2S0S300S3S2S111ABABZX=0 X=1S000010S110010S200110S310011布爾量狀態(tài)表s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000110Z=1X=1s3T11ASM圖的綜合圖的綜合 序列檢測(cè)器(序列檢測(cè)器(Moore

34、)XAB010000011010011110XAB010001010110011101XAB0000010100111B=XZ=A and BABZ輸出由當(dāng)前狀態(tài)決定A=(A and not B and X ) or (B and not X)深圳大學(xué)信息工程學(xué)院ASM圖的綜合 序列檢測(cè)器(Moore)次態(tài)邏輯次態(tài)邏輯寄存器寄存器輸出邏輯輸出邏輯A=A B X +B XB=XZ=ABFSM的VHDL實(shí)現(xiàn) FSM中時(shí)序邏輯部分設(shè)計(jì)中時(shí)序邏輯部分設(shè)計(jì) FSM中組合邏輯部分設(shè)計(jì)中組合邏輯部分設(shè)計(jì) 在比較復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)過程中,往往把狀態(tài)的變化與在比較復(fù)雜的狀態(tài)機(jī)設(shè)計(jì)過程中,往往把狀態(tài)的變化與輸出開關(guān)

35、的控制分成兩部分來考慮。使用這種方法進(jìn)行設(shè)計(jì)輸出開關(guān)的控制分成兩部分來考慮。使用這種方法進(jìn)行設(shè)計(jì)時(shí),時(shí),F(xiàn)SM中的狀態(tài)變化(時(shí)序邏輯部分)和開關(guān)控制(組合中的狀態(tài)變化(時(shí)序邏輯部分)和開關(guān)控制(組合邏輯部分)分開獨(dú)立設(shè)計(jì)。邏輯部分)分開獨(dú)立設(shè)計(jì)。 FSM中時(shí)序邏輯部分設(shè)計(jì) 時(shí)序邏輯部分包含寄存器,clock和reset都與之相連,在process中實(shí)現(xiàn),任何一種順序描述語句都可以使用。51PROCESS ( reset, Clock ) BEGINIF (reset = 1 )THEN pre_state= state0 ; ELSIF (Clock event and clock=1) TH

36、EN pre_state IF (input=) THEN output = ; nx_state IF (input=) THEN output = ; nx_state IF (input=) THEN output = ; nx_state IF (input=) THEN output = ; nx_state = state3; ELSE END IF; END CASE;END PROCESS ; ASM圖的VHDL描述 序列檢測(cè)器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.NUMERIC_STD.ALL; - sequen

37、tial detector- Mealy machineENTITY seq_detector IS PORT( clk : IN std_logic; i_X : IN std_logic; o_Z : OUT std_logic );END seq_detector;ASM圖的VHDL描述 序列檢測(cè)器ARCHITECTURE rtl OF seq_detector IS - binary state assignment type state_type is (s0, s1, s2); signal present_state, next_state : state_type := s0;

38、 - one-hot encoder - constant s0 : std_logic_vector (2 downto 0) := 001; - constant s1 : std_logic_vector (2 downto 0) := 010; - constant s2 : std_logic_vector (2 downto 0) := 100; -signal present_state, next_state : std_logic_vector (2 downto 0); - actual assignment - present_state = s0; BEGINProce

39、ss(clk)Begin if(clkevent and clk = 1) then present_state = next_state; endEnd process; comb_proc : process (next_state, i_X) is begin o_Z if i_X = 1 then next_state if i_X = 0 then next_state if i_X = 1 then next_state = s1; o_Z = 1; else next_state = s0; end if; end case; end process comb_proc; END rtl;ASM圖的圖的VHDL描述描

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論