4.6 状态机

有限状态机

有限状态机(Finite State Machine, FSM)是时序逻辑的抽象模型,由以下要素构成:

  • 状态:有限个可能的状态
  • 输入:外部输入信号
  • 输出:取决于当前状态和输入
  • 状态转移:定义当前状态+输入如何决定下一状态

硬件实现

FSM 在硬件中的实现需要两个组成部分:

  1. 组合逻辑:计算下一状态(和输出)
  2. 时钟寄存器:保存当前状态

基本连接关系:

输入 $──→ [$组合逻辑$] ──→$下一状态 $──→ [$时钟寄存器$] ──→$当前状态 $──→ ...$
                                    ↑ 时钟信号

组合逻辑的输入是”当前状态”和”外部输入”,输出是”下一状态”和”最终输出”。时钟寄存器在每个上升沿将”下一状态”锁存为”当前状态”。

示例:计数器

一个简单的计数器可以看作 FSM 的特例——状态就是计数值,在每次时钟上升沿递增:

当前计数值 $──→ [$加法器(+1)$] ──→$下一计数值 $──→ [$寄存器$] ──→$当前计数值
                                                 ↑ 时钟

状态机与流水线

SEQ处理器的控制逻辑本质上就是一个大型 FSM:每个时钟周期完成一条指令的完整执行(取指译码执行访存写回更新PC),并在周期末尾更新 PC和寄存器文件。流水线处理器则将这个 FSM拆分为多个阶段,每个阶段有自己的状态寄存器(流水线寄存器)。

状态编码

  • 每个状态用唯一的二进制编码表示
  • 编码宽度取决于状态数量(n 个状态需至少 ceil(log₂n) 位)
  • 编码方式影响组合逻辑的复杂度

相关笔记

链接到