ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MLCC选型实战:从DC-DC滤波到FPGA去耦的电源完整性设计

MLCC选型实战:从DC-DC滤波到FPGA去耦的电源完整性设计 干了这么多年硬件我几乎每次遇到FPGA或者大电流DCDC的电源问题最后追查下来一半以上都死在MLCC选型上。不是容量不够就是用的不对或者干脆是排容布板出了幺蛾子。有一回一个板子FPGA的VCCINT电压纹波怎么压都压不下去换了好几种电容组合最后发现罪魁祸首居然是几颗0402的MLCC放在了离BGA过孔特别远的位置感抗把整个去耦网络的性能给废掉了。这就是我写这篇指南的初衷。电源完整性这个事尤其是MLCC的选型真的是个“细节决定成败”的活。这里不讲虚的也不搞科研式的长篇论述我把这几年在DC-DC输出滤波、FPGA多轨电源去耦上积累的经验、踩过的坑、算过的数还有对着阻抗曲线发呆总结出来的那点心得全部扒出来给你。这篇文章适合正在做数字电路硬件设计、电源设计或者被FPGA供电折磨过的工程师看。看完你起码能搞清楚这几件事MLCC到底是怎么工作的为什么不同容量的电容要并联怎么估算一个DCDC或者FPGA内核电源到底需要多大容值的MLCC以及贴片位置怎么放才不算白贴。内容我尽量用大白话但该给的公式和计算步骤一点不会少。1. 先搞懂MLCC在电源链路里的真实角色1.1 理想电容和现实电容的差距看任何一本教科书电容的定义就是CQ/V两个导体中间夹个绝缘介质简单干净。但实际用在电路里的MLCC不是这么回事。一颗真实的MLCC里面是有寄生参数的。等效模型大概是这样的一个理想电容C串联一个等效串联电阻ESREquivalent Series Resistance再串联一个等效串联电感ESLEquivalent Series Inductance整体再并联一个绝缘电阻IR。ESR的来源是电极材料、端电极焊接点和介质损耗ESL的来源就更有意思了它是电流流过电容内部电极板、外部端子和连接过孔时形成的感性路径。这导致了什么结果真实的电容不再是一个“纯容性”器件它的阻抗随频率变化是先降后升的V字形曲线低频段表现为容性阻抗随频率升高而降低过了自谐振频率点之后表现为感性阻抗随频率升高而升高。这个转折点就是自谐振频率简称SRFSelf-Resonant Frequency。很多工程师只看容量大小去买电容忽略了这个最基本的事实。你拿一颗10uF的MLCC去给FPGA的2A高速动态负载去耦在100MHz这个频点上它可能已经工作在自谐振频率以上了表现的根本不是一个电容而是一个电感。我打个比方。你拿一个水桶去接水池的水水桶本身是容器这就是容量但你往水桶上装了个细细的弯脖子水管水要通过这个细管子才能倒出去这个管子就是ESL。低频的时候水池水位波动慢细管子没啥影响水桶能稳稳提供水量可一旦高频抽水细管子就限制了水流速度水桶里有水也倒不出来。这就是为什么电源完整性设计里MLCC选型特别讲究“频率覆盖”和“并联组合”因为单颗电容的工作频段是有限的。1.2 自谐振频率和阻抗曲线再细看下SRF的计算公式f_SRF 1 / (2π√(L_ESL × C))从这个公式能推断出一些规律。电容容量越大自谐振频率越低电容封装尺寸越小等效串联电感越小自谐振频率越高。比如同样容值的0.1uF电容0402封装的SRF就要比0603封装高因为在相同容量下封装小意味着极片尺寸小、引线短寄生电感更低。这在实际设计中意味着什么呢你在做去耦网络时想要覆盖高频频段单纯增加容量没用得用小的封装或者说是用小封装的小容值电容想要在低频段扛住大的瞬态电流波动又需要大容量的电容但大容量电容本身高频性能差所以必须靠不同容值的电容并联来协同工作。举个例子。0.1uF的0402电容其ESL可能在0.5nH左右计算下来SRF大约是22MHz而10uF的0805电容ESL通常在0.8~1nHSRF就只有1.8MHz左右。看出差距了吧你指望一颗10uF电容处理50MHz的噪声它根本做不到这时候需要的是成百上千颗0.1uF或者更小容值的电容并联或者干脆用Interposer、嵌入式电容等更高级的手段。我在实际项目中做去耦设计时第一步永远是画阻抗曲线把每一颗候选MLCC的阻抗特性画到一张图上看它们的谷底和抬升区然后按照目标阻抗去拼组合。这一步没做后面全是瞎猜。1.3 DC偏压特性容易被忽视MLCC还有一个极其要命的特性就是直流偏压效应。这是由陶瓷介质的铁电特性决定的当给MLCC施加直流电压后其有效电容量会显著下降。这是很多工程师最容易踩的坑。以X5R介质为例一颗额定电压16V的10uF电容施加10V直流偏压后实际电容量可能只剩下4~5uF容量损失超过50%。X7R会稍微好一点但也好不到哪里去在接近额定电压时依然会有30%以上的下降。而温度变化还会在偏压效应之上再叠加一层衰减高温和低温都会让陶瓷介质性能恶化。这个特性对电源设计的影响是致命的。你在原理图上放了一颗10uF的MLCC做DCDC输出滤波觉得余量很大结果实际输出电压是5V电容有效容量只剩一半左右瞬态响应性能大打折扣纹波超标了还找不到原因。所以我选型的时候有一条铁律容量必须按照实际工作电压下的有效值来核算而不是看标称值。在计算总容量之前第一件事就是查所用物料在不同直流偏压下的容量衰减曲线。很多大厂村田、TDK、三星、国巨官网都有这个曲线可以直接下载数据手册或者用在线选型工具查。我自己定过一个简单的经验系数对于普通X5R/X7R如果工作电压是额定电压的一半那么有效容量大概按标称容量的0.6~0.7折算如果工作电压接近额定电压那按0.4~0.5折算。这个系数可以在前期评估时用没法代替准确的datasheet曲线但它能帮你快速判断选型是否靠谱避免后期再返工。2. DC-DC场景大容量MLCC的选型逻辑2.1 稳定输出还是扛瞬态DCDC转换器输出端的电容扮演着双重角色。第一重角色是滤波。DCDC的开关管高速通断输出是脉动的电压电感再平滑开关频率处的纹波电流依然很大电容就是要吸收这部分开关纹波让输出电压的纹波控制在允许范围内。这个场景下看重的是电容的ESR和容量开关频率通常从几百kHz到几MHz对应的频率不算特别高常规MLCC可以应对。第二重角色更重要是扛瞬态。负载电流突然跳变比如数字芯片从待机瞬间切到满载电流变化率高达几十A/μs此时DCDC的反馈环路响应速度跟不上电容就要暂时维持住输出电压扛住这个动态过程。瞬态响应这个事就复杂了它涉及的频率范围很广从低频的几百kHz到高频的几十MHz都有。这就意味着在DCDC输出端你不能只放一堆大容量电容还得搭配一些中等容量和小容量的电容形成多级去耦。很多工程师习惯“输出端全是大水塘”这个思路放在DCDC的负载端去耦上是远远不够的。我自己见过最典型的反面教材就是给DCDC输出放了8颗22uF的大容量MLCC全是0805封装没有一颗小于4.7uF的。静态情况下纹波确实很好看几毫伏级别可是一加载动态负载电压瞬态跌落超过80mV。究其原因就是所有电容的自谐振频率重叠在了一个狭窄的低频区域高频段的阻抗完全没压下去。2.2 ESR、容量与环路补偿的关系DCDC输出端的MLCC选择不只是影响纹波和瞬态还直接牵扯到整个开关电源的环路稳定性。这一点很多人没想明白。许多DCDC芯片内部集成了误差放大器和补偿网络有的是固定补偿有的是外部补偿。内部补偿的芯片往往对输出电容的ESR和容量范围有明确要求比如“容值必须在22uF-100uF之间ESR必须小于X mΩ”规格书里用文字或表格写得很清楚。如果你随意加大容量或者选用了ESR过低/过高的电容就可能破坏环路的相位裕度导致开关电源出现次谐波振荡。我曾经在一个项目里遇到过诡异的现象一个固定补偿模式的Buck电路空载和重载时输出都正常半载时输出电压却出现了一个大概10kHz的低频振荡用示波器看就像在呼吸一样。查了半天最后发现是工艺改版后把输出的两颗22uF电容换成了一颗47uF的电容等效的ESR降了一大截零点位置移动环路相位裕度不足最终处理方案就是恢复电容组合并把ESR调到规格书要求的范围内。所以DCDC部分的MLCC选型先要看芯片手册。如果手册给了推荐的输出电容组合那这个组合就是经过验证的不要随便动。你要是真的因为成本或者供应链原因要换电容优先用同一容值和同一封装、类似ESR档位的物料要是必须改变容量那一定要做环路稳定性测试。2.3 大容量MLCC到底怎么选DCDC部分既然要大量使用大容量MLCC那具体怎么挑我按自己的习惯说几个关键点。第一是选物料时关注ESR曲线而非极限参数。同一容值的电容不同厂家、甚至同一厂家不同系列的ESR差别能有好几倍。低ESR的电容有利于降低纹波但在某些补偿模式下也不一定是好事要学会看整个频率范围内的ESR曲线而不是只看datasheet首页那个最大值。第二是额定电压要留足降额。MLCC在高温和直流偏压下可靠性会下降行业一般建议降额50%。5V的电源输出选10V额定电压或者16V的电容不建议用6.3V的硬扛。这不仅是出于容量衰减的考虑更是为了防止介质击穿导致短路。第三是关注DC-bias曲线。上面已经说过这段但这里我还是要强调一次。在DCDC输出电容的核算里把DC-bias因素考虑进去之后你才会发现5V输出配16V额定电压的22uF电容实际的电容可能只有14~16uF左右。如果你设计时需要总容量200uF按标称值算可能需要10颗22uF按实际有效值算可能得13~14颗。这就是实物和设计之间经常会看到的差异来源。我一般是在画原理图之前先把这些“有效容量”算好留足设计裕量然后直接在心里有数这路电源贴多少电容是必须的多少是增加可靠性的余量。3. FPGA场景从target impedance反推MLCC组合3.1 为什么FPGA这么难去耦FPGA的去耦比普通数字芯片要麻烦得多原因在于它内部的开关行为极其复杂。拿一颗中等规模的FPGA来说内部可能有上百万的逻辑单元它们由全局时钟网络统一驱动在时钟边沿到来时会同步翻转。这意味着FPGA内核的电流消耗不是一个平滑的过程而是密集的高频脉冲式变化其频谱从几MHz一直延伸到几百MHz甚至GHz级别。这种宽频带动态电流会让电源网络持续处于“高负荷”状态传统“多加几颗电容”的做法根本压不住。再一个原因FPGA的I/O数量庞大高速SerDes、DDR接口、LVDS信号等同时工作时参考电压VREF和I/O电源上的噪声会被直接耦合到高速信号上导致眼图恶化误码率上升。这时电源噪声的问题就转化为信号完整性问题了。第三现在高性能FPGA的功耗动不动几十瓦核心电压VCCINT只有0.85V左右但电流能冲到几十安培。根据欧姆定律同样50mV的压降预算在1.8V电源上允许的阻抗约为27.8mΩ而在0.85V电源上只允许约1.7mΩ。这个阻抗目标差距极其悬殊低压大电流轨道的去耦难度完全是另一个量级的。所以FPGA去耦的核心思想是设定一个允许的最大电源阻抗target impedance然后通过MLCC组合、PCB平面和封装结构把整个供电网络的阻抗压到目标值以下。3.2 目标阻抗怎么估算目标阻抗的计算方法业界有一个人尽皆知但也常常被用错的公式Z_target (VDD × ΔV%) / ΔI参数含义VDD是电源电压ΔV%是允许的电压波动比例ΔI是负载瞬态电流的变化幅度。举个例子一个FPGA内核电源VCCINT为0.85V允许±3%的电压波动即25.5mV瞬态电流变化从10A跳到40A即ΔI30A。计算结果为0.85×0.03/30 0.85mΩ。这意味着从电源芯片的输出端到FPGA核心引脚之间的阻抗在整个关键频段内都必须低于0.85mΩ这个值非常苛刻。这里有个陷阱。Z_target的频段范围到底要到多高太宽了做不到太窄了又会漏掉噪声。经验和业界共识是目标阻抗需要覆盖从DC到时钟频率或者开关频谱的主要能量段再高频率部分主要靠芯片封装内部的去耦电容和PCB平面的高频响应去处理PCB上的贴片MLCC作用已经很有限了。我自己在处理FPGA去耦时一般把目标频段定为DC到几十MHz更高频段依靠“平面电容封装电容尽量短路径的小容值MLCC”来处理。因为普通0402电容即使在最佳安装情况下有效频率范围也很难超过200MHz频率再高寄生参数就成了主要矛盾。3.3 多频段多值并联确定目标阻抗之后就该设计MLCC组合了。基本方法就是不同容值的电容并联让它们的阻抗谷底在频域上依次排列把阻抗曲线压低到目标线以下。数值上具体怎么配我举一个典型的VCCINT 0.85V去耦方案示例外部电源模块输出端挂470uF聚合物钽电容或者电解电容频率低的场合用加4颗22uF MLCCPCB板上靠近FPGA电源引脚的位置贴8~12颗10uF在BGA封装过孔附近密集布置若干0.1uF和0.01uF的小电容同时配合PCB电源/地平面之间的内层电容。这个组合覆盖的频段大致是大容量聚合物/电解电容覆盖1kHz以下22uF覆盖1kHz~100kHz10uF覆盖100kHz~几MHz0.1uF覆盖几MHz~几十MHz0.01uF覆盖几十MHz~上百MHz。为什么需要这么多不同容值因为每个电容只有在自谐振频率附近才能发挥最佳的“镇压”作用自谐振频率反映了这只电容的有效工作频率。如果用10颗相同容值的22uF那它们的阻抗谷底全部堆叠在同一个频率完全覆盖不了其他频段。这个代价是巨大的——10颗电容只当一颗用。实际设计中我还会引入一个技巧就是同容值选不同封装。比如10uF电容选0402、0603、0805三种封装它们虽然容值相同但ESL不同自谐振频率略有错开能稍微“拓宽”频带。这个技巧虽然提升有限但在空间允许的情况下值得做。3.4 电源平面的作用千万不要忽略还有一个容易被忽略但至关重要的环节就是PCB的电源/地平面。很多工程师在MLCC上下了很大功夫各种容值排列组合但忘了最基础的一件事FPGA底下的电源平面和地平面之间本身就构成了一个分布式电容这个“平面电容”在高频段的去耦效果往往比几百颗MLCC都好。电源平面电容的计算公式很简单C_plane ε0 × εr × A / d其中A是平面面积d是电源层与地层之间的介质厚度。在常规FR4叠层中4层板的层间距可能达到1mm以上平面电容基本可忽略但如果在8层或10层板中把电源层和地层挨着放中间只隔0.1mm的介质那10cm×10cm的板子上平面电容很容易做到几nF而且它几乎没有寄生电感高频响应极好。这就是为什么高端FPGA开发板的电源叠层设计会特别在意层间距甚至专门使用“薄介质”工艺。光砸钱堆电容是堆不出来好电源完整性的叠层设计才是根基。我做PCB叠层时有个经验把最靠近器件面的第二层作为完整地平面第三层作为电源平面两者间距压到最小。这样一来所有MLCC的地过孔和电源过孔都能以最短路径连接到参考平面去耦效果会有一个质的飞跃。4. 实操一个从DC-DC到FPGA的完整选型案例4.1 需求梳理与容值估算用一个真实项目来做演示吧。一个Xilinx Artix-7系列FPGA核心电压VCCINT1.0V最大电流估计8A瞬态变化按50%算即ΔI4A允许电压波动为±3%即30mV。按目标阻抗公式Z_target (1.0 × 0.03) / 4 7.5mΩ这个阻抗要求不算极端一般在4~6层PCB上通过合理的MLCC组合就能实现。然后是总容量估算。一个粗略的工程经验法则是在目标频段内要使PDN阻抗低于Z_target总容量最低要求可以由以下公式反推C_total ≥ ΔI / (2π × ΔV × f_low)f_low是关心频段的最低频率这里取10kHz。带入数值4/(2π×0.03×10000) ≈ 2.12mF也就是至少需要2120uF。这个值非常大了直接用MLCC不太现实所以我通常在前级DC-DC输出端用一颗330uF~470uF的聚合物电容先垫底然后在FPGA周围布置MLCC补充中高频段。考虑到DC偏压因素1V工作电压选6.3V额定电容有效容量约为标称值的85%FPGA附近的MLCC有效容量我初步规划大概在600uF左右。这样搭配前级聚合物电容总有效容量可控在1000uF级别对应阻抗曲线在低频段能压住。4.2 选型组合与阻抗曲线验证基于上面的规划我排出这样一个具体组合前级DC-DC输出端1颗470uF聚合物钽电容2颗22uF/0805/X5R2颗4.7uF/0603/X7R。这个组合负责低频段和DCDC开关纹波。 FPGA_BGA周围8颗10uF/0402/X5R16颗0.1uF/0402/X7R以及8颗0.01uF/0402/X7R。10uF负责中频段0.1uF和0.01uF负责高频段。 电源/地过孔旁边额外4颗0.1uF/0201专门用来贴到BGA背面缩短电流路径。这个组合在设计阶段最好用仿真工具或者至少用Excel表格估算一下合成阻抗。如果不会用SI工具可以先把每颗电容的SRF点列出来粗略标到频段图上看有没有大的阻值抬升反谐振峰覆盖到目标频段。反谐振的问题必须单独说一下。当电感可能是封装感抗也可能是平面感抗和电容在不同频点发生谐振时阻抗曲线会在某个频率出现尖峰。在FPGA去耦场景中大容量电容的感抗和小容量电容的容抗会在某个频率点交汇形成反谐振。如果这个尖峰超过了目标阻抗就要通过加入中间容值的电容来“填补”这个峰。我上面选4.7uF作为中间值很大程度上就是为了把22uF和10uF之间可能出现的反谐振峰压下去。同理10uF和0.1uF之间也可以视情况插入1uF。4.3 布局布线与安装方式的影响MLCC选得再好如果贴装方式不对实际效果也会大打折扣。这个问题必须单开一节讲。首先是过孔位置。MLCC的两个焊盘应当各自连接一个过孔到电源或地平面过孔尽量紧贴焊盘最好在焊盘的外侧或者内侧直接打孔。绝对不能出现两个过孔离得很远让电流先水平流过一段PCB走线再进入平面。我在文章开头提到的那个案例就是这个问题。一颗0402的0.1uF电容焊盘到过孔的走线每增加0.5mm寄生电感可能增加0.3~0.5nH在100MHz以上频段这足以让电容的有效性下降一大半。其次是放置位置。高频去耦电容要尽可能靠近FPGA的电源引脚最好是放在BGA封装背面通过过孔直接连接到电源/地平面。按照BGA焊球间距打了过孔阵列后电容要紧贴这些过孔放置。中低频的去耦电容可以稍微分散放置但仍然应该在FPGA投影区域附近不能放得太远。第三是过孔数量和电源平面完整性。FPGA核心电源引脚众多每一个去耦电容的过孔都会在电源平面上打孔而过孔的间隙会导致电源平面的“开槽效应”影响回流路径。处理办法是在过孔间隙中尽可能保留铜皮避免形成细长狭缝如果有大电流需要从平面跨过要用多层平面并联或者加宽铜桥。还有一个重要的点是回流路径的对称性。去耦电容的电源过孔和地过孔应当紧挨着放构成一个小回路。如果电源过孔和地过孔隔得太远电流回路面积变大等效电感增加去耦效果急剧恶化。5. 常见问题与调试实录5.1 并联越多越好吗“反正空间够多贴几颗电容总没错吧”这话在低频模拟电路里可能成立但在高速数字电路里就是个灾难。原因有二。第一所有电容并联后其寄生电感也并联形成多个LC并联谐振回路会在特定频率产生强烈的反谐振峰。这个峰如果落在芯片的工作频段内非但没有去耦作用反而会放大噪声。第二盲目增加电容数量会导致电源网络谐振点增多最终测出来的阻抗曲线呈“狼牙棒”状这种非线性响应在时域上表现为振铃和过冲。所以我做设计时控制并联数量是有逻辑的。每路电源轨的MLCC数量依据目标频段覆盖需求来定一般优先保证容值等级“1-0.1-0.01”都覆盖到如果发现反谐振峰再插入中间值而不是盲目堆叠相同值。5.2 温度、老化与失效MLCC在高温下容量衰减和漏电流增大都会加速这是由陶瓷介质本身特性决定的。实际项目中常见的失效模式有以下几种机械应力开裂因为陶瓷非常脆PCB经受热冲击或者机械弯折时电容本体容易出现微小裂纹严重时短路导致电源烧毁。对策是选用柔性端头的MLCC柔性端子设计会使用专用于缓解机械应力的结构或者严格控制贴片和分板工艺。介质击穿短路在城市里用得比较多的原因是电压裕量不够和DC偏压过高导致介质劣化。对策就是降额设计。还有焊点蠕变老化长期温度循环下焊点疲劳会导致电容接触不良ESR急剧增大去耦能力下降。针对这些风险我的做法是关键电源轨的高容量电容选额定电压降额到2倍以上机械应力高的位置优先用柔性端子电容并且尽量不让大尺寸MLCC如1210、1206封装放在PCB板边易弯折区域。5.3 现场调试的几个信号实际调试中最常见的电源噪声超标现象我总结出几种典型特征和排查方向。现象一纹波频率等于DC-DC开关频率。基本可以确定是输出滤波不充分。先算输出电容在开关频率处的阻抗再验证ESR是否过高。如果是MLCC组合不合理就给开关频率处并联一颗低ESR的电容。现象二纹波频率等于FPGA时钟频率或其分频。这就是FPGA同步开关噪声SSN去耦网络高频阻抗过高。排查方向是先检查0.1uF以下的电容是否贴近FPGA电源引脚再看电源/地平面完整性有没有被走线割裂。现象三负载阶跃时电压跌落过大。多数是中低频段总容量不足或者DCDC环路响应太慢。可以先增加前级大容量电容同时提高DCDC的开关频率如果支持的话再看看环路补偿是否合理。现象四示波器看到高频阻尼振荡频率通常在几十MHz到上百MHz。这大概率是电源网络和MLCC组合的反谐振峰需要在中频段插入合理容值的电容。这类问题修电容数量或容值即可有时候调整一下0402和0603的比例就能立竿见影。5.4 几个买不到让人抓狂的物料聊点供应链的现实问题。做硬件设计的都知道选型时参数再漂亮采购说“没货”就白搭。MLCC市场经常出现产能波动某些容值和封装组合动不动交期排到几十周。我在选型阶段就会做两手准备。对每颗关键电容至少准备第二家的替代料并且在原理图里把兼容封装画好比如0402和0603有时候可以让PCB焊盘同时兼容。更重要的是尽量选通用型号别去选那些只有一家做、参数又极其特殊的物料。10uF/0402/X5R/6.3V这个级别都有替代料但0.22uF/0201/C0G这种就很挑供应商用在常规去耦场景时能避就避。写到最后发现MLCC选型这事说到底是两件事的平衡一是要懂原理明白每颗电容在频率维度上扮演什么角色二是要有章法按照目标阻抗、频段划分来布置电容组合。只要这两件事抓住了DC-DC也好FPGA也好去耦设计基本不会跑偏。每次看到“多加电容”式的粗放设计被当成万能解法我就觉得这些细节还是得反复讲。希望能帮你在下一个项目里少走点弯路。
返回列表