有限狀態機(Finite State Machine)

文章目錄

  • 有限狀態機(Finite State Machine)
    • 簡介
    • 狀態機的組成六要素
      • (1) 狀態集合
      • (2) 初態
      • (3) 終態
      • (4) 輸入符號集
      • (5) 輸出符號集
      • (6) 狀態轉移函數
    • 狀態機的工作四要素
      • (1) 現態
      • (2) 輸入
      • (3) 輸出
      • (4) 次態
    • FPGA中的狀態機模型
      • 1. Moore型狀態機
        • (1) Moore l型
        • (2) Moore 2型
        • (3) Moore 3型
      • 2. Mealy型狀態機
        • (1) Mealy l型
        • (2) Mealy 2型
        • (3) Mealy 3型
      • 3. Mix型狀態機

有限狀態機(Finite State Machine)

簡介

有限狀態機(Finite State Machine,簡稱FSM)是指狀態節點數和輸入、輸出范圍皆有限的狀態機。

狀態機的組成六要素

(1) 狀態集合

狀態集合是組成狀態機的必備要素,該集合里包含了狀態機所能達到的所有狀態:

{起床, 找小明, 找小強, 踢足球, 喝冷飲, 看電影, 吃火鍋, 打游戲, 睡覺}

Summary: 狀態集合定義了狀態機可以存在的所有狀態。

(2) 初態

初態是狀態機的第二個必備要素,它是整個狀態機開始工作的起點。

Summary: 初態決定了狀態機的起始狀態。

(3) 終態

終態是狀態機的結束狀態,即若狀態機到達終態,它的使命也將完成,從此不再工作。事實上,大部分運行在FPGA上的狀態機是沒有終態的,因為它們都需要用有限的狀態來處理無限的事件。

Summary: 終態表示狀態機的任務完成狀態,但在FPGA中很少存在真正的終態。

(4) 輸入符號集

輸入符號集是驅動狀態機進行狀態轉換的主要因素,不過狀態機的狀態轉換不一定需要外界的事件觸發,因此輸入符號集也不是組成狀態機的必備要素。但是大部分運行在FPGA上的狀態機還是需要輸入符號集的,至少大多數情況下,它們都需要一個復位信號來讓狀態機進入初態。

Summary: 輸入符號集用于驅動狀態轉換,但在某些情況下可以沒有輸入符號集。

(5) 輸出符號集

輸出符號集是狀態機輸出結果的集合。狀態機的輸出是由現態或現態和輸入共同決定的。

Summary: 輸出符號集定義了狀態機可能產生的所有輸出。

(6) 狀態轉移函數

狀態轉移函數定義了狀態機如何從一個狀態轉移到另一個狀態。它決定了在給定輸入的情況下,狀態機會轉移到哪個下一個狀態。

Summary: 狀態轉移函數決定了狀態機的狀態轉換規則。

狀態機的工作四要素

狀態機在工作時,將狀態機的工作狀態劃分為四個要素——現態、輸入、輸出、次態。其中,“現態”和“輸入”是因,“輸出”和“次態”是果,分別介紹如下。

(1) 現態

現態指狀態機當前所處的狀態。

Summary: 現態是狀態機在某一時刻的具體狀態。

(2) 輸入

輸入一般指外部事件,當一個外部事件發生后,狀態機便會根據狀態轉移函數發生相應的狀態跳轉,或者狀態機將會更新自己的輸出情況。在FPGA中,根據輸入信號是異步的還是同步的又可將狀態機分為異步狀態機和同步狀態機。鑒于穩定性的考慮,以后提到和FPGA相關的狀態機全部為同步狀態機。對于異步輸入信號,可以參考【本篇→編程思路→時鐘及時鐘域→跨時鐘域問題】中的相關處理方法,同步化后再送至狀態機。

Summary: 輸入是觸發狀態機狀態轉換的條件。

(3) 輸出

輸出是由現態或者現態和輸入共同決定的,如果這兩者都沒有變化,那么輸出也不應該有變化。輸出符號集是必需的,但具體到某一狀態或者某一輸入觸發事件,輸出并不是必需的,有時候帶來的僅僅是狀態遷移而已。

Summary: 輸出是狀態機在某一狀態下可能產生的結果。

(4) 次態

次態是根據現態、輸入及狀態轉移函數所得出的狀態機將要跳轉至的新狀態。次態是相對于現態而言的,一旦狀態遷移完成,次態便成為了新的現態。

Summary: 次態是狀態機即將進入的新狀態。

FPGA中的狀態機模型

按照狀態機的輸出與其現態、輸入之間的關系,可將FPGA中的狀態機抽象為三種基本模型——Moore、Mealy和Mix,即摩爾型、米利型和混合型,分別介紹如下。

1. Moore型狀態機

如果一個狀態機的輸出僅由現態決定,那么它就是一個Moore型的狀態機。而按照驅動輸出的數字電路特性,又將Moore型狀態機細分為Moore l型、Moore 2型、Moore 3型,詳細介紹如下。

(1) Moore l型

Moore 1型狀態機的原理結構框圖如下所示:

在這里插入圖片描述

從圖中可以看出,Moore 1型狀態機的結構可以劃分為兩大部分——狀態轉移部分和輸出生成部分。

  • 狀態轉移部分:輸入和現態(現態寄存器的輸出)通過組合邏輯共同作用產生次態,當下一次時鐘有效邊沿到來的時候,現態寄存器發生更新,剛才產生的次態即成為了新的現態,而新的現態將和新的輸入共同作用產生新的次態,如此往復。
  • 輸出生成部分:現態(現態寄存器的輸出)直接通過組合邏輯產生當前的輸出(這點也是Moore狀態機區別于Mealy狀態機最顯著的特點)。有時候,我們不希望將這部分的組合邏輯的延遲影響到后續模塊的處理,那么可以仿照圖通過添加輸出寄存器來解決這個問題,但是需要特別注意的一點是,由于輸出寄存器的更新需要等到下次時鐘的有效邊沿,因此經過輸出寄存器寄存后的輸出其實對應的是狀態機上一個狀態。

Summary: Moore 1型狀態機的輸出僅由現態決定,存在輸出延遲的問題。

(2) Moore 2型

Moore 2型狀態機的原理結構框圖如下所示:

從圖中可以看出,Moore 2型狀態機的結構仍劃分為狀態轉移和輸出生成兩大部分。與Moore 1型狀態機相比,輸出生成部分的輸入端由之前的現態(現態寄存器的輸出)變為了次態(由輸入和現態通過組合邏輯產生)。這樣一來,由于次態和次態決定的輸出在同一個時鐘周期內變得有效,那么在下一次時鐘有效邊沿到來時,現態寄存器和輸出寄存器將會同時進行更新,至此,次態變成新的現態,次態決定的輸出變成新的輸出。因此,Moore 2型狀態機中經過寄存后的輸出是對應于當前狀態的。
在這里插入圖片描述

Summary: Moore 2型狀態機通過改變輸出生成部分的輸入端,解決了輸出延遲的問題。

(3) Moore 3型

Moore 3型狀態機的原理結構框圖如下所示:
在這里插入圖片描述

通過上圖可以看出,Moore 3型狀態機就是將那些適合使用組合邏輯的輸出采用Moore 1型的方式來處理,而將那些適合使用寄存器的輸出采用Moore 2型的方式來處理,因此Moore 3型也叫混合型Moore狀態機。

Summary: Moore 3型狀態機結合了Moore 1型和Moore 2型的優點,適用于不同的輸出需求。

2. Mealy型狀態機

如果一個狀態機的輸出是由現態和輸入共同決定的,那么它就是一個Mealy型的狀態機。而按照驅動輸出的數字電路特性,又將Mealy型狀態機細分為Mealy l型、Mealy 2型、Mealy 3型,詳細介紹如下。

(1) Mealy l型

Mealy 1型狀態機的原理結構框圖如下所示:
在這里插入圖片描述

從圖中可以看出,對于Mealy 1型狀態機來說,由于次態和輸出均由現態和輸入通過組合邏輯共同決定,因此可以將狀態轉移部分和輸出生成部分合并成一個部分,兼并產生狀態機的次態和輸出。當下一次時鐘有效邊沿到來后,現態寄存器完成刷新,次態成為了新的現態,而新的現態和新的輸入共同作用產生新的次態和新的輸出,如此往復。

Summary: Mealy 1型狀態機的輸出由現態和輸入共同決定,可能產生輸出延遲的問題。

(2) Mealy 2型

Mealy 2型狀態機的原理結構框圖如下所示:
在這里插入圖片描述

從圖中可以看出,Mealy 2型狀態機重新將狀態轉移部分和輸出生成部分分開,并做成級聯的形態。輸出生成部分由次態和輸入共同作用產生次態對應的輸出。這樣,由于次態和次態決定的輸出在同一個時鐘周期內變得有效,那么在下一次時鐘有效邊沿到來時,現態寄存器和輸出寄存器將會同時進行更新,至此,次態變成新的現態,次態決定的輸出變成新的輸出。因此,Mealy 2型狀態機中經過寄存后的輸出是對應于當前狀態的。

Summary: Mealy 2型狀態機通過將狀態轉移部分和輸出生成部分分開,解決了輸出延遲的問題。

(3) Mealy 3型

Mealy 3型狀態機的原理結構框圖如下所示:
在這里插入圖片描述

與Moore型狀態機類似,Mealy l型和Mealy 2型狀態機也各有其優缺點。它們的本質區別仍在于“由狀態產生輸出”這部分的組合邏輯所處的位置。如果像Mealy l型那樣,將該部分邏輯和次態產生邏輯并聯,那么該組合邏輯的時間延遲將會影響到后續電路的工作;反之,如果像Mealy 2型那樣,將該部分邏輯和次態產生邏輯串聯,那么該組合邏輯的時間延遲將會影響到狀態機自身的工作。因此,為了將Mealy l型和Mealy 2型狀態機的缺點最小化、優點最大化,便有了Mealy 3型狀態機。

Summary: Mealy 3型狀態機結合了Mealy 1型和Mealy 2型的優點,適用于不同的輸出需求。

3. Mix型狀態機

如果一個狀態機有多個輸出,且其中一些僅由現態決定,而另一些是由現態和輸入共同決定的,那么它就是一個Mix型的狀態機。其實,Mix型狀態機就是一個Moore型狀態機和Mealy型狀態機的組合體,而每一個Moore型狀態機可以有Moore 1型、Moore 2型、Moore 3型三種選擇,每一個Mealy型狀態機也可以有Mealy l型、Mealy 2型、Mealy 3型三種選擇,因此Mix型狀態機可以細分為9種類型。

Summary: Mix型狀態機結合了Moore型和Mealy型狀態機的優勢,適用于復雜的輸出需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87781.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87781.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87781.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端框架中注釋占位與Fragment內容替換的實現與優化

在現代前端開發中,使用注釋占位符替換Fragment內容是一種常見的需求,尤其在處理動態內容、模板預加載和組件復用場景中。React和Vue作為當前最主流的前端框架,提供了不同的實現方式和優化策略,但核心目標都是減少不必要的DOM操作&…

uniapp中使用web-worker性能優化的分享

為什么要使用 web-workers原因很簡單,將復雜的計算邏輯和耗時邏輯放到線程中運行,避免ui阻塞,防止卡頓問題場景:本次運用于GPS 位置更新接入小程序注意事項:微信小程序中只允許存在一個 worker所以,需要再一…

5118 API智能處理采集數據教程

簡數采集器支持調用5118 API接口處理采集的數據標題和內容、關鍵詞、描述等,還可配合簡數采集的SEO功能優化文章數據,對提高收錄有積極的作用。 簡數采集器支持5118接口:5118智能核心詞提取API 和 5118智能摘要提取API 。 接入使用教程 1. …

【深度學習:進階篇】--4.2.詞嵌入和NLP

在RNN中詞使用one_hot表示的問題 假設有10000個詞 每個詞的向量長度都為10000,整體大小太大 沒能表示出詞與詞之間的關系 例如Apple與Orange會更近一些,Man與Woman會近一些,取任意兩個向量計算內積都為0 目錄 1.詞嵌入 1.1.特點 1.3.wor…

WebRTC 的 ICE candidate 協商

文章目錄 前言WebRTC 的 ICE candidate 協商1. 什么是 ICE candidate?2. ICE 協商的流程3.前端使用 ICE candidate 協商代碼示例1)收集 candidate 并發送2)WebSocket 接收 candidate 并添加 4. ICE candidate 的類型5. ICE 協商常見問題6. 關…

卡爾曼濾波介紹

卡爾曼濾波介紹📖 **卡爾曼濾波原理簡介**🔑 **核心思想**📦 **卡爾曼濾波的組成**🔍 **代碼分析(kalman_filter.py)**🏗? 1. 狀態空間定義🔄 2. 初始化模型矩陣🚀 3. 核…

遞歸與循環

文章目錄遞歸TestRecursiveListRemoveNodeTestRecursiveListRemoveNode2循環TestWhileLoopListRemoveNodeTestWhileLoopListRemoveNode2遞歸 關鍵理解這幾點: 1、求解基本問題 2、將原問題拆分為小問題,直至基本問題(難點) 3、借…

3D魔方游戲

# 3D魔方游戲 這是一個基于Three.js的3D魔方游戲,支持2到6階魔方的模擬操作。 ## 功能特點 - 支持2到6階魔方 - 真實的3D渲染效果 - 鼠標操作控制 - 隨機打亂功能 - 提示功能 - 重置功能 ### 安裝依賴 bash npm install ### 啟動游戲 bash npm start 然…

下載安裝 com0com

下載 在 sourceforge 網站下載安裝器:下載鏈接 安裝完成后可以在設備管理器中看到默認創建的一對虛擬串口 使用串口調試助手收發 使用串口調試助手分別打開。如下圖所示,在端口選擇的下拉列表中可以看到剛才在設備管理器中看到的 COM3 和 COM5 分…

C++ 應用軟件開發從入門到實戰詳解

目錄 1、引言 2、IDE 開發環境介紹 2.1、Visual Studio 2.2、Qt Creator 3、 C語言特性 3.1、熟悉泛型編程 3.2、了解C/C異常處理 3.3、熟練使用STL容器 3.4、熟悉C11新特性 4、Windows 平臺的編程技術與調試技能 4.1、需要掌握的若干編程技術和基礎知識 4.2、需…

Python爬蟲實戰:研究slug相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網技術的快速發展,網絡上的信息量呈爆炸式增長。如何從海量的非結構化數據中提取有價值的信息,成為當前數據科學領域的重要研究方向。網絡爬蟲作為一種自動化數據采集工具,可以高效地獲取網頁內容,為數據分析提供豐富的數據來源。 Sl…

人工智能-基礎篇-18-什么是RAG(檢索增強生成:知識庫+向量化技術+大語言模型LLM整合的技術框架)

RAG(Retrieval-Augmented Generation,檢索增強生成)是一種結合外部知識檢索與大語言模型(LLM)生成能力的技術框架,旨在提升生成式AI在問答、內容創作等任務中的準確性、實時性和領域適應性。 1、核心概念 …

CppCon 2018 學習:What do you mean “thread-safe“

什么是“線程安全”? “線程安全”指的是一個函數、方法或代碼塊能夠在多個線程同時執行時,不會出現意外的交互或破壞共享數據,能夠安全地運行。 POSIX 對線程安全的定義很清楚: “一個線程安全的函數可以在多個線程中被安全地并…

熱方程初邊值問題解法

已知公式: u ( x , t ) ∫ ? ∞ ∞ G ( x , y , t ) g ( y ) d y . u(x,t)\int_{-\infty}^{\infty}G(x,y,t)g(y)dy. u(x,t)∫?∞∞?G(x,y,t)g(y)dy. (1) 其中 G ( x , y , t ) 1 2 k π t e ? ( x ? y ) 2 4 k t G(x,y,t)\frac{1}{2…

怎樣理解:source ~/.bash_profile

場景復現 $ source ~/.bash_profileAnalysis 分析 一句話概括 source ~/.bash_profile “在 當前 終端會話里,立刻執行并加載 ~/.bash_profile 中的所有命令,讓其中定義的環境變量、函數、alias 等即時生效,而無需重新登錄或開新 Shell。…

搜索問答技術概述:基于知識圖譜與MRC的創新應用

目錄 一、問答系統應用分析 二、搜索問答技術與系統 (一)需求和信息分析 問答需求類型 多樣的數據源 文本組織形態 (二)主要問答技術介紹 發展和成熟度分析 重點問答技術基礎:KBQA和DeepQA KBQA(…

TCP數據的發送和接收

本篇文章結合實驗對 TCP 數據傳輸中的重傳機制、滑動窗口以及擁塞控制做簡要的分析學習。 重傳 實驗環境 這里使用兩臺騰訊云服務器:vm-1(172.19.0.3)和vm-2(172.19.0.6)。 超時重傳 首先 vm-1 作為服務端啟動 nc…

python 保存二維數組到本地

Python中保存二維數組有多種方法,以下是常用的幾種方式:1. 使用NumPy(推薦)import numpy as np# 創建二維數組 arr np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 保存為.npy文件(NumPy專用格式) np.save…

LIN總線通訊中從節點波特率同步原理

波特率同步原理:從節點如何通過0x55校準時鐘? 一、同步場的核心作用:統一“時間標尺” 在LIN總線中,主節點與從節點各自擁有獨立的時鐘源(如MCU內部RC振蕩器),但由于制造工藝差異,…

【Unity筆記02】訂閱事件-自動開門

流程 當玩家移動到觸發區域的時候,門自動打開 事件系統 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class EventSystem : MonoBehaviour {public static EventSystem Instance { get; private set; }…