第七章有限狀態(tài)機(jī)的設(shè)計(jì)_第1頁
第七章有限狀態(tài)機(jī)的設(shè)計(jì)_第2頁
第七章有限狀態(tài)機(jī)的設(shè)計(jì)_第3頁
第七章有限狀態(tài)機(jī)的設(shè)計(jì)_第4頁
第七章有限狀態(tài)機(jī)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章

有限狀態(tài)機(jī)的設(shè)計(jì)主要內(nèi)容狀態(tài)機(jī)的概述

概念、優(yōu)點(diǎn)、分類MOORE(摩爾)型狀態(tài)機(jī)MEALY(米利)型狀態(tài)機(jī)狀態(tài)編碼非法狀態(tài)一、什么是狀態(tài)機(jī)?先看一個(gè)例子—設(shè)計(jì)一個(gè)六進(jìn)制約翰遜計(jì)數(shù)器什么叫做約翰遜計(jì)數(shù)器?

一般的二進(jìn)制計(jì)數(shù)器或十進(jìn)制計(jì)數(shù)器,由于在每次計(jì)數(shù)時(shí)常有不止一位觸發(fā)器翻轉(zhuǎn),以至于發(fā)生競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,造成誤譯動(dòng)作.為了消除這種干擾,采用每次僅有一位觸發(fā)器反轉(zhuǎn)的計(jì)數(shù)器,稱為約翰遜計(jì)數(shù)器一、什么是狀態(tài)機(jī)?(續(xù)1)libraryieee;useieee.std_logic_1164.all;entityjh_cntis port(clk,reset:instd_logic; q:outstd_logic_vector(3downto0));end;architectureoneofjh_cntis typestateis(s0,s1,s2,s3,s4,s5); signalcurrent_state,next_state:state;beginreg:process(clk,reset)begin ifreset='1'thencurrent_state<=s0; elsifclk'eventandclk='1'then current_state<=next_state; endif;endprocess;自定義數(shù)據(jù)類型state,枚舉類型主控時(shí)序進(jìn)程在時(shí)鐘驅(qū)動(dòng)下,負(fù)責(zé)狀態(tài)轉(zhuǎn)換,但是不負(fù)責(zé)下一狀態(tài)的具體狀態(tài)取值一、什么是狀態(tài)機(jī)?(續(xù)2)com:process(current_state)begin casecurrent_stateis whens0=>q<="0000";next_state<=s1; whens1=>q<="0001";next_state<=s2; whens2=>q<="0011";next_state<=s3; whens3=>q<="0111";next_state<=s4; whens4=>q<="0110";next_state<=s5; whens5=>q<="0100";next_state<=s0; endcase;endprocess;end;主控組合進(jìn)程純組合電路,決定每一狀態(tài)下的輸出和下一狀態(tài)的具體取值一、什么是狀態(tài)機(jī)?(續(xù)3)就理論而言,任何一個(gè)時(shí)序模型的電路系統(tǒng)都可以歸結(jié)為一個(gè)狀態(tài)機(jī)。把該電路系統(tǒng)分為有限個(gè)狀態(tài)。在任意時(shí)刻,只能處于有限狀態(tài)中的一個(gè),在接受到一個(gè)輸入事件時(shí),狀態(tài)機(jī)產(chǎn)生一個(gè)輸出,同時(shí)伴隨著狀態(tài)的轉(zhuǎn)移。有限狀態(tài)機(jī)(FSM,F(xiàn)initeStateMachine)是一種基本的、簡(jiǎn)單的、重要的形式化技術(shù)。是數(shù)字邏輯的另一種表示方法與一種設(shè)計(jì)思想。VHDL程序設(shè)計(jì)的FSM有如下優(yōu)點(diǎn):設(shè)計(jì)方案相對(duì)固定,程序?qū)哟畏置鳎Y(jié)構(gòu)清晰,特別是可以定義為符號(hào)化枚舉類型的狀態(tài),使VHDL綜合器對(duì)狀態(tài)機(jī)具有很大的優(yōu)化功能。

容易構(gòu)成性能良好的同步時(shí)序模塊,容易消除電路中的毛刺現(xiàn)象。由純硬件組成,工作方式是根據(jù)控制信號(hào)按照預(yù)先設(shè)定的狀態(tài)進(jìn)行順序運(yùn)行,使其運(yùn)行速度和可靠性較好。

二、狀態(tài)機(jī)的分類按照不同的分類方法有不同類型的狀態(tài)機(jī)按狀態(tài)機(jī)的信號(hào)輸出方式分MOORE型狀態(tài)機(jī)MEALY型狀態(tài)機(jī)輸出由當(dāng)前狀態(tài)所決定輸出由當(dāng)前狀態(tài)和輸入共同決定二、狀態(tài)機(jī)的分類(續(xù)1)按結(jié)構(gòu)分單進(jìn)程狀態(tài)機(jī)(一段式)多進(jìn)程狀態(tài)機(jī)(兩段式、三段式)主控時(shí)序進(jìn)程主控組合進(jìn)程決定下一狀態(tài)的具體取值每一個(gè)狀態(tài)的輸出二、狀態(tài)機(jī)的分類(續(xù)2)按狀態(tài)的表達(dá)方式上分符號(hào)化狀態(tài)機(jī)以文字符號(hào)代表每一個(gè)狀態(tài),在實(shí)際電路中是以二進(jìn)制組合來表示,由綜合器根據(jù)優(yōu)化情況來確定編碼確定狀態(tài)編碼的狀態(tài)機(jī)在定義狀態(tài)時(shí),就人為的將狀態(tài)的編碼確定下來,可以采用的編碼形式有:狀態(tài)位直接輸出型編碼、順序碼、格雷碼、一位熱碼等例:CONSTANTs0:std_logic_vector(1downtown0):=“00”;CONSTANTs1:std_logic_vector(1downtown0):=“01”;CONSTANTs2:std_logic_vector(1downtown0):=“10”;二、狀態(tài)機(jī)的分類(續(xù)3)按時(shí)鐘分同步輸出狀態(tài)機(jī)由時(shí)鐘信號(hào)控制異步輸出狀態(tài)機(jī)沒有經(jīng)過時(shí)鐘而直接輸出一般情況下,速度快于同步狀態(tài)機(jī),僅僅檔狀態(tài)機(jī)的性能要求高時(shí),才選擇三、MOORE型狀態(tài)機(jī)輸出僅和狀態(tài)有關(guān),因此狀態(tài)機(jī)的輸出信號(hào)就寫在表示狀態(tài)的圓圈之中。狀態(tài)轉(zhuǎn)移圖例1:實(shí)現(xiàn)下圖所示狀態(tài)機(jī)設(shè)計(jì)三、MOORE型狀態(tài)機(jī)(續(xù)1)entityd2mooreisport(clk,a,reset:instd_logic;q:outstd_logic_vector(3downto0));end;p0:process(reset,clk)beginifreset='1'thencurrent_state<=st0;elsifclk'eventandclk='1'thencurrent_state<=next_state;endif;endprocess;p1:process(current_state)begincasecurrent_stateiswhenst0=>q<="0000";whenst1=>q<="1001";whenst2=>q<="1100";whenst3=>q<="1111";endcase;endprocess;時(shí)鐘上升沿到來時(shí),完成狀態(tài)轉(zhuǎn)移決定每一狀態(tài)下的輸出三、MOORE型狀態(tài)機(jī)(續(xù)2)p2:process(current_state,a)begincasecurrent_stateiswhenst0=>ifa='1'thennext_state<=st1;elsenext_state<=st0;endif;whenst1=>ifa='0'thennext_state<=st2;elsenext_state<=st1;endif;whenst2=>ifa='1'thennext_state<=st3;elsenext_state<=st2;endif;whenst3=>ifa='0'thennext_state<=st0;elsenext_state<=st3;endif;endcase;endprocess;end;決定下一狀態(tài)的具體取值三段式、MOORE型狀態(tài)機(jī)返回三、MOORE型狀態(tài)機(jī)(續(xù)3)由軟件自動(dòng)生成狀態(tài)轉(zhuǎn)移圖TOOLS—NETLISTVIEWERS三、MOORE型狀態(tài)機(jī)(續(xù)4)三、MOORE型狀態(tài)機(jī)(續(xù)5)波形仿真結(jié)果異步復(fù)位三、MOORE型狀態(tài)機(jī)(續(xù)6)architectureoneofd1mooreistypestypeis(st0,st1,st2,st3);signalstate:stype;beginp0:process(reset,clk)beginifreset='1'thenstate<=st0;elsifclk'eventandclk='1'thencasestateiswhenst0=>q<="0000";ifa='1'thenstate<=st1;elsestate<=st0;endif;whenst1=>q<="1001";ifa='0'thenstate<=st2;elsestate<=st1;endif;whenst2=>q<="1100";ifa='1'thenstate<=st3;elsestate<=st2;endif;whenst2=>q<="1100";ifa='1'thenstate<=st3;elsestate<=st2;endif;whenst3=>q<="1111";ifa='0'thenstate<=st0;elsestate<=st3;endif;endcase;endif;endprocess;end;返回返回1三、MOORE型狀態(tài)機(jī)(續(xù)7)單進(jìn)程MOORE狀態(tài)機(jī)多進(jìn)程MOORE狀態(tài)機(jī)next_state<=st1current_state<=st1q<=“1001”q<=“0000”state<=st1;示例示例三、MOORE型狀態(tài)機(jī)(續(xù)8)單進(jìn)程MOORE狀態(tài)機(jī)多進(jìn)程MOORE狀態(tài)機(jī)毛刺三、MOORE型狀態(tài)機(jī)(續(xù)9)總結(jié)單進(jìn)程狀態(tài)機(jī)的特點(diǎn)輸出端得到的信號(hào)值要比多進(jìn)程晚一個(gè)時(shí)鐘周期能夠減少輸出信號(hào)波形的毛刺現(xiàn)象四、MEALY型狀態(tài)機(jī)例2:實(shí)現(xiàn)下圖所示狀態(tài)機(jī)設(shè)計(jì)輸出由當(dāng)前狀態(tài)和輸入信號(hào)決定,所以輸出信號(hào)寫在箭頭轉(zhuǎn)移處四、MEALY型狀態(tài)機(jī)(續(xù)1)architectureoneofd2mealyis typestypeis(st0,st1,st2,st3); signalstate:stype;beginreg:process(reset,clk)begin ifreset='1'thenstate<=st0; elsifclk'eventandclk='1'then casestateis whenst0=>ifa='1'thenstate<=st1;endif; whenst1=>ifa='0'thenstate<=st2;endif; whenst2=>ifa='1'thenstate<=st3;endif; whenst3=>ifa='0'thenstate<=st0;endif; endcase; endif;endprocess;在時(shí)鐘信號(hào)控制下,決定下一狀態(tài)四、MEALY型狀態(tài)機(jī)(續(xù)2)com:process(state,a)begin casestateis whenst0=>ifa='1'thenq<="1001"; elseq<="0000";endif; whenst1=>ifa='0'thenq<="1100"; elseq<="1001";endif; whenst2=>ifa='1'thenq<="1111";elseq<="1100";endif; whenst3=>ifa='0'thenq<="0000";elseq<="1111";endif; endcase;endprocess;end;根據(jù)狀態(tài)和輸入信號(hào)控制輸出輸出信號(hào)q由當(dāng)前狀態(tài)和輸入信號(hào)共同決定,與時(shí)鐘無關(guān)返回四、MEALY型狀態(tài)機(jī)(續(xù)3)MEALY型狀態(tài)機(jī)MOORE型狀態(tài)機(jī)示例示例四、MEALY型狀態(tài)機(jī)(續(xù)4)總結(jié)MEALY型狀態(tài)機(jī)和MOORE型狀態(tài)機(jī)的特點(diǎn)狀態(tài)轉(zhuǎn)化輸出信號(hào)與時(shí)鐘信號(hào)的關(guān)系MOOREMEALY由輸入決定由輸入決定由當(dāng)前狀態(tài)決定由當(dāng)前狀態(tài)和輸入決定與時(shí)鐘信號(hào)同步不依賴于時(shí)鐘,只要輸入變化,輸出能夠立即變化Moore和mealy狀態(tài)機(jī)

從信號(hào)輸出方式上分,有Moore和mealy狀態(tài)機(jī)。

Moore狀態(tài)機(jī),輸出僅為當(dāng)前狀態(tài)的函數(shù);在輸入發(fā)生變化時(shí),雖然能確定下一個(gè)狀態(tài)的去向,但還須等待下一個(gè)時(shí)鐘到來,才能使?fàn)顟B(tài)發(fā)生變化時(shí),以導(dǎo)致輸出的變化。因此從時(shí)序上看屬異步輸出的狀態(tài)機(jī)。

mealy狀態(tài)機(jī),輸出是當(dāng)前狀態(tài)和所有輸入信號(hào)的函數(shù);在輸入發(fā)生變化時(shí),輸出立即發(fā)生變化。從時(shí)序上看屬同步輸出的狀態(tài)機(jī)。五、狀態(tài)編碼為了滿足一些特殊需要,可直接將各狀態(tài)用具體的二進(jìn)制數(shù)進(jìn)行定義,即狀態(tài)機(jī)的直接編碼。狀態(tài)位直接輸出型編碼順序編碼格雷碼(Gray)編碼一位熱碼(one-hot)編碼五、狀態(tài)編碼(續(xù)1)1、狀態(tài)為直接輸出型編碼直接把狀態(tài)機(jī)的狀態(tài)編碼作為輸出信號(hào)(output=state),是狀態(tài)機(jī)的一種特殊類型。例1:思考:此狀態(tài)機(jī)屬于什么類型?五、狀態(tài)編碼(續(xù)2)libraryieee;useieee.std_logic_1164.all;entitymoisport(clk,a,reset:instd_logic;q:outstd_logic_vector(1downto0));end;architectureoneofmoissignalstate:std_logic_vector(1downto0);constants0:std_logic_vector(1downto0):="00";constants1:std_logic_vector(1downto0):="10";constants2:std_logic_vector(1downto0):="11";constants3:std_logic_vector(1downto0):="01";begin狀態(tài)編碼五、狀態(tài)編碼(續(xù)3)process(clk,reset)beginifreset='1'thenstate<=s0;elsifclk'eventandclk='1'thencasestateiswhens0=>ifa='1'thenstate<=s1;endif;whens1=>ifa='0'thenstate<=s2;endif;whens2=>ifa='1'thenstate<=s3;endif;whens3=>ifa='0'thenstate<=s0;endif;endcase;endif;endprocess;q<=state;end;輸入決定狀態(tài)的轉(zhuǎn)移輸出=狀態(tài)編碼,狀態(tài)決定輸出五、狀態(tài)編碼(續(xù)4)2、其他編碼方式順序碼、格雷碼、一位熱碼順序編碼格雷碼編碼一位熱碼編碼S0=“00”000001S1=“01”010010S2=“10”110100S3=“11”101000五、狀態(tài)編碼(續(xù)5)順序編碼使用觸發(fā)器數(shù)量最少;剩余非法狀態(tài)最少;增加了從一種狀態(tài)向另一種狀態(tài)轉(zhuǎn)化的譯碼組合邏輯適用于組合邏輯資源相對(duì)豐富的CPLD器件格雷碼編碼當(dāng)狀態(tài)機(jī)改變狀態(tài)時(shí),狀態(tài)向量中僅1位發(fā)生變化。一位熱碼編碼使用觸發(fā)器數(shù)量多,狀態(tài)數(shù)等于觸發(fā)器的數(shù)目簡(jiǎn)化了狀態(tài)譯碼邏輯,提高了狀態(tài)轉(zhuǎn)化速度。適合含有較多時(shí)序邏輯資源的FPGA器件。六、非法狀態(tài)處理非法狀態(tài):使用枚舉類型或者直接指定狀態(tài)編碼的程序中,總是不可避免的出現(xiàn)大量剩余狀態(tài),即未定義的編碼組合,這些狀態(tài)在狀態(tài)機(jī)的正常運(yùn)行中是不需要出現(xiàn)的。合法狀態(tài)與非法狀態(tài)之和:m=2n如果狀態(tài)機(jī)的實(shí)際狀態(tài)數(shù)小于m,可以有四種選擇:(1)、不做任何規(guī)定,讓偶然性決定

結(jié)果:可能進(jìn)入非法狀態(tài),出現(xiàn)短暫失控,或是完全無法擺脫非法狀態(tài)而失去正常的功能。六、非法狀態(tài)處理(續(xù)1)(2)、對(duì)每一個(gè)非法狀態(tài)作出明確的狀態(tài)轉(zhuǎn)化指示狀態(tài)順序編碼St0000St1

溫馨提示

  • 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)論