FPGA 经典面试题目及答案汇总

这些经典题目,你刷到过几个?

做 FPGA 的都知道一句话:

简历能不能过,面试能不能稳,很多时候就卡在这些"老题"上。

本文整理了一批 FPGA 岗位高频、经典、反复出现的面试题目 ,涵盖
数字电路 / Verilog / 时序 / 综合 / 工程实践 等核心方向,适合:

  • FPGA 校招 / 社招

  • 笔试前集中刷题

  • 面试前快速自检

如果这些题你基本都能答清楚,说明基础已经过线


一、数字电路基础(必问)

1️⃣ 什么是时序电路?和组合逻辑的区别?

答:

  • 组合逻辑:输出只与当前输入有关

  • 时序逻辑:输出与**当前输入 + 历史状态(寄存器)**有关

    FPGA 设计中,绝大多数模块都是时序逻辑


2️⃣ D 触发器的作用是什么?

答:

在时钟沿到来时,对输入数据进行采样并保持,用于

  • 数据存储

  • 时序隔离

  • 构建状态机

FPGA 内部的基本存储单元就是 D 触发器。


3️⃣ 建立时间和保持时间是什么?

答:

  • 建立时间(Setup):时钟沿到来前,数据需要稳定的时间

  • 保持时间(Hold):时钟沿到来后,数据需要继续稳定的时间

违反会导致亚稳态


二、Verilog 语法与编码习惯

4️⃣ 阻塞赋值和非阻塞赋值的区别?

答:

  • = 阻塞赋值:按顺序执行,常用于组合逻辑

  • <= 非阻塞赋值:并行更新,必须用于时序逻辑

面试黄金原则:

always @(posedge clk) 中只能用 <=


5️⃣ always @(*) 有什么作用?

答:

自动包含所有右值信号,避免漏敏感信号导致锁存器推断


6️⃣ 什么情况下会推断锁存器?

答:

  • 组合逻辑中

  • if / case 没有覆盖所有条件

  • 输出在某些分支下未赋值

锁存器在 FPGA 设计中通常是错误的结果


三、时序与时钟相关(高频)

7️⃣ 什么是同步设计?

答:

所有时序逻辑由同一个时钟或已约束的时钟域 驱动,

是 FPGA 设计的基本原则。


8️⃣ 跨时钟域如何处理?

答:

  • 单 bit 控制信号:两级触发器同步

  • 多 bit 数据:

    • 异步 FIFO

    • 握手机制

直接跨域采样是严重设计错误


9️⃣ 时钟抖动和时钟偏斜有什么区别?

答:

  • 抖动(Jitter):时间上的不确定性

  • 偏斜(Skew):同一时钟到达不同寄存器的时间差

都会影响时序裕量。


四、FSM(状态机)

🔟 状态机一般有哪几种写法?

答:

  • 一段式

  • 两段式(推荐)

  • 三段式(工程最常用)

三段式:
状态寄存 → 状态跳转 → 输出逻辑


1️⃣1️⃣ Moore 和 Mealy 状态机区别?

答:

  • Moore:输出只与状态有关,稳定

  • Mealy:输出与状态 + 输入有关,响应快

FPGA 工程中 Moore 更常用


五、综合与实现相关

1️⃣2️⃣ FPGA 中的 RAM 是如何实现的?

答:

  • 小容量:寄存器

  • 中等容量:LUT RAM

  • 大容量:Block RAM

综合器会根据代码风格自动推断。


1️⃣3️⃣ 什么是资源利用率?

答:

FPGA 中 LUT、FF、BRAM、DSP 等资源的使用比例,

直接影响:

  • 是否能放得下

  • 是否还能扩展


1️⃣4️⃣ 为什么时序过不了?

答:

常见原因:

  • 组合逻辑路径过长

  • 时钟频率设置过高

  • 跨时钟域处理不当

优化手段:
流水线、逻辑拆分、降低扇出


六、工程与经验题(拉开差距)

1️⃣5️⃣ FPGA 调试常用手段?

答:

  • 仿真(功能正确性)

  • ILA / SignalTap(板级调试)

  • 分模块验证

不会用 ILA 的 FPGA 工程师,基本不过关。


1️⃣6️⃣ 为什么"仿真能跑,板子不行"?

答:

  • 复位不规范

  • 时钟不稳定

  • 跨时钟域问题

  • 未约束 IO 或时序

板级问题 80% 是时序和复位


七、总结

这些题目没有一个是"偏门",

每一个都是真实面试中反复出现的内容

如果你发现:

  • 能看懂题

  • 但说不清答案

  • 或者只能模糊描述

那说明 基础还需要系统补一轮

相关推荐
前端双越老师2 小时前
自由职业者 2025 年终总结:转型 AI 全栈
面试·ai编程·全栈
努力学算法的蒟蒻2 小时前
day41(12.22)——leetcode面试经典150
算法·leetcode·面试
yaoh.wang12 小时前
力扣(LeetCode) 88: 合并两个有序数组 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·双指针
LYFlied13 小时前
【每日算法】 LeetCode 56. 合并区间
前端·算法·leetcode·面试·职场和发展
yaoh.wang17 小时前
力扣(LeetCode) 100: 相同的树 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
周星星日记17 小时前
vue中hash模式和history模式的区别
前端·面试
小丑75517 小时前
Vue 转盘抽奖 transform
面试
爱编程的小吴18 小时前
【力扣练习题】热题100道【哈希】 最长连续序列
算法·leetcode·职场和发展
Java水解20 小时前
MySQL索引分析以及相关面试题
后端·mysql·面试