基础知识题
这些题通常出现在笔试开头,重点考察对数字逻辑、电路特性、时序约束的理解。
1. 同步复位与异步复位的区别?
-
异步复位:无论时钟是否到来,只要复位信号有效,触发器立即复位。优点是响应快,缺点是容易产生亚稳态。
-
同步复位:只有在时钟上升沿(或下降沿)才复位,便于综合工具优化,推荐在FPGA设计中使用。
2. FPGA中"阻塞赋值"和"非阻塞赋值"的区别?
-
=
(阻塞赋值)按照代码顺序依次执行,常用于组合逻辑。 -
<=
(非阻塞赋值)在时钟沿触发后同时更新,常用于时序逻辑。 -
面试技巧 :写出
always
块内两种赋值的混用场景,展示你理解信号更新顺序。
3. 什么是Setup Time和Hold Time?
-
Setup Time(建立时间):信号在时钟沿到来之前需要稳定的最短时间。
-
Hold Time(保持时间):时钟沿到来之后,信号保持稳定的最短时间。
-
FPGA的时序约束主要是围绕这两个参数展开。
二、Verilog HDL常考题
1. 设计一个可综合的时钟分频器。
module clk_div (
input wire clk,
input wire rst_n,
output reg clk_out
);
reg [23:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 24'd0;
else
cnt <= cnt + 1'b1;
end
assign clk_out = cnt[23]; // 分频
endmodule
解析:这类题常考逻辑严谨性与可综合性。面试官会追问如何避免毛刺、如何动态设置分频比。
2. 用Verilog实现一个带使能信号的计数器。
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
count <= 0;
else if (en)
count <= count + 1;
end
面试延伸:如何设计一个可上下计数、可加载初值的版本?
三、时序分析与约束
1. 什么是多周期路径(Multicycle Path)?
当数据路径跨越多个时钟周期才完成传输时,需要指定"多周期约束"。
例如一个信号2个周期后才稳定,可在XDC中设置:
set_multicycle_path 2 -from [get_clocks clk] -to [get_clocks clk]
2. 如何解决时序违例?
-
减少逻辑级数
-
插入寄存器打拍
-
调整约束、合理规划时钟树
-
优化综合和布局布线策略
四、综合与实现类问题
1. 如何减少FPGA资源占用?
-
合理使用查找表(LUT)
-
使用DSP Slice实现乘法
-
共用逻辑、移位寄存器替代ROM
-
优化状态机编码方式(如One-hot或Gray编码)
2. FPGA中RAM的推断技巧?
-
使用双端口RAM模板
-
避免异步读写
-
确保综合工具能正确识别RAM结构
五、工程实战与调试类题
1. 现场调试时,FPGA程序能下载但逻辑不工作,如何排查?
-
检查时钟、复位信号
-
检查引脚约束与电平标准
-
确认IO方向、时序是否匹配外设
-
借助ILA(Integrated Logic Analyzer)抓取波形
2. 如果FPGA设计需要与CPU通信,常见的接口方式有哪些?
-
AXI、APB、Wishbone、PCIe、SPI、UART等
-
面试官常考:你是否了解AXI4-Lite总线的读写握手时序?
六、开放性思考题
1. 如果让你设计一个"可配置的PWM控制模块",你会如何规划架构?
建议回答:采用参数化设计思想,将频率、占空比等作为可配置寄存器;通过寄存器配置实现动态调整输出波形。
2. FPGA项目中,你如何进行模块化设计?
从顶层到子模块:时钟管理 → 数据采集 → 逻辑处理 → 接口通信。
强调可复用性、可综合性、仿真可验证性。
七、总结
FPGA岗位的面试,考的不是死记硬背,而是对数字逻辑与硬件实现思维的理解 。
建议准备面试时多练:
-
熟悉常见模块的手写实现(分频器、计数器、状态机)
-
能看懂综合报告与时序分析报告
-
掌握Vivado/Quartus的基础调试手段
宸极教育 长期专注于FPGA工程师培养,从数字电路基础到完整项目实战,帮助学员快速进入岗位。
如果你正在准备FPGA笔/面试,不妨收藏本文,多练几遍这些题目------打好硬件设计的基本功,才是迈向高薪FPGA岗位的第一步。
💡相关推荐:
