凡亿助教-六六
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 多路电源上电时序搞错,芯片直接报废
多路电源上电时序搞错,芯片直接报废

说出来都是泪。上个月我负责的一个项目,板子回来后一上电, FPGA 直接发烫 — — 手摸上去烫得缩回来那种。断电再检查,发现芯片已经彻底报废了。查了整整两天,最后抓波形才发现:VCCINT 比 VCCAUX 早了 80ms 上电。就这 80ms,让芯片内部形成了寄生通路,电流直接灌进去把硅片烧穿了。

这事儿搁谁身上都挺郁闷的。明明原理图检查过三遍,电压值也都对,偏偏就栽在「上电顺序」这种看似常识的问题上。

上电时序为什么这么重要

现代芯片的供电系统早就不是「给电就干活」那么简单了。一颗 FPGA 或者 SoC,内部可能同时需要 1.0V、1.8V、2.5V、3.3V 好几路电压。这些电压之间可不是谁先谁后都行的,它们之间有着严格的时序要求。

拿 Xilinx 7 系列 FPGA 来说吧,官方文档里写得明明白白:VCCAUX 必须在 VCCINT 之前达到工作电压的 90%。如果反过来,IO 电压或者辅助电压先上,核心电压还没准备好,芯片内部的 ESD 保护电路就会形成意外的导通路径。这个路径一旦形成,几百毫安的电流就会在芯片内部乱窜,运气好的话芯片只是启动失败,运气不好——就像我这次一样——直接冒烟报废。

这种情况业界有个专门的名字,叫「闩锁效应」(Latch-up)。原理上来说,当 CMOS 工艺的芯片衬底电位异常时,会触发内部寄生的晶闸管结构,形成低阻抗通路。在很短的时间内就能产生很大的热量,把金属互连线或者硅衬底烧穿。

61af439abd0ac3bbcce5b3515dffc2.jpg

图1:FPGA 典型上电时序要求

常见的时序错误

我观察过不少项目,发现时序问题主要集中在以下几个方面:

IO 电压先于核心电压上电。这是最常见的一种错误。设计者可能觉得「反正都是 3.3V,先上后上有什么关系」,结果 I/O 单元在核心还没就绪的情况下就尝试驱动总线,产生不确定电平,进而引发总线争用或者芯片闩锁。

负压偏置时序不对。有些射频芯片或者 DDR 内存需要负压辅助供电,比如 -0.3V 的 VREF。如果负压建立太晚,信号参考点就不对,轻则性能下降,重则直接损坏接口电路。

断电顺序与上电顺序不匹配。很多工程师只关注开机,忽略了关机。其实断电时序同样重要,如果某个电压域先于依赖它的电路关闭,可能导致反向电流倒灌。有些芯片手册里会明确要求「断电顺序必须与上电顺序相反」,这点很容易被忽略。

电源斜率不单调。这条可能比较细节。某些芯片要求电源电压在上升过程中不能出现下坠,也就是「单调递增」(monotonic)。如果电压在上升过程中有一丁点抖动,可能触发欠压保护,导致芯片反复重启。

怎么控制上电时序

既然时序这么重要,那实际设计中怎么实现呢?根据我的经验,主要有以下几种方案,各有优缺点。

方案一:PG 信号级联。这是最简单的一种思路。前一级电源芯片输出「Power Good」信号,作为下一级电源的使能输入。当第一路电压稳定后,PG 脚拉高,第二路才开始启动。这种方案成本低,不需要额外的控制芯片,但灵活性差一些,延时范围受限于电源芯片本身的响应速度。

344a8daeb742a56fb03a292bf7d63f.jpg

图2:PG 信号级联控制示意

方案二:RC 延时电路。用电阻和电容组成延时网络,控制 MOSFET 的栅极电压上升速度,从而控制电源使能时间。这种方案成本最低,但精度差,受温漂影响大。我之前有个项目用 RC 延时控制 FPGA 的上电时序,在常温下工作正常,一到高低温测试就出问题 — — 温度一高电容容值飘了,时序偏差能超过 20%。

方案三:专用时序控制芯片。这是最可靠的方案。TI、ADI、Maxim 这些厂商都有专门的电源时序管理芯片,比如 TI 的 TPS389xx 系列、ADI 的 ADM1266。这类芯片可以同时管理多路电源,支持独立设置每路的启动延时,有些高端型号还支持 I²C 动态配置。调试的时候可以通过总线读取状态寄存器,快速定位是哪一路出了问题。

2debf3eaa6e563b97084cdbc355b9b.jpg

图3:专用时序控制器典型应用

方案四:GPIO 软件控制。如果主控芯片在上电过程中已经工作(比如 MCU),可以用 GPIO 来控制各路电源的使能脚。这种方案灵活性最高,可以实现复杂的条件分支逻辑 — — 比如「只有当 A 和 B 都正常时才开启 C」。缺点是主控芯片本身的供电必须最先稳定,如果主控挂了,后面的电源时序就全乱了。

热插拔场景下的时序保护

还有一种场景很容易被忽视:热插拔。有些工业应用里,模块需要在系统运行时插入或拔出。这种情况下,主板上的电压可能一直存在,插入瞬间模块内部的各路电源会同时面对外部电压。

热插拔最怕的就是「某路电源先上、依赖它的电路还没就绪」。解决方案通常是在每一路电源入口加缓启动电路,比如用热插拔芯片控制 MOSFET 的导通速度,确保电压按顺序依次建立。同时还要加 TVS 二极管做浪涌防护,防止插拔瞬间产生的尖峰电压击穿芯片。

示波器抓波形的技巧

说到这里,可能有人会问:怎么才能确认自己的时序设计是正确的?我的经验是用示波器同时抓取所有关键电压轨的上电波形。

有几条小技巧分享给大伙:

探头尽量使用接地弹簧,而不是长接地夹。长接地夹会引入寄生电感,抓到的波形会有振铃,干扰判断。

触发方式建议用电源输入的上升沿作为触发源,设置为单次触发,这样能抓到完整的上电过程。

测量点最好选在芯片引脚附近,而不是电源模块输出端。因为从电源模块到芯片引脚之间还有走线和滤波电容,时序可能有一定偏差。

观察的时候重点关注三个指标:各路电压的上升时间时序间隔是否符合手册要求是否存在电压过冲或下坠。特别提醒一点:有些示波器的触发位置会影响显示的时间关系,建议把光标测量功能用上,手动计算各路电压达到 90% 目标值的时间差。

0492f46d7c42065020de00e82d8f8a.jpg

图4:多路电源上电波形实测

好了,啰嗦了这么多,其实就是想提醒一句:多路电源系统的上电时序设计,看起来是小学问,但真出问题的时候代价很大 — — 一颗 FPGA 动不动几百块,调试时间更是无法估量。我的建议是:设计阶段就严格按照芯片手册来做,时序控制宁可保守一点,延时留足余量,也别省那点成本侥幸心理。

最后补充一点:本文讨论的主要是上电时序,但实际项目中还有一个「下电时序」的问题。很多芯片手册会要求下电顺序与上电顺序相反,特别是有 DDR 内存的系统,关闭顺序不对可能导致数据丢失。这个话题比较大,下次有机会再展开聊。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论