




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 FSMFSM是為時(shí)序電路設(shè)計(jì)而創(chuàng)建的特殊模型技術(shù),是為時(shí)序電路設(shè)計(jì)而創(chuàng)建的特殊模型技術(shù),在針對在針對任務(wù)順序非常明確任務(wù)順序非常明確的電路(如交通燈控制器)是非常的電路(如交通燈控制器)是非常實(shí)用實(shí)用。 理論上,任何時(shí)序電路都可以建立理論上,任何時(shí)序電路都可以建立FSMFSM模型,但并不總模型,但并不總是一種高效的方法。是一種高效的方法。如果一味地追求使用如果一味地追求使用FSMFSM來設(shè)計(jì)時(shí)來設(shè)計(jì)時(shí)序電路,可能會導(dǎo)致代碼冗長和容易出錯序電路,可能會導(dǎo)致代碼冗長和容易出錯。例如,任。例如,任務(wù)簡單的寄存器就不必使用務(wù)簡單的寄存器就不必使用FSMFSM方式實(shí)現(xiàn)。又例如,方式實(shí)現(xiàn)。又例如,雖雖
2、然任務(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ī)的編碼。第第8 8章章 狀態(tài)機(jī)狀態(tài)機(jī)(Finite State Machine,FSM)(Finite State Machine,FSM)2組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_state狀態(tài)機(jī)的組成狀態(tài)機(jī)的組成: :如圖。如圖。狀態(tài)機(jī)的種類狀態(tài)機(jī)的種類: MealyMea
3、ly型:當(dāng)前狀態(tài)、當(dāng)前輸入相關(guān)型:當(dāng)前狀態(tài)、當(dāng)前輸入相關(guān) MooreMoore型:僅當(dāng)前狀態(tài)相關(guān)型:僅當(dāng)前狀態(tài)相關(guān)VHDLVHDL代碼結(jié)構(gòu):代碼結(jié)構(gòu): 時(shí)序邏輯部分:時(shí)序邏輯部分:processprocess內(nèi)部內(nèi)部 組合邏輯部分:組合邏輯部分: 在使用在使用FSMFSM方式設(shè)計(jì)方式設(shè)計(jì)VHDLVHDL代碼時(shí),通常代碼時(shí),通常會會在結(jié)構(gòu)體的開始部分插入一個(gè)用戶自在結(jié)構(gòu)體的開始部分插入一個(gè)用戶自定義的枚舉數(shù)據(jù)類型定義的枚舉數(shù)據(jù)類型,其中,其中包含所有可包含所有可能出現(xiàn)的電路狀態(tài)能出現(xiàn)的電路狀態(tài)。8.1 8.1 引言引言38.2 8.2 設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#1#1一種結(jié)構(gòu)清晰、易于實(shí)現(xiàn)的一種結(jié)構(gòu)清晰
4、、易于實(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);4組合邏輯電路時(shí)序邏輯電路clkrstoutputinputpr_statenx_stateFSMFSM中中時(shí)序邏輯部分時(shí)序邏輯部分的設(shè)計(jì)特點(diǎn):的設(shè)計(jì)特點(diǎn):確定的輸入確定的輸入/ /輸出端口輸出端口典型的模板可供使用典型的模板可供使用-lower section-process (clock, reset)begin if (reset = 1) the
5、n 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;6設(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,
6、 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
7、 = ; 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í)行7例例8.1 BCD8.1 BCD計(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
8、ive(0101)nine(1001)eight(1000)seven(0111)six(0110)rst8library 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,
9、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;e
10、nd 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=49例例8.2 8.2 簡單的簡單的FSM#1FSM#1功能描述功能描述:FSMxabcclkrststateA(x=a)stateB(x=b)d=0d=0d=1d=1rst10entity 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 s
11、tate 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;
12、end case;end process;end simple_fsm;代碼實(shí)現(xiàn):代碼實(shí)現(xiàn):所需寄存器個(gè)數(shù)所需寄存器個(gè)數(shù): 1 1個(gè),用于存儲兩個(gè)狀態(tài)編碼。個(gè),用于存儲兩個(gè)狀態(tài)編碼。118.3 8.3 設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#2#2 在很多應(yīng)用中(如波形整齊、流水線技術(shù)等),在很多應(yīng)用中(如波形整齊、流水線技術(shù)等),需要同步的寄存器輸出,即需先使用寄存器存儲起需要同步的寄存器輸出,即需先使用寄存器存儲起來,然后在時(shí)鐘邊沿時(shí)才進(jìn)行更新,如圖來,然后在時(shí)鐘邊沿時(shí)才進(jìn)行更新,如圖b b:12設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#2#2的狀態(tài)機(jī)模板的狀態(tài)機(jī)模板使用輔助信號如使用輔助信號如temptemp library iee
13、e;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_state
14、= 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信號將輸出結(jié)信號將輸出結(jié)果存儲起來,只有果存儲起來,只有當(dāng)所需時(shí)鐘邊沿到當(dāng)所需時(shí)鐘邊沿到來時(shí)才被賦值給輸來時(shí)才被賦值給輸出端口出端口13entity simple_fsm is port ( a, b, c, d
15、, 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 = nx_
16、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è)用于存儲兩個(gè)個(gè),一個(gè)用于存儲兩個(gè)狀態(tài)編碼,另一個(gè)用于存儲同步輸出結(jié)果。狀態(tài)編碼,另一個(gè)用于存儲同步輸出結(jié)果。例例8.38.3:用:用FSM#2FSM#2實(shí)現(xiàn)例實(shí)現(xiàn)例8.28.2: -同步輸出同步輸出148.4 8.4 狀
17、態(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í),需要對狀態(tài)機(jī)在設(shè)計(jì)狀態(tài)機(jī)時(shí),需要對狀態(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)編碼15(3 3)不同的編碼方式所需要的觸發(fā)器數(shù)目和組合邏輯資源是)不同的編碼方式所需要的觸發(fā)器數(shù)目和組合邏
18、輯資源是不同的:不同的: 二進(jìn)制編碼:二進(jìn)制編碼:需要寄存器數(shù)目最少,但所需組合邏輯最需要寄存器數(shù)目最少,但所需組合邏輯最多,速度最慢;多,速度最慢;這些特性對于這些特性對于PALPAL和門陣列結(jié)構(gòu)和門陣列結(jié)構(gòu)是可以接是可以接受的。但是因?yàn)槭艿?。但是因?yàn)镕PGAFPGA具有許多觸發(fā)器和較少的組合邏輯資具有許多觸發(fā)器和較少的組合邏輯資源,高編碼的狀態(tài)變量會導(dǎo)致低的源,高編碼的狀態(tài)變量會導(dǎo)致低的FPGAFPGA速度和密度的實(shí)現(xiàn)速度和密度的實(shí)現(xiàn)效率。效率。一位獨(dú)熱編碼(一位獨(dú)熱編碼(One-Hot EncodingOne-Hot Encoding):):就是使每個(gè)狀態(tài)就是使每個(gè)狀態(tài)占用狀態(tài)寄存器的一
19、位。這種編碼方法看起來好像很浪費(fèi)占用狀態(tài)寄存器的一位。這種編碼方法看起來好像很浪費(fèi)資源,例如,對于一位熱獨(dú)碼編碼來說,一個(gè)具有資源,例如,對于一位熱獨(dú)碼編碼來說,一個(gè)具有1616個(gè)狀個(gè)狀態(tài)的在限狀態(tài)機(jī)需要態(tài)的在限狀態(tài)機(jī)需要1616個(gè)觸發(fā)器,但如果使用二進(jìn)制編碼,個(gè)觸發(fā)器,但如果使用二進(jìn)制編碼,則只需要則只需要4 4個(gè)觸發(fā)器。但是,一位有效編碼方法可以簡化個(gè)觸發(fā)器。但是,一位有效編碼方法可以簡化組合邏輯和邏輯之間的內(nèi)部連接。一位熱獨(dú)碼編碼可以產(chǎn)組合邏輯和邏輯之間的內(nèi)部連接。一位熱獨(dú)碼編碼可以產(chǎn)生較小的并且更快的有效狀態(tài)機(jī)。這對于順序邏輯資源比生較小的并且更快的有效狀態(tài)機(jī)。這對于順序邏輯資源比組合
20、邏輯資源更豐富的可編程組合邏輯資源更豐富的可編程ASICASIC來說,是比較有效的編來說,是比較有效的編碼方式。特別是碼方式。特別是對于對于FPGAFPGA結(jié)構(gòu)來說,一位熱獨(dú)碼編碼是最結(jié)構(gòu)來說,一位熱獨(dú)碼編碼是最好的狀態(tài)編碼方式好的狀態(tài)編碼方式。另外,。另外,One-hotOne-hot編碼所需的編碼所需的 組合邏輯組合邏輯最少最少, ,觸發(fā)器最多觸發(fā)器最多, ,工作時(shí)鐘頻率可以做到最高工作時(shí)鐘頻率可以做到最高。16雙熱碼:介于二進(jìn)制編碼和獨(dú)熱編碼之間,雙熱碼:介于二進(jìn)制編碼和獨(dú)熱編碼之間,每一次狀態(tài)每一次狀態(tài)變化都會帶來兩個(gè)位的跳變,使用變化都會帶來兩個(gè)位的跳變,使用n n個(gè)寄存器可以實(shí)現(xiàn)對
21、個(gè)寄存器可以實(shí)現(xiàn)對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ī)編碼方式的選擇:一般的綜合工具對狀態(tài)機(jī)進(jìn)行:一般的綜合工具對狀態(tài)機(jī)進(jìn)行綜合時(shí)都可以讓用戶對這三種編碼進(jìn)行選擇。對于大的基于綜合時(shí)都可以讓用戶對這三種編碼進(jìn)行選擇。對于大的基于FPGAFPGA的狀態(tài)機(jī)的實(shí)現(xiàn)來說,一位有效編碼是最
22、佳的方法。對的狀態(tài)機(jī)的實(shí)現(xiàn)來說,一位有效編碼是最佳的方法。對于較少狀態(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ī)都使用合適的編碼方式。合適的編碼方式。17第第9 9章章 部分習(xí)題講解(部分習(xí)題講解(1 1)例例9.99.9中中“信號發(fā)生器信號發(fā)生器”功能描述功能描述:特點(diǎn)分析特點(diǎn)分析:波形在波形在clkclk的上升沿才發(fā)生跳變,是與的上升
23、沿才發(fā)生跳變,是與例例8.68.6的最大不同之處的最大不同之處。設(shè)計(jì)方法設(shè)計(jì)方法: 1 1、FSMFSM方法;方法; 2 2、傳統(tǒng)的方法:周期計(jì)數(shù)。、傳統(tǒng)的方法:周期計(jì)數(shù)。clk波形波形1個(gè)周期個(gè)周期18采用采用FSMFSM方法進(jìn)行設(shè)計(jì):方法進(jìn)行設(shè)計(jì):設(shè)計(jì)思路設(shè)計(jì)思路: 使用使用8 8個(gè)狀態(tài)的個(gè)狀態(tài)的FSMFSM,并使用模,并使用模8 8計(jì)數(shù)器的計(jì)數(shù)值代表這計(jì)數(shù)器的計(jì)數(shù)值代表這8 8個(gè)狀態(tài)。當(dāng)個(gè)狀態(tài)。當(dāng)countcount為為0 0時(shí),進(jìn)入第一個(gè)狀態(tài),將輸出電平置時(shí),進(jìn)入第一個(gè)狀態(tài),將輸出電平置為低電平;當(dāng)為低電平;當(dāng)countcount為為1 1時(shí),進(jìn)入第二個(gè)狀態(tài),將輸出電平時(shí),進(jìn)入第二個(gè)狀態(tài),將輸出電平置為高電平;以此類推,即可得圖中輸出波形。置為高電平;以此類推,即可得圖中輸出波形。另外,由于信號發(fā)生器中不允許出現(xiàn)毛刺,須使用另外,由于信號發(fā)生器中不允許出現(xiàn)毛刺,須使用FSMFSM設(shè)計(jì)風(fēng)格設(shè)計(jì)風(fēng)格#2#2,將輸出存儲到寄存器中。,將輸出存儲到寄存器中。clk波形波形1個(gè)周期個(gè)周期19寄存器數(shù)量寄存器數(shù)量:log2log28 8+1=4.+1=4.(3(3個(gè)用于計(jì)數(shù)器,個(gè)用于計(jì)數(shù)器,1 1個(gè)用于存儲輸出電平值。個(gè)用于
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告設(shè)計(jì)專業(yè)必修課程
- 巴楚縣2024年數(shù)學(xué)三上期末學(xué)業(yè)水平測試模擬試題含解析
- 首飾店面設(shè)計(jì)調(diào)研報(bào)告
- 面館設(shè)計(jì)方案
- 2025年工程項(xiàng)目管理新課程試題及答案
- 酒店婚宴服務(wù)預(yù)定及合同條款
- 物流與供應(yīng)鏈管理案例分析練習(xí)
- 工程項(xiàng)目風(fēng)險(xiǎn)管理案例試題與答案
- 食品加工企業(yè)生產(chǎn)管理手冊
- 水利水電工程資金管理試題及答案
- 《結(jié)直腸癌精準(zhǔn)治療策略與實(shí)踐課件》
- 水務(wù)公司筆試題目及答案
- 延安通和電業(yè)有限責(zé)任公司招聘真題2024
- 病媒生物防治試題及答案
- 正定古城介紹課件
- 超聲技術(shù)在麻醉監(jiān)測中的新興應(yīng)用-全面剖析
- 2024年陜西省城固縣事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗筆試題帶答案
- 2025年公共文化服務(wù)管理考試試題及答案
- 2025江蘇無錫宜興市國資本投資控股集團(tuán)限公司招聘工作人員10人易考易錯模擬試題(共500題)試卷后附參考答案
- 銀行市場營銷戰(zhàn)略試題及答案2025年總結(jié)
- 2023年度湖州市生態(tài)環(huán)境狀況公報(bào)
評論
0/150
提交評論