凡亿教育-小燕
凡事用心,一起进步
打开APP
公司名片
凡亿课堂 | 面试指南
当前位置: 首页 面试指南
FPGA状态机怎么写?一段式两段式三段式区别?状态编码怎么选?FPGA面试
浏览量:212
2026-09-23 16:24:13
一句话答案

状态机分一段式(时序+组合混写)、两段式(时序状态寄存器+组合输出)、三段式(时序状态寄存器+组合次态+时序输出);推荐三段式,输出寄存器化无毛刺;状态编码用二进制(省资源)或独热码(快、译码简单)。

本文概述

状态机是 FPGA 设计核心,面试常考:一段两段三段区别、状态编码、输出毛刺。回答要讲清三段式结构和优势。

核心要点

  • 一段式:一个 always 块混写时序和组合,简单但易出毛刺

  • 两段式:时序状态寄存器 + 组合逻辑(次态+输出),输出可能有毛刺

  • 三段式:时序状态寄存器 + 组合次态 + 时序输出,输出寄存器化无毛刺,推荐

  • 状态编码:二进制(省触发器)、独热码(译码简单、快)、格雷码(减少翻转)

  • 状态机要完整:复位态、所有转移、默认态

屏幕显示状态机状态转移图和 Verilog 代码,FPGA 开发板

面试官:三段式状态机为什么推荐?输出为什么不会有毛刺?

面试官考察点

FPGA 基础题。面试官看你是否理解状态机写法。重点听:输出寄存器化、三段结构。

回答思路

讲三段式结构,输出用寄存器所以无毛刺。

参考回答

三段式结构。

// 第一段:时序逻辑,状态寄存器
always @(posedge clk) begin
  if(!rst_n) curr_state <= IDLE;
  else curr_state <= next_state;
end

// 第二段:组合逻辑,次态判断
always @(*) begin
  case(curr_state)
    IDLE: if(start) next_state = WORK;
    WORK: if(done) next_state = IDLE;
    default: next_state = IDLE;
  endcase
end

// 第三段:时序逻辑,输出寄存器
always @(posedge clk) begin
  case(next_state) // 或 curr_state
    IDLE: out <= 0;
    WORK: out <= 1;
  endcase
end

为什么输出无毛刺。

  • 一段/两段式输出是组合逻辑,状态转移瞬间多个信号变化可能产生竞争冒险(毛刺);

  • 三段式输出用寄存器(D 触发器),只在时钟沿更新,时钟之间保持稳定;

  • 寄存器输出没有组合逻辑毛刺,适合驱动外部器件(如 SPI 时钟、片选)。

写法结构输出适用
一段式1 个 always组合/时序混合简单状态机
两段式时序+组合组合(可能毛刺)内部逻辑
三段式时序+组合+时序寄存器(无毛刺)推荐,外部输出

状态编码。

编码特点适用
二进制触发器少,译码复杂状态多、资源紧张
独热码 one-hot每个状态 1 个触发器,译码简单状态少、速度要求高
格雷码每次只变 1 位,减少翻转功耗低功耗、异步跨时钟

注意。

  • 状态机一定要有默认态(default),防止综合出锁存器;

  • 复位态要明确,上电进入 IDLE;

  • 状态转移条件要完整,不要有死状态;

  • 复杂状态机可以分子状态机(分层)。

面试官可能追问

追问 1:一段式为什么不推荐?
时序和组合混在一个 always,代码难维护,输出可能有毛刺,综合工具难优化。
追问 2:独热码为什么快?
独热码每个状态一个触发器,次态判断只看一个 bit,不需要译码器,延迟小。
追问 3:状态机输出用 curr_state 还是 next_state?
第三段用 next_state 可以提前一拍输出(Mealy 型),用 curr_state 是 Moore 型。看需求。
追问 4:Mealy 和 Moore 区别?
Moore 输出只和状态有关,Mealy 输出和状态+输入有关。Mealy 响应快但可能有毛刺,Moore 稳定但慢一拍。
追问 5:状态机怎么验证?
写 testbench 覆盖所有状态转移,看状态跳变和输出是否正确。

常见失分表达

✗ 状态机没有 default — 综合出锁存器,状态不确定。
✗ 外部输出用组合逻辑 — 毛刺导致外部器件误触发。
✗ 状态编码随便选 — 状态多用独热码浪费资源,状态少用二进制译码慢。

准备动作

1
写一个三段式状态机(如 SPI 控制器)
2
准备一个状态机毛刺最终改三段式解决的案例
3
了解独热码和二进制编码综合结果

核心关键词

状态机三段式一段式两段式独热码MealyMoore


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。 侵权投诉

相关文章

单片机面试:看门狗怎么设计才真的有用?主循环喂狗反而可能掩盖故障

2026-10-17 15:21:22

Boost升压电路怎么设计?电感选型与峰值电流怎么做?电源工程师面试

2026-09-07 10:39:15

MOSFET栅极振铃怎样排查?硬件面试别只回答“加大栅极电阻”

2026-07-30 09:54:18

一块板能焊好,却不好返修:PCB布局的维修空间到底应该怎么评审?

2026-10-28 20:35:25

PCB仿真面试:模型为什么要还原焊盘、过孔和走线几何?寄生参数会怎样影响结果

2026-10-23 14:08:33