
信号完整性这个方向我见过太多人卡在第一步翻书能看懂传输线方程打开软件却不知道怎么下手。如果你已经把《从零开始学习信号完整性SIPI--1》里的基础概念过了一遍那么这篇文章就是接着上一次没聊完的部分把那些“好像懂了但真到设计时又不会用”的东西一个一个掰开揉碎讲清楚。[TOC] 大概是这个顺序先讲一个最容易被忽略却又决定一切的底层问题——电流回路然后接着特性阻抗往下说讲清楚50欧姆到底是怎么来的再聊反射和端接把拓扑设计里那些“看起来都能用实际区别很大”的方案理一遍最后补上电源完整性的关键认知。看完这篇你至少能对着自己的板子说出哪条信号会出问题为什么出问题大概会是什么样子。1. 电流回路SIPI里最容易被忽略的第一性问题很多初学者学SIPI上来就盯波形、眼图、时序一上来就扣S参数、反射系数结果学了一堆公式拿到实际板子依然两眼一抹黑。我自己的体会是信号完整性和电源完整性本质上都是关于电流从哪里来、流到哪里去、又从哪里回来的问题。你把电流回路看明白了大半的SI问题自己就能推导出来。1.1 信号不是“一根线”的事而是“一个环”的事数字信号在PCB上传输时我们通常只盯着走线看从驱动端出发沿着铜箔走到接收端。但电流是闭合的信号电流从驱动端流出后必须有路径返回驱动端这个返回路径才是完整信号回路的一半。高速信号中返回电流的主要部分并不是走地线而是沿着信号线正下方的参考平面流动——这就是常说的镜像电流。为什么要强调这一点因为一旦参考平面不连续、被割裂、或者离信号线太远返回电流就被迫绕路。绕路意味着回路面积变大回路电感随之增加。对于高速信号而言电感的感抗在高频下非常可观直接导致信号边沿退化、振铃加剧同时对外辐射噪声。我给你一个具体的数据感受一下。一条50欧姆的微带走线如果返回路径紧贴走线正下方完整平面回路电感大约是几个nH量级如果因为平面割裂返回电流被迫绕了10倍远的距离回路电感可能变成几十nH。对于一个1ns上升沿的信号这增加的感抗足以把信号上升沿明显拉缓严重的甚至会在接收端看到台阶或振荡。提示判断一个设计是否有明显回流问题最快的办法是问自己这条信号返回电流走的是哪条路那条路是不是最短、最宽、最连续的答不上来就说明你没真正理解这个信号。1.2 “地”和“电源”是交流等效的参考平面这是初学者最容易绕晕的地方我必须展开讲。很多人习惯性地认为只有GND平面才能当参考平面电源平面不行。这个认知需要修正。从交流角度看电源平面和地平面通过大量去耦电容相连在信号频谱范围内它们的交流阻抗都很低。信号返回电流在参考平面上流动时它并不在乎这个平面叫VCC还是GND它只关心我脚下的这个平面是不是一个低阻抗的、连续的导体。所以你在设计DDR总线时DQS、DQ信号走在电源平面上方只要下方电源平面完整、且芯片管脚附近有足够去耦电容在交流上把电源和地连起来信号同样能正常回流。真正的问题是电源平面有没有跟地平面形成低阻抗的交流回路这个低阻抗频段能覆盖信号的基频和谐波吗这里就引出一个常见的设计矛盾为了降低电源阻抗我们在板子上放了一大堆去耦电容但电容的摆放位置、过孔连接方式直接决定了电源平面的交流接地质量。后面专门讲电源完整性时我会再回到这个点现在只需要先建立“电源平面也能当参考但前提是交流接地良好”这个观念。1.3 用环路思维审查板卡马上能发现设计隐患学会了看电流回路你就能用这个思路快速审查一块板子。我总结了一个实用的“三步走”检查法找到目标信号看它走的是哪一层参考平面是什么顺着信号路径看参考平面是否完整有没有被过孔隔离区、开槽、大的挖空区域切断检查信号换层位置看换层过孔旁边是否有配套的接地过孔回流过孔这套检查法不需要任何仿真软件只需要打开PCB设计文件就能做。我在实际项目中用这个方法在一个未经SIPI评审的高速板卡上十分钟之内就找到了三处可能导致DDR信号质量问题的设计隐患——都是参考平面被切割、信号换层缺地孔这种典型问题。注意高速信号换层时一定要在换层过孔旁边0.1mm-0.5mm范围内放一个接地过孔。这个过孔不是用于接地的而是给返回电流提供一个换层通道。2. 特性阻抗50欧姆不是规定而是设计出来的很多人觉得“阻抗50欧姆”是个天经地义的标准就像USB得是A口一样。但真到了自己设计阻抗的时候又搞不清楚阻抗是谁决定的、怎么控制。这一节我帮你把这些事情彻底理清。2.1 阻抗是线的属性不是信号的属性先说清楚一个容易混淆的核心概念特性阻抗是传输线自身的属性跟你传的是1V还是3.3V信号、信号频率是多少GHz都没关系。它只取决于传输线的几何结构和材料特性。对一个50欧姆的微带走线来说不管上面走的是1kHz还是10GHz的信号它的特性阻抗都是50欧姆——只不过不同频率下信号受到的损耗不一样而已。这句话的工程意义是什么就是你设计阻抗时需要关注的是几何和材料而不是信号的波形。很多人一开始没转过弯来总以为阻抗不对是驱动端电平的问题其实调整驱动端电平对你的目标阻抗没有半点帮助。2.2 微带走线的阻抗到底受什么影响以最常见的表层微带走线为例影响特性阻抗最核心的几个参数是参数影响方向说明线宽W阻抗与线宽成反比线越宽单位长度电容越大阻抗越低介质厚度H阻抗与介质厚度正相关走线离参考平面越远阻抗越高介电常数εr阻抗与εr成反比板材介电常数越高信号速度越慢阻抗越低铜箔厚度T影响较小但不可忽略铜厚增加阻抗略降低绿油厚度C高频时影响明显阻焊层相当于减小了线宽与参考平面的距离感这里我特别想纠正一个新手容易犯的错有人以为加宽走线一定能把阻抗做高。恰恰相反加宽走线的结果是阻抗降低。原因很简单线更宽意味着单位长度电容更大而特性阻抗等于根号下(L/C)C变大Z0就变小。你要做高阻抗应该做的不是加宽走线而是加大走线与参考平面的距离。这个道理看着简单但我在评审时见过一个项目为了把阻抗从50欧姆调到75欧姆设计人员拼命加宽走线结果阻抗越调越低最后不知道问题出在哪。这就是没有吃透阻抗的基本公式导致的。2.3 阻抗受控设计目标要写在叠层表里有了上面的基础阻抗设计就是一件有章可循的事。实际项目里我们是靠板材选型、叠层设计和线宽控制来达成目标阻抗的。一块PCB的叠层结构决定了下述几个关键变量参考平面有几层、介质层厚度是多少、走线用表层还是内层。叠层定了你大致就能判断某个层次能实现的阻抗范围。我自己的经验是表层50欧姆微带线在常规FR4板材εr约4.2-4.5下介质厚度约4mil-5mil、线宽约5mil-6mil是一个比较常见的组合内层带状线50欧姆在上下介质各3.5mil-4mil时线宽大约也在4mil-5mil如果要求100欧姆差分阻抗线宽通常会比50欧姆单端细一些同时要拉开两根线之间的间距但这些数字只能作为起点参考真正要落实一定要发给你合作的板厂做阻抗验证。这也是我反复强调的一点阻抗设计不是设计人员单方拍板的事而是要和板厂一起对齐的。提示发板前把你的目标阻抗、层厚、线宽需求写成阻抗控制表发板厂要求做阻抗条coupon随板测试。不要只口头说一句“帮我做50欧姆”板厂只能按自己的经验猜你的意图省这一步后面调试时你就得自己猜。2.4 差分阻抗和共模阻抗别再混为一谈差分信号是高速系统里的常客但很多人对“差分阻抗100欧姆”理解得比较模糊。要先搞清楚我们说的100欧姆指的是差分阻抗差分对两线之间的奇模阻抗而不是每根线对地的单端阻抗。差分阻抗和单端阻抗的区别在于当两根线同时向相反方向传输信号时它们之间会形成耦合电容和互感。耦合越紧差分阻抗的数值与单端阻抗的差异就越大。工程上常用“三要素”来粗略控制差分阻抗线宽、线距、介质厚度。线距越近耦合越强差分阻抗会偏离2×单端阻抗越多。所以同样是100欧姆差分阻抗对齐策略可能是“较宽的线较远的间距”也可能需要“较窄的线较近的间距”。这里有一个值得记下的经验法则为了让差分信号有良好的抗干扰能力在满足阻抗匹配的前提下导线对之间的间距耦合间距应该尽可能小。但也不能无限小因为过近的耦合会增加串扰和阻抗的制造公差敏感度。常规做法是让耦合间距约为线宽的1.5-2倍然后通过仿真或板厂测试来微调。3. 反射、振铃和端接把高速链路里最经典的问题聊透信号沿传输线传播时如果途中遇到了阻抗不连续的点就会发生反射。反射是信号完整性问题里最常见、也是最基础的现象。第二篇的深度应该足以让你对着示波器上的一个波形图说出它是哪里反射出来的。3.1 反射的本质入射波遇见了阻抗突变你可以把电信号想象成一群人排队通过一扇门。如果门和走廊一样宽人流的通过速度不受影响如果门突然变窄或者突然变宽人流就会拥堵、散乱需要花时间重新整理队形。反射系数Γ就是描述这个“整理队形”有多严重的参数Γ (Z2 - Z1) / (Z2 Z1)其中Z1是信号当前所在区域的特性阻抗Z2是信号即将进入的新区域的特性阻抗。反射系数可以是正值进入高阻抗区也可以是负值进入低阻抗区。幅度和极性决定了你会在波形上看到上冲、下冲、振铃或者台阶。我见过不少初学者把这21个字符背得滚瓜烂熟看到公式也能算但一到实际设计中就忘了用。实际上你不需要刻意去记公式你需要记住的是几个工程直觉信号从50欧姆区进入高阻抗区比如快到接收端时走线变细、或者遇到高阻抗的接收管脚反射系数为正接收到一个抬高的波形边缘信号从50欧姆区进入低阻抗区比如遇到一个阻抗很小的电容焊盘反射系数为负接收到一个压低的波形边缘反射波回到源端在源端还会发生第二次反射来回反射才形成振铃3.2 反复振铃的根源在一个“来回弹跳”的过程振铃是让不少硬件工程师头疼的现象。你用一个上升沿很陡的信号驱动走线接收端却看到波形过冲、下冲、来回震荡像敲了一下钟。这个“钟声”的物理成因就是信号在源端和远端之间来回反射每次反射的幅度逐渐衰减。要判断振铃是哪里反射出来的我的经验是看波形震荡的频率。假设走线长度是L信号传播速度是v那么一个来回反射的周期大约是2L/v。你从波形上读出振铃周期再跟这个估算值对比就能确认振铃是否来自这条传输线的末端不匹配。举例一条长6英寸的走线在FR4板材上信号传播速度约6英寸/ns那么来回一次的周期约2ns。如果振铃周期接近2ns那基本可以断定是这条链路的末端反射在作怪。这时重点检查接收端的输入阻抗、走线末端是否有stub、以及有没有正确设计端接而不是怀疑电源纹波之类的无关因素。3.3 端接不是越多越好而是要看拓扑用途端接的核心目标是吸收反射波让信号产生一次过门的机会。常见的端接方式有并联端接、串联端接、交流端接等各有各的适用场景。端接方式典型接法适用场景注意点并联端接到地/到电源在接收端对地或对电源接电阻高速单向点对点链路直流功耗较大需要上下拉串联端接源端串阻在驱动端串联一个电阻点到点、走线不太长的场景电阻值需要综合驱动内阻来设置交流端接串联电容到地接收端串联电容后接地需要降低直流功耗、又需要匹配电容会影响信号摆率一般用于有直流偏置要求的场景很多新手拿到芯片手册看到上面推荐了某一端接方式就照抄不看自己的走线长度和拓扑结果不但没解决问题还引入了额外功耗。以串联端接为例它的原理是让驱动端内阻Rs加上串阻和走线特性阻抗相等从而在源端把反射第二次吸收掉。如果你走线很长末端反射回来的信号在源端被吸收这没问题但如果走线很短上升沿远大于走线延时串联端接反而容易把信号边沿拉缓让信号质量变差。注意写到这里我必须说句实在话——很多情况下短走线根本不需要端接。如果走线延时小于信号上升沿的1/6反射波在源端往返回来的时间比信号边沿还短波形上根本看不出明显畸变。这时候加端接纯粹是给自己找麻烦。4. 拓扑结构和StubDDR这类总线上最大的隐藏杀手如果有人问我高速数字系统里最难对付的信号完整性问题是什么我的答案不是某个难解的反射公式而是拓扑设计和Stub处理。这个问题在DDR、PCIe这类多点负载总线上尤其致命。4.1 点对点、菊花链、Fly-by拓扑的取舍链路拓扑描述的是驱动端和多个负载之间的连接方式。不同类型的拓扑信号在一个节点处的传输路径完全不一样需要的端接策略也完全不同。点对点拓扑最简单一个驱动管脚对应一个接收管脚链路上只有两个节点。这类拓扑的信号完整性最容易管理无论微带走线还是带状线只要做好阻抗连续和末端匹配就可以。封装设计里的die-to-die连接、点对点时钟线都属于这一类。多点负载总线就复杂了。DDR3/4的数据线采用点到点或简单的两片拓扑时压力小一些但地址/控制线往往要在多个DRAM颗粒间共享这时就面临选择菊花链Daisy Chain信号按顺序经过每一个负载负载以stub形式挂在主干上。链路上的分支越短越好最好能做到“飞线式”连接让每个分支的长度控制在50mil以内。Fly-by拓扑是菊花链的一种优化形式信号像飞机掠过各站一样经过每个负载先到先得。DDR4的地址命令总线就推荐这种方式。而T型或叫星型拓扑在高速信号中除非负载很少、分支很短否则基本不建议用。原因是T型分支会造成信号在分支点发生分路产生额外的反射点而且分支长度稍有差异就会造成信号时序偏斜。这是我踩过的一个坑早期做一个DDR3设计地址线用了T型拓扑两个分区距离不等结果其中一个分区第一个写命令总是偶发失败。用示波器夹上去看正是地址线在接收端的信号质量在特定码型下恶化后来改成Fly-by拓扑并配合板厂调整组内等长问题才消失。4.2 Stub每多一毫米都是代价Stub是分支走线与干线之间多余的引出线段。信号沿着主干走到一个负载点时如果这个负载的引线过长信号就像跑进了死胡同在stub末端发生反射反射波回到主干上干扰后续的信号。工程上有个经验DDR3/DDR4中地址命令信号的stub长度尽量控制在几百mil以内数据信号的stub甚至要做到基本为零。实际叠层中常用“埋入式电阻”来缩短stub或者用扇出fanout布线尽量让每个颗粒的DQS/DQ直接接到主线上。[图片] 图这是一个典型DDR地址线在两种不同stub长度下的眼图对比示例。可以看到stub从100mil增加到300mil眼高和眼宽都明显变差抖动也显著增大。虽然不同系统、不同信号速率下绝对值不同但这个趋势是普遍的。4.3 过孔Stub和背钻你迟早会碰到的题目除了走线stub过孔也有stub问题。内层走线换层到表层时过孔会贯穿整块板过孔孔壁与所在层之间的那段空洞金属就是过孔stub。信号速率越高过孔stub对信号质量的影响越明显尤其对10Gbps以上的信号过孔stub简直是信号杀手。解决过孔stub最直接的手段是背钻backdrill把过孔不需要的底部残留部分钻掉把stub长度缩到最短。但背钻对板厂工艺有要求钻孔深度的控制精度是关键。如果背钻深度控制不好反而可能在过孔底部留下一个更不规则的残桩带来新的阻抗不连续。低成本又可靠的替代思路是不要在高速信号换层时反复出入表层内层。尽量让一条高速链路在同一个参考平面间的层叠区域内走完减少换层次数换层必配地孔。先看链路规划再谈背钻这个优先级不要搞反了。5. 电源完整性信号完整性的另一半PDN必须这样看说完信号绕不开电源完整性。一篇标题带“SIPI”的文章如果只讲SI不讲PI那就名不副实了。电源完整性研究的是供电网络PDN在芯片电流瞬变时能不能把电压维持在设计允许的波动范围内。它和信号完整性的关系极其密切——芯片内部供电不稳I/O驱动能力就飘信号质量跟着恶化。5.1 把PDN看作一个阻抗网络而不是一个“电压源”传统的思维模式是电源平面就是一个大电容芯片需要多少电流电源就能给多少电流。但真实的高速系统中芯片功耗是瞬变的。以CPU/GPU/FPGA这类器件为例负载电流在几百纳秒甚至几十纳秒内就能从几安培跳到几十安培。电流突变在PDN上产生的电压波动近似为ΔV L × di/dt。这里的L是电流路径上的等效电感di/dt是电流变化率。di/dt由芯片的工作状态决定设计者能控制的主要是L。把PDN看成阻抗网络的意义就在这里我们关心的不是某一点的直流电阻而是整个供电网络在不同频率下的交流阻抗。芯片瞬态电流的各个频谱分量在流过PDN阻抗时产生的压降必须被控制在允许的范围内——这就是目标阻抗法Target Impedance的核心。5.2 为什么光放一大把电容解决不了问题很多刚接触PI的人都经历过这样的场景测到电源噪声超标第一反应就是多放电容。结果放了100颗100nF噪声还是大的不行。原因在于电容在高频下的表现远不是理想电容而是“ESR等效串联电阻”加“ESL等效串联电感”再加电容的一个串联模型。在自谐振频率以上电容呈感性阻抗随频率升高而增大此时电容对高频噪声几乎没有抑制能力。每个贴片电容都有自谐振频率SRF大约是f_SRF 1 / (2π√(L_ESL × C))。一个典型的0402封装100nF电容ESL约0.4-0.6nH它的自谐振频率约在20-25MHz附近。工作在这个频率以下它表现为容性对噪声是有效的超过了自谐振频率它表现为感性噪声照样流过。所以如果你面对的噪声频谱里有200MHz、甚至500MHz的能量靠100nF电容是压不下去的。要知道目标频率不同需要用不同容值的电容去覆盖。工程上的“电容组合方案”其实是按频率分工的大容值10μF-100μF覆盖低频段应对大电流瞬变中等容值0.1μF-1μF覆盖中频段是常规去耦的主力小容值10pF-100pF覆盖高频段解决GHz级别谐振问题平面电容电源-地平面间距拉近对整个频谱都有帮助特别是高频5.3 去耦电容的摆放位置比数量重要得多数量多不代表效果好真正起作用的是电容所在位置的环路电感。我做过一个对比实验同样的叠层、同样的总容值电容紧凑地放在芯片电源管脚附近环路电感约0.5nH和分散放在芯片周边5mm以外环路电感约1.5nH电源纹波可以差出接近一倍。所以去耦电容的第一原则是永远优先保证芯片电源管脚附近的去耦电容且电容到电源管脚、到地的连接路径要短、要粗、要直接。一个常见做法是在BGA区域的背面焊盘附近直接放置0402或0201封装的去耦电容通过过孔直接连到电源/地平面将环路电感压到最低。另外很多设计会把电源平面和地平面之间的间距在叠层中压得很近比如4mil这在板上就形成了一个天然的分布式平面电容。平面电容的特点是几乎没有ESL高频表现远优于分立电容。从成本角度说这是“免费”的高频去耦手段——只需要在叠层设计时提前规划好。提示如果你做的是高速数字板叠层设计时尽量保证电源平面和地平面紧邻。这不光是为了PI更会给你的SI设计带来极大的灵活性。6. 实测与仿真为什么“看起来没问题”的信号也会出问题学习SIPI到一定阶段你一定会碰到一个尴尬局面仿真显示波形漂亮实测出来却千疮百孔。这不是仿真软件的问题多半是模型和边界条件不对。这一节聊一些实测和仿真中容易被忽略但影响极大的点。6.1 仿真时最容易忽略的“接地回路”参数仿真软件里你画了一条走线、设了叠层、加了一个IBIS模型兴致勃勃跑了一个眼图看着一切都好。但你真的把返回路径建模了吗很多初学仿真的人只给信号分配了走线层参考平面却不完整、不连续仿真结果自然乐观。正确的做法是至少把信号走线周围两到三倍的线宽范围内的参考平面建出来而且要包含平面边缘、过孔隔离区等关键几何特征。对于换层信号还必须把回流过孔、平面间的耦合一起建进去。这里我给你一个最省成本的“仿真预算”建议不要在模型精度上过度追求但也不要偷懒到连参考平面都不建。先跑一个“中等精度”模型把趋势找到再针对关键网络做精细化仿真。很多项目的问题都不是出现在复杂的高速通道上而是出现在大家认为“肯定没问题”的普通信号上。6.2 示波器测试的探测技巧50欧姆进入还是1M欧姆接入拿到示波器第一件事就是确认输入阻抗设置。测量高速信号时我们通常用50欧姆输入阻抗配合探头内置的衰减电阻实现高阻探测。但不少人会犯一个低级错误测点对点的高速信号时接了1M欧姆阻抗结果在接收端看到一个极其夸张的过冲以为是设计问题其实探头本身的1M欧姆输入阻抗成了传输线的终端不匹配点制造了额外的反射。反过来有些信号比如低速I2C需要高阻探测你用50欧姆接入可能把信号电平直接拉垮。所以选阻抗之前先问自己我在意的信号源内阻是多少探头的负载对链路阻抗的影响可以接受吗6.3 眼图测试时别忘了“测试码型”这一层眼图测的是随机数据码型但并非所有随机码型都一样。如果你用的是PRBS7它会比PRBS31更容易“过关”因为PRBS31包含更长的连续相同比特串低频分量更丰富更容易暴露低频损耗和均衡问题。实测时我喜欢同时跑PRBS7和PRBS31作对比。如果PRBS31眼图严重变差、而PRBS7看起来还行通常提示低频损耗大多半是AC耦合电容取值偏小或者链路中某处低频响应不足。如果反过来则是高频衰减为主考虑改善阻抗连续性和介质损耗。7. 说一点经验之外的话怎么真正学会SIPI文章写到这儿核心内容基本齐了。借这个尾巴以一个过来人的身份聊几句学习方法这类话在教科书上不会写但对你坚持学下去很关键。第一SIPI不是单独一个岗位的事。做原理图的、做Layout的、做仿真的、做测试的哪怕职责不同对SIPI的理解都必须达到一个共同水位。你学会看电流回路不是为了把责任推给layout工程师而是为了在设计阶段就能跟layout说“这条线下面给我保证参考平面连续”而不是等板子回来了才拿示波器去抗议。第二不要迷信公式也不要抛弃公式。公式的价值是建立直觉不是用来做题。RLGC模型、反射系数公式、自谐振频率公式能帮你形成“什么东西影响什么”的工程直觉但真到了设计现场你还要靠经验判断这一条链路的裕量足够大不需要精确计算那一对差分线则需要精细到0.1mil。第三多建立你自己的“问题库”。每次调试遇到一个SIPI问题就记录下现象、根因、解决手段附上波形截图。时间长了你会发现很多看似独立的问题其实是同一类根因在不同场景下的不同表现。这个积累过程比你看十本书都有用。我在项目的每个迭代中都会建立这样一个问题清单后面新员工培训时直接拿着它讲比任何理论教材都直观。这一步补上之后“从零开始学习信号完整性SIPI”这条线就算有了基本的地基。剩下的就是多练、多测、多碰壁碰到问题回来翻这些概念每次都会有新理解。等你哪天看到一块新板子脑子里自动浮现出电流怎么流、返回路径在哪、哪个网络最容易出问题那你就已经入门了。