文章目录

  • 有限状态机(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; }…