ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AD差分走线与阻抗匹配:高速PCB设计完整指南

AD差分走线与阻抗匹配:高速PCB设计完整指南 做高速PCB设计的兄弟应该都有这种经历第一次画USB或者Ethernet的差分线时照着教程把线拉出来了规则也设了还以为万事大吉结果板子打样回来一测眼图一团糟信号根本没法看。问题出在哪大概率是对AD差分走线和阻抗匹配的理解还停在两根线平行走这个层面。这篇博客我想从一个用Altium Designer干了十年的工程师角度把差分走线这条完整链路——从基础概念、规则设置、实际拉线到阻抗匹配——彻底捋一遍。适合正在做高速板、或者准备接触USB/PCIe/以太网这类差分信号的新手也适合想把自己零散经验系统化的老工程师。1. 先搞明白一件事差分走线到底在解决什么问题1.1 差分信号不是两根线那么简单很多新手觉得差分信号就是把原来的单端信号复制一份变成两根线一起走这个理解太粗糙了。差分信号的本质是用两条相位相反、幅值相等的信号来传输一个完整信息接收端真正检测的是两个信号之间的差值。这个做减法的过程天然带来了两个单端信号给不了的好处抗共模干扰。外界的电磁噪声、电源噪声通常会同时耦合到两根线上形成大小接近、方向相同的共模分量接收端一旦做减法这部分干扰直接抵消。自身EMI更小。两条线上电流方向相反产生的磁场在空间上相互抵消对外辐射大幅降低这对通过EMC测试特别关键。我见过不少工程师把差分走线的全部注意力放在拉两根等宽的线上等到板子出来信号质量不行才意识到问题。真正的难点在于维持对称性——物理位置对称、到参考平面的距离对称、阻抗连续。AD里面设置的所有差分规则最终都是在为这些对称性服务。1.2 哪些信号必须走差分不是所有信号都值得用差分但高速接口基本绕不开。我整理了一个常用差分接口对照表方便大家参考接口类型典型速率差分阻抗要求常见应用USB 2.0480 Mbps90 Ω外设连接USB 3.0/3.15/10 Gbps85 Ω高速存储PCIe Gen38 GT/s85 Ω显卡、SSDPCIe Gen416 GT/s85 Ω服务器、AI加速卡千兆以太网125 MHz100 Ω通信、工业控制HDMI最高18 Gbps100 Ω音视频传输LVDS数百Mbps~Gbps100 Ω显示屏、图像传输注意这里有个容易混淆的点差分阻抗和单端阻抗是两个完全不同的概念。差分阻抗是差分对两根线之间的阻抗不是你用万用表量出来的直流电阻也不是某根线对地的单端阻抗。后面设置规则的时候这个概念会反复出现。2. 动手前的关键准备确认叠层、算阻抗、取线宽2.1 叠层结构阻抗计算的起点在AD里设置差分规则之前有一件事必须做在前头确认PCB的叠层结构。因为差分阻抗不是孤立由线宽和线距决定的它还取决于走线所在层、到参考平面的距离、介质厚度、介电常数、铜厚等一系列参数。我第一次做四层高速板时犯过一个典型的错误——拿到芯片参考设计给的推荐线宽比如5mil就直接填进AD规则里也没细想板厂的叠层能不能支撑这个生产要求。结果板厂反馈做不出目标阻抗要么让你调线宽线距要么改叠层来回折腾了整整一周。不同的叠层构型直接决定了阻抗计算公式的形态最常见的两种是微带线Microstrip信号走外层一面是空气一面是介质层。外层走线阻抗相对好控制但对外辐射稍大。带状线Stripline信号走在内层上下都有参考平面。屏蔽效果好但阻抗控制受上下两层介质影响计算和工艺把控更严格。叠层设计的核心原则是让信号层紧贴完整的参考平面GND或电源并保证介质厚度均匀。如果参考平面不完整比如被分割了差分走线走到那个区域时阻抗会突变信号反射率上升眼图自然恶化。2.2 用计算工具确定线宽和间距叠层确认之后需要用阻抗计算工具反推线宽Width和线距Gap。行业内最常用的是Polar Si9000和Saturn PCB Design ToolkitAD自身也带了简单的阻抗计算器但精度不如Polar这类专用工具。我自己一般用Polar因为它的场模型对叠层参数的支持更细比如能区分阻焊层对表层阻抗的影响。以四层板为例假设置层和参数如下参数数值层叠结构TOP / GND / PWR / BOTTOMTOP到GND的介质厚度0.1 mm介电常数Er4.2线宽0.15 mm约6 mil差分线间距0.15 mm约6 mil铜厚1 oz35 μm把这些参数输入Polar选择外层边缘耦合微带线模型软件会算出一个理论差分阻抗值。我通常的做法是固定线距扫描线宽找到目标阻抗对应的线宽组合。比如目标100Ω把线距定为6mil软件扫出来线宽5.5mil左右就能达标那就用5.5/6mil这套初始值。反过来说如果实际布线场景里线距被空间限制住了那就倒过来固定线宽、调整线距。记住一件事计算工具的初始值只是起点。因为实际生产中有蚀刻偏差、玻璃纤维编织不均匀、阻焊层厚度差异等变量最终要以板厂的阻抗测试结果为准。所以我一般会在给板厂的文件里专门附一页阻抗叠层表注明哪些网络需要控制阻抗、目标值是多少、允许的公差范围通常±10%让板厂按这个去调整生产资料。2.3 差分对命名与网络识别AD的差分对识别是基于网络名规则来的。默认情况下AD要求成对网络遵循以下命名约定之一后缀_P/_N比如USB_DP/USB_DN不行要USB_P/USB_N后缀_P/_N或_PLUS/_MINUS前缀P_/N_最常见的命名是TXP/TXN、RXP/RXN或者USB_1_P/USB_1_N这种。命名不规范AD在原理图里就无法自动识别差分对后面的交互式差分走线也调不出来。我见过有人用USB_POS/USB_NEG这种命名在原理图里手动能配但PCB同步时偶尔会出现匹配异常所以建议一开始就用AD默认支持的那几套命名少给自己挖坑。3. 差分规则设置的完整流程从创建差分对到规则优先级3.1 创建差分对在原理图里选中两条网络后可以通过菜单Design → Differential Pair创建差分对并指定差分对名称比如USB1。如果原理图画的是集成库很多元器件厂商已经帮你配好了差分对原理图同步到PCB时会自动带过去。PCB环境里也可以手动建立差分对点右下角Panels打开PCB面板在差分对编辑器中把匹配的网络对拖进去指定差分对名称即可。这里有个细节如果原理图和PCB都是双向同步的建议在原理图侧创建差分对这样后续ECO传递更干净。如果在PCB侧单独建还要注意别在下次同步时被覆盖。创建完成后需要给差分对分配差分规则AD里叫Differential Pair Routing。打开Design → Rules → Differential Pair Routing新建一条规则在Where the objects match里选择对应的差分对或差分对类。规则匹配范围一定得选对如果选成All Differentials那全板差分信号都会被套用同一套参数不同接口阻抗需求还不同比如USB 90Ω、HDMI 100Ω整板统一显然会出问题。3.2 差分规则参数详解差分规则里的核心参数有这几个我把它们和典型配置一起列出来参数含义典型设置Width差分线宽依据阻抗计算Gap差分对内两线的间距依据阻抗计算Min Width / Max Width走线时允许的线宽范围在计算值±10%内Min Gap / Max Gap走线时允许的间距范围在计算值±10%内Max Uneven Length差分对内两线的最大长度差通常≤5 mil高速信号更严不少工程师把Width和Gap填死就完事了但AD的规则引擎在交互布线时会根据你当前的实际操作动态调整。只要你设了Min/Max范围走线时按ShiftR切换线宽模式忽略约束/最小/最大/规则值就能看到AD在这些范围内自动适配。还有一点差分对之间的间距属于另一条规则——Clearance规则——需要在差分对Class和普通信号Class之间单独设间距约束一般是走线宽度的3倍即3W规则用来减少相邻差分对之间的串扰。3.3 规则优先级和常见冲突AD的规则系统是按优先级从上往下匹配的。差分规则如果有多条会冲突的往往是那些Where the objects match范围设置得过宽的规则。比如同时存在一条全板Width规则所有网络线宽8mil和一条差分对Width规则差分类6mil系统会取优先级更高的差分规则。如果差分规则没生效第一件事就是检查规则列表里是否有更高优先级的规则拦截了它。我自己常用的做法是把所有高速差分对建成一个Class例如HIGH_SPEED_DIFF在规则里用InDifferentialPair和InAnyClass这类条件做组合摆脱对单一规则的过度依赖。规则写好之后强烈建议做一次DRC检查重点看差分对网络是否全部匹配成功是否有网络被误归到多个Class走线后是否违反最小间距如果DRC报了很多错不要急着全部忽略先看是不是规则优先级互相打架导致的否则到了后期返工成本很高。4. 拉线实战手动走线、等长调整和过孔处理4.1 AD差分走线的两种方式差分规则配好之后真正在PCB上拉线有两个思路第一种让AD帮你推差分对。选择Interactive Differential Pair Routing快捷键通常是先按P再选差分对布线或直接点工具条图标在原理图上选中一对匹配的网络PCB上鼠标悬停在对应焊盘附近就会显示整条差分路径的预览点下去就能拉出一条自动等长、等距的差分线。AD的推挤功能在差分模式下表现不错遇到障碍物会自动绕开但如果你的板子布局非常拥挤自动推挤出来的路径可能不太理想。第二种手动拉等宽等距线。在布线模式下按住Shift同时选中两根线交替拉完其中一根再拉另一根这样每根都能严格按规则指定线宽走但两条线之间的间距需要你操作时自己留意。这种方式适合差分对需要绕过特定结构、或者空间受限的场景。我的建议是能自动走就自动走但自动走完一定要肉眼检查。AD的自动推挤对规则引擎很依赖如果你规则没设全它走出来的路径可能线距忽大忽小这时手动修正反而更快。4.2 等长补偿的实操技巧高速差分信号对对内等长有硬性要求比如某些接口要求长度差不超过5mil。AD里查看长度差的方式是在PCB面板选中差分对打开Reports → Measurement或者直接看差分对编辑器里的长度数据。实现等长最常用的手段是蛇形线Trombone。AD里在差分走线模式下按快捷键ShiftA或者在菜单Route → Interactive Length Tuning选中一条差分线后就能看到蛇形线的预览。关键参数有两个振幅Amplitude和间隙Spacing。振幅不能太大否则信号传播路径剧烈弯曲产生额外反射间隙至少满足3W避免同一对线内部互相耦合干扰。我调等长时习惯先把长的那根线固定然后把短的那根线用蛇形线补偿到目标长度。不要上来就猛拉蛇形线先确认目标长度和当前长度的差值再算需要多少个蛇形周期。一条蛇形周期大概能增加2到3倍的振幅长度心里有个数调整效率会高很多。还有一个很多新手忽略的点过孔本身也贡献走线长度。一个过孔大约能等效增加几十mil的走线长度视过孔寄生效应而定如果差分对的一根线走了过孔另一根没过等长计算时也要把这个差异算进去。AD有Total Via Length的概念可以在规则设置里把它纳入长度计算我这几年做项目基本都会勾上这个选项。4.3 过孔与换层的注意事项差分对需要换层时最大的风险是过孔导致阻抗突变。因为过孔本身有寄生电容而且过孔在参考平面上会形成孔隙这会让差分阻抗瞬时走偏。降低过孔影响的方法成对打过孔两孔间距尽量小减少两条线在换层点的不对称度。过孔周围做回流地孔Ground Stitch Via给回流电流提供低阻抗路径减少破坏参考平面连续性。尽量让差分对在换层后保持相同的参考平面电压种类不要从GND参考层换成PWR参考层除非两端都跨接去耦电容。我曾经做过一个项目差分对从TOP层换到BOTTOM层换层点旁边没加回流地孔板子回来之后USB信号偶尔丢包。后来把过孔附近塞了四个地孔问题就消失了。从那以后换层必打回流地孔成了我的固定操作。5. 阻抗匹配的深水区理论计算、板厂反馈和实测验证5.1 阻抗公式背后的物理量阻抗匹配听起来高大上落到工程上其实就一句话让差分信号遇到的所有结构都呈现相同的阻抗避免反射。这个阻抗由走线的分布参数决定四个核心物理量是线宽Width线越宽电阻和电感越小阻抗越低线距Gap两线距离越近耦合越强差分阻抗越低介质厚度H走线到参考平面的距离越近单端阻抗越低差分阻抗也随之下降介电常数Er介质材料的介电常数越高信号传播速度越慢阻抗越低对外层微带线常用的近似公式是[ Z_{diff} \approx 2 \times Z_{single} \times \left(1 - 0.48 \times e^{-0.96 \times \frac{s}{h}}\right) ]其中 (Z_{single}) 是单根线对地的单端阻抗(s) 是线距(h) 是到参考平面的介质厚度。这个公式的直观含义是线距越远两根线之间的耦合越弱差分阻抗越接近两倍单端阻抗线距越近耦合越强差分阻抗下降越多。这个公式不用背但要理解它的趋势因为它能解释为什么实际板子调到目标阻抗那么费劲——任何改变 (s) 或 (h) 的走线细节都会影响阻抗。5.2 为什么算出来的和实测总不一样这是我被问过最多次的问题之一。明明Polar算出来是100Ω板厂反馈实测也是100Ω为什么自己用软件仿出来的结果总差那么远原因通常出在以下几点叠层参数不准。很多工程师不找板厂要真实叠层参数而是用默认Er值4.2估算实际上高速板材或半固化片的Er可能有4.0~4.8的浮动并且和树脂含量、玻璃纤维类型有关。Polar计算出的是标称值但实际生产的介质厚度和铜厚都有公差。参考平面不完整。计算工具默认走线下方是完整平面现实里总会有电源分割、信号过孔、排线槽把平面挖空。这些结构都会让实际阻抗偏离计算值。铜箔蚀刻偏差。PCB厂蚀刻时线宽会出现几微米到十几微米的偏差。阻抗对线宽变化很敏感线宽差5%就可能导致阻抗偏移好几Ω。这就是为什么板厂会在生产资料里根据他们的工艺能力调整线宽补偿值。阻焊层影响被忽略。表层差分走线上面覆盖的阻焊油墨也会改变阻抗频率越高越明显。Polar里有Cover Coat选项计算这个效应但很多工程师习惯性忽略。所以我对抗这个问题的方法很粗暴先把叠层参数发给板厂确认再算阻抗算完在板子里留一组阻抗测试条。测试条就是几根固定线宽线距的差分线和真实走线同一叠层、同一参数拉出打样后板厂可以帮你测自己有条件也可以用手持TDR测量。实测值和计算值对比差异大于5Ω就找板厂要生产叠层再核对。5.3 阻抗测试的常见方式阻抗测试最常见的是**TDR时域反射计**方法。TDR向走线发射一个快速上升沿的阶跃脉冲通过测量反射波的幅值和到达时间推算出沿线的阻抗分布。频率越高测试仪器的上升沿要求越高测试成本也越高。板厂一般用协强制试条的方式在PCB边缘放若干组阻抗测试条和产品板同时生产生产完成后用飞针或者夹具测一组试条提供一份阻抗报告。我这里有个小建议——拿到板厂的阻抗报告别只看平均值要看同一批次不同位置的数据判断板厂的整体工艺稳定性。如果数据点波动很大即使平均值正好落在100Ω附近也要警惕他们在量产时能不能维持这种一致性。6. 差分走线踩坑实录这些问题我都在项目里遇到过6.1 命名不规范导致差分对识别失败这是新手最容易踩的坑也是我早期被同事吐槽过的经典问题。当时做一块网络通信板原理图里把一对差分网络命名为ETH_MDI0_A和ETH_MDI0_B按照人的直觉这确实是一对但AD不认因为默认命名规则里需要_P/_N这种后缀。结果差分走线模式根本找不到这对网络只能在PCB里手动配还得写一大堆规则。从那以后我给自己定了个规矩所有差分信号在原理图阶段就严格按AD命名规范来。实际项目里如果网络名已经定死不好改也可以在PCB面板的差分对编辑器里手动指定Positive Net和Negative Net把它硬凑成差分对。不过能一开始取对名字就不要走这一步减少后期维护成本。6.2 间距突然变化导致的阻抗突变还有一次做HDMI板调试中发现某个通道的眼图明显比其它通道差。排查到最后发现有一小段差分走线为了让开一个定位孔两根线之间的间距被拉大了快两倍。当时想着就这么一小段应该没啥影响实测告诉你——影响非常大。线距变大耦合变弱差分阻抗在那一段往上跳反射系数直接上升高次谐波全部被打散。这个案例给我的教训是差分对内等距比等长更优先。长度差可以通过蛇形线补偿但间距突变大概率需要重拉走线。如果空间紧张到必须拉开间距至少让这段突变保持在很短的范围内并且尽量靠近驱动端而不是接收端减小对信号质量的杀伤力。6.3 等长和等距的取舍逻辑高速差分中等长和等距都很重要但设计师取舍时的优先级不一样。我个人的经验排序是等距保持Gap稳定保证整段走线的差分阻抗一致参考平面连续保证回流路径完整等长保证两根线上信号的时序偏差在允许范围内走线走向顺滑减少直角和突变很多新手把等长放在第一位死磕长度差结果在狭窄区域强行绕了一大圈蛇形线反而破坏了等距和参考平面的连续性信号质量更差了。正确做法是布线前期尽量让差分对路径自然顺畅保持等距后期有局部无法绕开的地方再用蛇形线补偿等长同时每拉一段蛇形线就用DRC查一次等距违规。7. 实战总结一条完整有效的差分走线流程最后按我的操作习惯把完整流程压缩成一张可以直接照做的清单算是给前面长篇大论的干货做一个落地版本和板厂确认叠层结构、介质厚度、Er、铜厚拿到真实叠层参数。使用Polar或Saturn计算目标差分阻抗对应的线宽和线距把结果记录在项目文档里。在原理图里用_P/_N命名差分对创建差分对并同步到PCB。在PCB规则中新建Differential Pair Routing规则填入Width、Gap、公差范围确定规则优先级。新建差分对Class并在Clearance规则里对Class之间设置3W间距隔离敏感差分对。用Interactive Differential Pair Routing拉线优先自动走线走完手动检查线距均匀性。有等长需求时用Interactive Length Tuning加蛇形线补偿记得把过孔长度纳入计算。差分对换层时成对打孔换层点附近加地回流孔保证参考平面连续。铺铜完毕做DRC完整检查重点看差分对间距、等长、和参考平面切割情况。给板厂提供阻抗叠层表和阻抗测试条要求拿到阻抗报告后复核数据稳定性。我在实际项目中用这套流程做过USB 2.0、千兆以太网和LVDS差分信号的板子设计阶段没出过信号完整性问题。当然每个项目细节不同遇到具体卡点还是要回到原理层面去分析。纸上得来终觉浅差分走线这件事规则设置只是画板的第一步阻抗匹配才是决定产品能不能稳定运行的硬指标。把这两块吃透了再回过头看那些拉线技巧蛇形线画法的教程你会发现它们都只是术真正的地基永远是搞清楚信号本身想要什么然后用规则和走线去满足它。
返回列表