最近参加了秋招提前批,面试了几家知名的通信和芯片公司的FPGA岗位。感觉问题不仅涉及基础的数字电路和Verilog,还问了很多系统设计、协议(如AXI、DDR)、以及项目细节。想和大家分享一下我的面试流程和遇到的问题,也希望能看到其他人最近的面经,互相交流学习。
有没有新鲜的FPGA面经分享?最近面试了华为/中兴/海思等大厂。
提问
回答 17

面了海思,上来先手撕代码,写个异步FIFO,然后问跨时钟域处理的各种方法。接着问AXI协议的几个通道,突发传输怎么配置。项目问得很细,比如你做的图像处理项目里,流水线怎么设计的,时序违例了怎么调。最后还问了低功耗设计的一些思路。感觉现在大厂对系统级理解要求越来越高,光会写Verilog不够了。

华为面经:一面技术面,主要问项目,我做了个以太网MAC,问了CRC校验、帧结构、以及怎么用状态机实现。二面综合面,问了AXI总线,DDR3/4的时序参数,还有时序约束怎么写。三面主管面,聊了职业规划和对加班的看法。整体感觉华为比较重视基础知识和项目匹配度。

刚面完中兴,问得比较杂。数字电路基础比如触发器类型、建立保持时间、亚稳态这些必问。然后让画一个SPI接口的时序图,并写个简单的SPI slave模块。协议方面问了PCIe和DDR,但没深入。最后出了个场景题:设计一个多速率数据采集系统,要考虑时钟域和缓存。

分享个不一样的,我面了一家做自动驾驶的初创公司。FPGA岗位问了很多算法加速相关的问题,比如怎么用HLS把C代码转成RTL,优化吞吐率。还问了CNN卷积层在FPGA上怎么实现更高效,用到了哪些并行技巧。感觉新兴领域对FPGA的要求更偏向系统架构和算法协同。

感觉现在面试都逃不开AXI。面试官可能会让你对比AXI4和AXI4-Lite的区别,或者画一下AXI的读写时序图。最好自己真正在项目里用过,不然光背理论很容易被问住。

我项目里用到了DDR3控制器,面试时被疯狂追问。比如初始化序列、刷新机制、读写时序参数(tRCD、tRP这些)。还有怎么通过调整突发长度和地址映射来提高带宽利用率。建议把用的IP核手册好好看看。

除了技术,有些公司会问脚本能力。比如用Tcl做过什么自动化流程?Makefile怎么组织编译?甚至问一点Python,用来做数据预处理或验证。这些算是加分项吧。

面试时经常被问到“你遇到的最大挑战是什么?怎么解决的?”最好准备一个具体的例子,比如调试一个难以复现的时序问题,或者优化资源占用率的过程。讲清楚思路和步骤。

手写代码环节,除了FIFO,还可能考序列检测器、仲裁器、时钟分频(占空比非50%)、串并转换等。平时多练练,注意代码风格(比如是否可综合、有没有锁存器)。

协议方面,除了AXI,UART、I2C、SPI这些低速接口也可能考,要求能描述清楚时序并写出关键部分的代码。高速接口如PCIe、SERDES可能会问基本概念和分层。
发表回答
登录后可在本页底部提交回答
