name: fsm-design description: 专门用于FPGA中有限状态机设计与优化的技能 allowed-tools:
- Read
- Write
- Edit
- Glob
- Grep
- Bash
FSM 设计技能
概述
专门用于有限状态机(FSM)设计与优化的技能,确保在FPGA设计中实现稳健高效的控制逻辑。
能力
- 设计摩尔机和米利机
- 应用状态编码(独热码、二进制、格雷码)
- 实现非法状态恢复
- 生成状态图和转换表
- 针对面积或速度优化FSM
- 应用安全的FSM编码模式
- 使用断言调试FSM行为
- 处理多时钟域的FSM
目标流程
- fsm-design.js
- rtl-module-architecture.js
- vhdl-module-development.js
- verilog-systemverilog-design.js
使用指南
FSM 类型
- 摩尔机:输出仅取决于当前状态
- 米利机:输出取决于状态和输入
- 寄存器输出:具有寄存器输出的米利机,用于时序控制
状态编码
- 独热码:速度快,组合逻辑少,触发器多
- 二进制:紧凑,触发器最少,逻辑更多
- 格雷码:适用于时钟域交叉,单比特转换
- 自定义:针对特定优化需求
安全FSM模式
- case语句中显式指定默认状态
- 非法状态检测与恢复
- 同步复位到已知状态
- 避免锁存器(覆盖所有情况)
- 使用枚举类型提高可读性
VHDL 风格
type state_type is (IDLE, RUN, DONE);
signal state, next_state : state_type;
Verilog 风格
localparam [1:0] IDLE = 2'b00, RUN = 2'b01, DONE = 2'b10;
reg [1:0] state, next_state;
优化策略
- 最小化状态位以节省面积
- FPGA中使用独热码以提高速度
- 流水线化深度组合逻辑
- 考虑状态拆分以满足时序要求
依赖项
- FSM分析工具
- 综合属性知识
- HDL编码标准