第四章

有限状态机设计

掌握控制逻辑的系统化设计方法,建立状态机工程思维

一、本章导航

二、本章定位

本章是控制逻辑核心章节。重点是把需求抽象为状态关系,并用规范方式实现和验证 FSM。

  • 什么是有限状态机?
  • 状态、输入、输出之间是什么关系?
  • Moore 型与 Mealy 型如何选择?
  • 如何避免状态遗漏和逻辑冲突?

三、知识点讲解

1. FSM 设计方法

1.1 FSM 的基本概念与设计流程

FSM 通过状态、输入、输出和状态转移组织控制逻辑,是数字系统中处理时序控制问题的常用方法。

典型流程为:需求分析 → 状态划分 → 状态图整理 → 编码实现 → 仿真验证。流程清晰后,复杂控制任务会更可控。

1.2 疑难点:Moore 型与 Mealy 型怎么选

Moore 型输出只依赖状态,输出稳定性较好;Mealy 型输出依赖状态与输入,响应通常更快,但需关注毛刺与时序风险。

选型建议:优先稳定可维护可选 Moore,优先响应速度且可控时序风险可选 Mealy。

2. FSM 设计实例

2.1 从需求到状态图的完整路径

实例学习的关键不是抄代码,而是理解如何把需求事件转换为状态与转移条件,再转换为可验证代码结构。

状态图用于表达逻辑结构,也用于发现不可达状态、冲突条件和遗漏路径,是设计质量检查的重要工具。

2.2 疑难点:状态划分过多或过少怎么办

状态过少会让单状态职责过重,条件复杂且难维护;状态过多会让管理成本高、结构分散。应按功能阶段划分,保证每个状态职责单一。

当你发现不断给转移条件打补丁时,往往是状态划分存在问题,应回到需求重新建模。

3. 数字系统设计原则与技巧

3.1 实现规范与稳定性保障

FSM 设计不仅要能运行,还要可读、可调、可维护。状态编码、默认分支、异常状态处理和输出一致性都会影响最终质量。

仅关注状态转移而忽略输出逻辑,容易造成边界行为错误。输出逻辑必须与状态语义保持一致。

3.2 疑难点:如何避免遗漏、冲突和不一致

建议为每个状态明确进入条件、保持条件、退出条件,并为异常状态设置可恢复路径。这样可降低不确定行为。

验证时至少覆盖正常路径、边界路径和异常路径。若只覆盖主流程,常见隐患很难被发现。

四、重难点汇总

  1. 1

    FSM 基本概念与流程

    查看原文

    建立控制逻辑建模主线

  2. 2

    状态图的工程作用

    查看原文

    用于组织逻辑并检查遗漏

  3. 3

    实现规范

    查看原文

    保障可维护性和行为一致性

  4. 4

    需求抽象为状态关系

    查看原文

    先提炼事件,再按功能阶段划分状态

  5. 5

    Moore/Mealy 选择

    查看原文

    按稳定性、响应速度和时序风险综合判断

  6. 6

    避免状态遗漏与冲突

    查看原文

    补齐默认路径与异常恢复策略,并覆盖边界验证