




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第七章第七章 有限狀態機有限狀態機1、什么是有限狀態機、什么是有限狀態機?(時序邏輯電路時序邏輯電路)FSM :Finite State Machine狀態機可認為是組合邏輯和寄存器邏輯的特殊組合。狀態機可認為是組合邏輯和寄存器邏輯的特殊組合。組合邏輯部分又分為組合邏輯部分又分為狀態譯碼器狀態譯碼器和和輸出譯碼器輸出譯碼器,狀態譯碼器確,狀態譯碼器確定狀態機的下一個狀態,即確定狀態機的激勵方程,輸出譯碼定狀態機的下一個狀態,即確定狀態機的激勵方程,輸出譯碼器確定狀態機的輸出,即確定狀態機的輸出方程。器確定狀態機的輸出,即確定狀態機的輸出方程。狀態寄存器狀態寄存器部分用于存儲狀態機的內部狀態;部
2、分用于存儲狀態機的內部狀態;2. 狀態機的優點狀態機的優點.結構模式相對簡單結構模式相對簡單,設計方案相對固定設計方案相對固定狀態機容易構成性能良好的同步時序模塊狀態機容易構成性能良好的同步時序模塊狀態機的狀態機的VHDL設計程序層次分明設計程序層次分明,結構清晰結構清晰,易讀易懂易讀易懂在高速運算和控制方面在高速運算和控制方面,比比CPU具有巨大的優勢具有巨大的優勢 運算速度運算速度:快快 可靠性可靠性: 高高4. 狀態機的分類狀態機的分類時序電路的分類時序電路的分類:摩爾摩爾moore型電路型電路.米利米利mealy型電路型電路有限狀態機有限狀態機摩爾摩爾moore型狀態機型狀態機米利米利
3、mealy型狀態機型狀態機(1)狀態機內部狀態轉換。狀態機內部狀態轉換。(2)產生輸出信號序列。產生輸出信號序列。狀態機經歷一系列狀態,下一狀態由狀態譯碼器根據當前狀態和輸入條件狀態機經歷一系列狀態,下一狀態由狀態譯碼器根據當前狀態和輸入條件決定。用輸入信號決定下一狀態也稱為決定。用輸入信號決定下一狀態也稱為“轉移轉移”。從一個狀態轉移到另一。從一個狀態轉移到另一個狀態稱為控制定序,而決定下一狀態所需的邏輯稱為轉移函數。個狀態稱為控制定序,而決定下一狀態所需的邏輯稱為轉移函數。3. 狀態機的基本操作有兩種:狀態機的基本操作有兩種:輸出信號由輸出譯碼器根據當前狀態和輸入條件決定。輸出信號由輸出譯
4、碼器根據當前狀態和輸入條件決定。有限狀態機有限狀態機VHDL程序的一般結構程序的一般結構說明部分說明部分:狀態類型狀態類型(state type)和狀態信號和狀態信號(state)的說明的說明狀態類型狀態類型(state type)一般采用枚舉類型一般采用枚舉類型type state_type is (start_state,run_state,error_state);type st_type is (st0,st1,st2,st3);signal current_state,next_state:st_type;主控時序進程主控時序進程狀態機的狀態機的“驅動泵驅動泵”,1.當時鐘有效時當時
5、鐘有效時,機械地將次狀態機械地將次狀態(next_state)的值賦給當前狀態的值賦給當前狀態(current_state). 2.進行一些同進行一些同/異步清零或異步清零或置位置位.主控組合進程主控組合進程根據輸入控制信號以及當前狀態根據輸入控制信號以及當前狀態,確定次狀態的取向確定次狀態的取向.普通組合進程普通組合進程根據輸入控制信號以及當前狀態根據輸入控制信號以及當前狀態,確定輸出確定輸出.LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SMACHINE IS PORT(CLK, RESET : IN STD_LOGIC; STATE_IN
6、PUTS: IN STD_LOGIC_VECTOR(0 TO 1); COMB_OUTPUTS: OUT STD_LOGIC_VECTOR(0 TO 1);END SMACHINE;ARCHITECTURE ART OF SMACHINE ISTYPE STATES IS (ST0, ST1, ST2, ST3);SIGNAL CURRENT_STATE, NEXT_STATE: STATES;BEGINREG: PROCESS (RESET, CLK)BEGIN IF RESET= 1 THEN CURRENT_STATE=ST0; ELSIF (CLK= 1 AND CLK EVENT)
7、THEN CURRENT_STATE IF STATE_INPUTS= 00 THEN NEXT_STATE=ST0; ELSE NEXT_STATE IF STATE_INPUTS =00 THEN NEXT_STATE=ST1; ELSE NEXT_STATE IF STATE_INPUTS= 11 THEN NEXT_STATE=ST2; ELSE NEXT_STATE IF STATE_INPUTS= 11 THEN NEXT_STATE=ST3; ELSE NEXT_STATECOMB_OUTPUTSCOMB_OUTPUTSCOMB_OUTPUTSCOMB_OUTPUTS=11; E
8、ND CASE; END PROCESS;END ART;st0st1st3st2Start_input/comb_outputs00/001x or 01/0100/011x or 01 /1011/10ox or 10 /1111/110 x or 10/007.1 MOORE型狀態機型狀態機00001111110010011010ENTITY DEMO IS PORT (CLK, IN1, RESET: IN STD_LOGIC; OUT1 : OUT STD_ LOGIC)END DEMO; ARCHITECTURE MOORE OF DEMO IS TYPE STATE_TYPE I
9、S ( S0, S1, S2, S3 ); SIGNAL STATE: STATE_ TYPE;BEGINDEMO_ PROCESS: PROCESS ( CLK, RESET )BEGIN IF RESET = 1 THEN STATE IF IN1= 1 THEN STATE IF IN1= 0 THEN STATE IF IN1 = 1 THEN STATE IF IN1 = 0 THEN STATE OUT1 OUT1 OUT1 OUT1 IF IN1 = 1 THEN NEXT_STATE IF IN1 = 0 THEN NEXT_STATE IF IN1 = 1 THEN NEXT
10、_STATE IF IN1 = 0 THEN NEXT_STATE = S0; END IF; END CASE;END PROCESS;P1: PROCESS (CLK, RESET ) BEGIN IF RESET = 1 THEN STATE = S0; ELSIF CLK EVENT AND CLK = 1 THEN CURRENT_STATE OUT1 OUT1 OUT1 OUT1 = 1111; END CASE END PROCESS;END MOORE;ARCHITECTURE MOORE OF DEMO ISTYPE STATE- TYPE IS ARRAY ( 1 DOWN
11、TO 0 ) OF BIT; CONSTANT S0 : STATE_TYPE :=00; CONSTANT S1 : STATE_TYPE :=01; CONSTANT S2 : STATE_TYPE :=10; CONSTANT S3 : STATE_TYPE :=11; SIGNAL STATE: STATE_TYPE;BEGIN DEMO_PROCESS: PROCESS BEGIN WAIT UNTIL RISING_EDGE ( CLK ); IF RESET = 1 THEN STATE= S0; ELSE IF STATE=S0 THEN IF INL=1 THEN STATE
12、= S2; END IF; ELSIF STATE=SL THEN IF INL=0 THEN STATE= S2; END IF; ELSIF STATE=S2 THEN IF INL=1 THEN STATE= S3; END IF; ELSE IF INL=0 THEN STATE= S0; END IF; END IF; END IF;END PROCESS;OUTPUT_P:PROCESS(STATE) BEGIN IF STATE=S0 THEN OUT1=“0000”; ELSIF STATE=S1 THEN OUT1=“1001”; ELSIF STATE=S2 THEN OU
13、T1=“1100”; ELSE OUT1=“1111”; END IF; END PROCESS;END MOORE;7.2 MEALY型狀態機型狀態機S0S3S2S11/10010/11001/11110/00000/00001/10010/11001/1111ENTITY DEMO IS PORT (CLK, INL, RESET: IN STD_LOGIC; OUT1 : OUT STD_ LOGIC)END DEMO; ARCHITECTURE MOORE OF DEMO IS TYPE STATE_TYPE IS ( SO, S1, S2, S3 ); SIGNAL STATE: S
14、TATE_ TYPE;BEGINDEMO_ PROCESS: PROCESS ( CLK, RESET )BEGIN IF RESET = 1 THEN STATE IF INL= 1 THEN STATE IF INL = 0 THEN STATE IF INL = 1 THEN STATE IF INL = 0 THEN STATE IF IN1=1 THEN OUT1 = “1001; ELSE OUT IF IN1=0 THEN OUT1 = “1100; ELSE OUT IF IN1=1 THEN OUT1 = “1111; ELSE OUT IF IN1=0 THEN OUT1
15、= 0000; ELSE OUT=“1111”; END IF; END CASE;END PROCESS;END MOORE7.3 消除狀態機可能出現的消除狀態機可能出現的“毛刺毛刺”可能產生毛刺的原因可能產生毛刺的原因:輸出信號均來自組合邏輯電路輸出信號均來自組合邏輯電路.如何消除如何消除?直接將狀態作為輸出信號直接將狀態作為輸出信號引入寄存器引入寄存器,用時鐘控制同步輸出信號用時鐘控制同步輸出信號001110011010組合邏輯組合邏輯寄寄存存器器input 當前狀態當前狀態clkresetoutput DEMO_ PROCESS: PROCESS ( CLK, RESET )BEGIN
16、 IF RESET = 1 THEN STATE IF IN1= 1 THEN STATE IF IN1=0 THEN STATE IF IN1=1 THEN STATE IF IN1=0 THEN STATE = S0; END IF; END CASE; END IF;END PROCESS;OUT1=STATE;END;00001111110010011010ARCHITECTURE MOORE OF DEMO IS TYPE STATE_TYPE IS ( SO, SL, S2, S3 ); SIGNAL STATE: STATE_ TYPE;BEGINDEMO_ PROCESS: P
17、ROCESS ( CLK, RESET )BEGIN IF RESET = 1 THEN STATE = S0; OUT1 IF INL= 1 THEN STATE = SL; END IF; OUT1 IF INL = 0 THEN STATE = S2; END IF; OUT1 IF INL = 1 THEN STATE = S3; END IF; OUT1 IF INL = 0 THEN STATE = S0; END IF; OUT1=“1111”; END CASE END IF;END PROCESS;END;S0S3S2S11/10010/11001/11110/00000/00001/10010/11001/1111DEMO_ PROCESS: PROCESS ( CLK, RESET )BEGIN IF RESET = 1 THEN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫收發工作管理制度
- ma標志標識管理制度
- 企業用電計量管理制度
- 研究生專業實踐個人總結5000字
- 企業資產管理管理制度
- 考駕駛人培訓場管理制度
- 項目部人員值班管理制度
- 井下特殊物料管理制度
- 企業工會資金管理制度
- 產品日期發貨管理制度
- 租房學位合同協議書范本
- 艾梅乙考試試題及答案
- 合肥市公安局招聘警務輔助人員考試真題2024
- T/CECS 10363-2024薄壁不銹鋼管件用法蘭及法蘭接頭
- 2025年MySQL數據庫編程試題及答案
- 醫院信息安全法律培訓計劃
- 國開學習網《員工勞動關系管理》形考任務1-4答案
- 食堂成本核算方法
- 江蘇非物質文化遺產研學旅行產品的開發與推廣
- 從建筑設計到環境設計構建舒適醫療體驗
- 江蘇省徐州市2023-2024學年高一下學期期末考試數學試題(解析版)
評論
0/150
提交評論