4.6 状态机
有限状态机
有限状态机(Finite State Machine, FSM)是时序逻辑的抽象模型,由以下要素构成:
- 状态:有限个可能的状态
- 输入:外部输入信号
- 输出:取决于当前状态和输入
- 状态转移:定义当前状态+输入如何决定下一状态
硬件实现
FSM 在硬件中的实现需要两个组成部分:
- 组合逻辑:计算下一状态(和输出)
- 时钟寄存器:保存当前状态
基本连接关系:
输入 $──→ [$组合逻辑$] ──→$下一状态 $──→ [$时钟寄存器$] ──→$当前状态 $──→ ...$
↑ 时钟信号
组合逻辑的输入是”当前状态”和”外部输入”,输出是”下一状态”和”最终输出”。时钟寄存器在每个上升沿将”下一状态”锁存为”当前状态”。
示例:计数器
一个简单的计数器可以看作 FSM 的特例——状态就是计数值,在每次时钟上升沿递增:
当前计数值 $──→ [$加法器(+1)$] ──→$下一计数值 $──→ [$寄存器$] ──→$当前计数值
↑ 时钟
状态机与流水线
SEQ处理器的控制逻辑本质上就是一个大型 FSM:每个时钟周期完成一条指令的完整执行(取指译码执行访存写回更新PC),并在周期末尾更新 PC和寄存器文件。流水线处理器则将这个 FSM拆分为多个阶段,每个阶段有自己的状态寄存器(流水线寄存器)。
状态编码
- 每个状态用唯一的二进制编码表示
- 编码宽度取决于状态数量(n 个状态需至少 ceil(log₂n) 位)
- 编码方式影响组合逻辑的复杂度
相关笔记
链接到
- 上一个知识点:4.5 寄存器与寄存器文件
- 下一个知识点:4.7 SEQ处理器