FSM 的基本概念与设计流程
第四章
有限状态机设计
掌握控制逻辑的系统化设计方法,建立状态机工程思维
一、本章导航
二、本章定位
本章是控制逻辑核心章节。重点是把需求抽象为状态关系,并用规范方式实现和验证 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 疑难点:如何避免遗漏、冲突和不一致
建议为每个状态明确进入条件、保持条件、退出条件,并为异常状态设置可恢复路径。这样可降低不确定行为。
验证时至少覆盖正常路径、边界路径和异常路径。若只覆盖主流程,常见隐患很难被发现。