ARTICLE DETAIL

资讯详情

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

AD差分对等长等距布线:原理与实操完全指南

AD差分对等长等距布线:原理与实操完全指南 做高速数字板卡的这些年我几乎每块板子都要和差分对打交道。USB、HDMI、以太网、PCIe、LVDS随便一个高速接口跑出来都是差分信号。新手第一次在Altium Designer里做差分对最常见的问题就是为什么两条线必须绕成一圈一圈的规则里那个Gap间距到底该填多少为什么我明明设了等长约束DRC还是报错这篇文章就把差分对的等长与等距这件事从原理到软件实操从头到尾捋一遍。跟着走一遍你就能理解AD里那些规则参数的含义也知道怎么在布线阶段快速把差分对做干净。1. 差分对到底在“等”什么原理先搞清楚1.1 等距管阻抗等长管时序差分信号的核心是两根线同时传输一对大小相等、极性相反的电压信号接收端只看两根线的差值。所谓“等距”是指两条走线之间的间距Gap在整段传输路径上尽量保持一致所谓“等长”是指两条线的物理长度接近一致。这两个需求解决的是完全不同的问题别混在一起。等距的本质是控制差分阻抗。两条线并排走线间会产生耦合这个耦合直接影响差分阻抗Zdiff。耦合越强、间距越小差分阻抗越低间距越大耦合越弱Zdiff会向2倍单端阻抗逼近。如果间距忽大忽小差分阻抗就跟着波动信号在阻抗突变处会产生反射眼图质量下降辐射也会变差。所以等距不是为了好看是为了让阻抗保持连续。等长则是为了保证接收端能同时收到两个信号。差分接收器依赖两根线信号的差值工作如果两条线长度差太多正负信号到达接收端的时间错开有效摆幅会变小抖动变大共模噪声也会跟着恶化。特别是并行传输的高速接口比如HDMI、DDR、USB每个通道的信号还要和其他通道对齐长度差直接变成时序偏差。从电磁兼容的角度看差分对之所以能抑制共模噪声前提就是两条线处处对称。一旦等长等距都没做好对称性被破坏差模信号会部分转化为共模电流EMI问题就会冒出来。这也是为什么板厂和芯片原厂对差分对约束这么严格。1.2 等长容差怎么定从时延算出来很多人拿到设计文档看到“对内等长5mil”就机械照做却不明白这个5mil是怎么来的。这个数字本质上是由时序预算决定的。信号在FR4板材中的传播速度大约是6 mil/ps也就是每ps走6个mil。反过来算5mil的长度差大约带来0.8ps的时延偏差绝大多数低速差分接口完全能承受。但到了USB 3.0、PCIe这类高速串行链路协议对skew的要求以皮秒计换算成物理长度也就是2~3mil。所以别小看那几mil的误差在高速链路里就是几十ps的时序差。我一般建议对内等长严格按照芯片手册来如果手册没写保守一点就按5mil控制要求高的场景按2~3mil做。对间等长比如HDMI四对TMDS之间通常放宽到20~50mil因为不同通道之间一般有弹性缓冲机制。等距的容差没有等长那么量化规则里给出的Min Gap和Max Gap给了一个允许范围但记住一个原则首选Gap填的一定是阻抗计算出来的目标值布线时尽量贴近首选值走Min和Max只是给你扇出、过孔换层时留的活动空间。2. 原理图阶段就把差分对定义对2.1 命名规范与差分对指示符差分对首先要从原理图源头定义清楚这件事别拖到PCB里再做。AD识别差分对依靠的是网络名后缀和差分对指示符Differential Pair Directive共同配合。网络名的命名AD官方推荐的是_P和_N后缀比如USB_DP、USB_DN。大小写和前后缀作用其实不大关键是两条网络的“基名”必须一致只是一个带_P一个带_N。如果你用了_P和_N之外的写法比如和-AD默认不认需要在工程选项里配置后缀对应关系。所以最省事的方案就是统一用_P和_N。光有命名还不够必须在原理图上给差分网络放置差分对指示符。操作路径是 Place Directives Differential Pair或者直接用快捷键PVD。把指示符放置到其中一条网络比如正端网络的导线上然后按Tab键设置属性里面可以指定“正极网络”和“负极网络”。如果网络命名规范AD会自动匹配出另一条只需要确认就行。放指示符的意义是让工程在编译后把这两个网络“绑定”成差分对并携带阻抗Profile信息。这样原理图导入PCB时差分对信息会直接带过去省去在PCB里手动配对的麻烦。2.2 怎么确认差分对真的被识别了原理图编译通过后切换到PCB工程第一步先在Project面板看看有没有报错。然后打开PCB进入差分对编辑器快捷键DC或者用菜单 Design Differential Pairs。左侧是当前所有差分对列表右侧是未配对的网络。你需要检查左侧列表里是否列出了所有设计的差分对并且每对的网络名正确。如果发现某一对没出现优先检查两个地方一是原理图是否给这对网络放了指示符二是两个网络的命名是否都带上了_P/_N后缀。还有一种情况是命名规则正确但大小写不一致AD对匹配是区分大小写的也会识别失败。这时可以直接在Differential Pair Editor里手动从右侧窗口选中两个网络点击Add加进去不需要回原理图返工。手动添加差分对时注意正极和负极的顺序不要选反。AD允许你选中后点“Switch”交换极性但如果你中途换过连接器方向一定要核对极性。我曾经因为一对接反导致后续仿真和实际调试对不上排查了半天最后还是回到差分对编辑器才发现的。3. 等距实战Gap规则与差分对布线技巧3.1 Differential Pairs Routing规则参数怎么填进入PCB规则编辑器Design Rules快捷键DR。找到 Routing Differential Pairs Routing这里就是控制等距的核心规则。规则里有三个关键参数Min Gap、Gap、Max Gap。GapPreferred Gap是首选间距你希望两条线在整段路径上保持的间距值布线时AD默认按照这个值推线Min是允许的最小间距通常出现在焊盘、过孔密集的扇出区Max是允许的最大间距用于过渡区域。布线时如果你推挤线条AD会在Min到Max之间自动调整但一定优先保持首选Gap。还要设置一个约束如果规则里没填Preferred GapAD会提示规则不完整布线时不会按差分模式执行。所以这三个值都必须填Preferred Gap填核心目标值Min和Max根据板子实际布局给一个合理范围。我习惯Min设为首选Gap的70%~80%Max设为首选Gap的1.5倍左右。比如首选Gap是8milMin给6milMax给12mil给扇出留了余地同时不会让间距变化太离谱。规则匹配范围Where the first object matches 和 Where the second object matches默认是All Differential Pairs。如果板子上有不同的差分阻抗要求比如USB 90Ω、HDMI 100Ω建议在差分对编辑器中建两个类Class然后在规则里分别匹配避免一个全局规则覆盖所有差分对。这里顺便提一下层叠。差分阻抗不是光靠Gap就能定的它同时受线宽、介质厚度、铜厚、参考平面影响。AD的Layer Stack Manager里可以设置叠层参数并在Impedance Profile中配置差分阻抗目标。设置好之后布线时AD会根据叠层自动计算线宽和Gap。如果你有板厂给的阻抗模板优先按板厂模板设置比手动查公式靠谱得多。3.2 Gap值参考常见接口的差分阻抗场景具体Gap填多少不能拍脑袋。我列一个常见场景参考表注意这只是一个起点实际以叠层计算和板厂确认后的数据为准。接口/协议差分阻抗要求常见线宽/Gap参考4层板表层走线等长要求USB 2.090Ω线宽5milGap 8~10mil对内5milHDMI TMDS100Ω线宽5milGap 6~9mil对内5mil对间20milPCIe85Ω或100Ω线宽4milGap 7~8mil按协议要求千兆以太网100Ω线宽5milGap 8~10mil对内5milLVDS100Ω线宽5milGap 7~9mil对内5~10mil这里要强调Gap和线宽是关联的。在50Ω单端线宽大约5mil的叠层上差分100Ω的Gap通常在8~10mil之间。如果换了更薄的介质层线宽变细Gap也跟着变。所以不要看到某个教程截图里写了“8mil”就直接套用先确认叠层。我个人经验第一次设计时如果拿不准直接找板厂要他们常用叠层的阻抗设计参考或者让板厂帮你算好线宽间距。很多板厂在打样流程里就提供阻抗计算服务态度好一点问一嘴他们通常会给到具体数值比自己翻资料准。3.3 用差分对布线命令一次拉出两条线等距的落地操作必须使用交互式差分对布线命令而不是普通交互布线。普通布线一次只能拉一条线两条线之间的间距靠肉眼和手动调根本不可能稳定保持工作效率也极低。在PCB编辑界面启动交互式差分对布线的方法菜单 Route Interactive Differential Pair Routing或用快捷键PID。布线前先按Tab键打开属性面板在Options里确认Routing Width 和 Gap已经按照规则中的首选值设置。启动命令后鼠标会拖动两条线同时前进AD自动保持两条线的间距为规则中的Preferred Gap。布线过程中注意走线方向转弯时两条线会同步转弯间距在拐角处会有细微变化这是正常现象只要规则里Min/Max留够余量不会导致阻抗突变。如果遇到障碍物需要绕行use ShiftSpace切换拐角模式45度、圆弧、任意角度建议统一用45度角或圆弧制造方便信号质量也好。布线时可以按住Ctrl临时推挤旁边的线给差分对腾出空间但推挤时注意不要让间距突破Min值。拉完一条差分对后按一下空格键切换到下一段按Esc结束命令。此时最好目视检查一遍Gap是否有明显变化正常情况两条线看起来是“平行”的如果某一段间距明显变大多半是推挤时手动偏移过要撤回去重走。3.4 间距突变是硬伤扇出与过孔换层的处理即使平时布线都能保持Preferred Gap扇出区和过孔换层处最容易被忽视等距被破坏往往发生在这里。扇出是指从连接器、芯片引脚往外拉线的那一小段因为引脚间距小于差分间距两条线必须先在焊盘区域分开再慢慢汇合到目标Gap。这个“分开再汇合”的过程间距是渐变的AD会在规则允许范围内自动过渡。关键是别让这个过渡太急。如果引脚间距和首选Gap差太远可以先扇出到较短的垂直段再在空旷区域汇合。汇合点尽量不要靠近接收端引脚给阻抗恢复留一点距离。过孔换层也是一样的道理。一对差分线在换层处两个过孔之间的间距和走线间距不一致会形成阻抗回跳。处理办法过孔尽量成对放置两个过孔中心距接近走线间距换层后的走线起始段用最短路径重新回到Preferred Gap。如果板子空间允许可以在一对差分过孔旁边加一个地过孔给回流电流提供连续路径但这不是必须的视设计复杂度而定。一句话总结等距不是要求全程绝对一致而是要求阻抗连续、渐变可控。4. 等长实战绕线不是随便画蛇4.1 先设Matched Lengths规则等长规则在规则编辑器里的位置是 Design Rules Routing Differential Pairs Matched Lengths。这条规则针对的是“差分对内部两根线之间的长度差”和“同一类下多对差分对之间的长度差”。在规则属性里Tolerance填的就是允许的最大长度差。比如你在规则里设置差分对匹配范围为All Differential PairsTolerance填5mil意味着所有差分对内部两根线的长度差都必须小于等于5mil。如果你有多对不同要求建议创建差分对类Differential Pair Class然后为不同类分别建立等长规则匹配范围选对应类。比如USB那一对要求5mil以内HDMI四对要求内部5mil、对间20mil就不能用同一个全局规则一概而论。设置完规则之后DRC会自动检查等长情况。但要注意DRC的等长检查必须在布线完成、有实际走线之后才有效。布完线跑一次检查违反会在Message面板输出点击可以直接跳到对应位置。4.2 Interactive Diff Pair Length Tuning操作流程等长规则是检查工具真正动手把长度调到一致用的是“交互式差分对长度调整”功能。操作入口选中需要调整的差分对然后执行菜单 Route Interactive Differential Pair Length Tuning快捷键是UT。启动后鼠标在差分对上移动会以蛇形线的形式预览能增加多少长度。按Tab打开属性面板设定目标长度和容差。目标长度一般取同组差分对中最长的那对的长度或者直接填设计要求的长度。容差填和规则一致的数值比如5mil。正式操作流程先布完全部差分对确认等距没大问题。用报告工具查看每对差分对的当前长度找到最长的一对作为基准或者以设计要求值为准。选中需要调整的差分对执行UTTab设定目标长度和容差。鼠标在线上滑动AD实时计算当前位置能补充的长度显示在状态栏当达到目标范围时会出现绿色指示长度太短或太长会显示红色。确认绿色后点击放置蛇形线生成。调整过程中有几个快捷键非常常用按逗号和句号键调整蛇形线的振幅幅度按方括号键调整蛇形线段的间距即蛇形线的相邻边距按数字键或预设模式切换蛇形线样式。不同AD版本快捷键可能有细微差异但核心的几个操作基本一致。如果你发现按键没反应看一下PCB界面底部状态栏的提示那里会实时显示当前可用的快捷键。4.3 蛇形线参数调优与绕线禁忌很多人第一次绕蛇形线绕出来要么太密、要么太高不但制造麻烦对信号质量也没好处。几个实际经验振幅不要贪大。蛇形线振幅两条平行绕线之间的横向距离越大占用面积越大而且相邻平行段之间的距离变近彼此耦合增强会给差分对带来额外的共模噪声。我习惯把振幅控制在20~30mil左右最多不超过40mil。如果需要的补偿长度特别大宁愿多绕几段小的也不要一段绕成一个大大的包。蛇形线间距同一段蛇形线中相邻线边的距离最好不小于线宽的3倍实际操作至少留到2倍以上。间距太小两条相邻线段的耦合会很强烈信号会从正常的差分路径耦合到旁边的绕线段上相当于多了一段不必要的串扰。优先保证间距再考虑振幅。绕线的位置也有讲究。蛇形线尽量放在信号比较干净的区域内不要在时钟线、复位线、高压或大电流走线旁边绕。如果PCB空间紧张必须靠近干扰源至少加一点保护地线隔开。同理不要在差分对的源端或接收端附近绕。信号刚出发就遇到蛇形线阻抗变化和耦合都会对信号质量产生直接影响。正确做法是优先在走线中段、靠近接收端的空旷区域集中调整长度。绕完蛇形线之后再跑一次DRC确认误差满足要求。如果DRC还是报错先别急着重绕看看蛇形线是否在规则匹配范围内很多时候是Tolerance设得太严比如设成了0给自己留一点余量才是现实的。5. 多对等长与DDR地址线这类“组合拳”场景5.1 同组多对差分怎么一起等长很多应用不只有一对差分。HDMI有4对TMDSUSB 3.0除了DP/DN还有两组SuperSpeed收发对PCIe根据通道数可能是多对。这些差分对不仅要保证对内等长还要控制对间长度差skew。在建差分对时就应该同时给它们建类。在Differential Pair Editor中右下部分有个Class区域右键可以新建差分类然后把同组的差分对拖进去。比如把四对HDMI差分对全部放到一个名为HDMI的类里。然后在等长规则里做两条规则一个规则匹配All Differential Pairs控制对内误差Tolerance 5mil。一个规则匹配HDMI这个类通过“Minimum/Maximum Length”或“Matched Length”控制整体长度Tolerance 20~50mil。实际操作时对间等长最关键的是设定一个共同的“目标长度”。我的做法是先拉完所有差分对然后批量查看长度取平均或最长的那对作为基准再逐对Tune到基准附近。如果板子面积紧张允许对间误差大一些优先保证对内误差小。5.2 从差分对延伸到DDR地址线等长经常有人在评论区问“DDR地址线等长怎么设置”这里顺便说清楚。DDR的地址线和控制线是单端信号不是差分对它们用的规则类型和差分对不同在AD里对应的是Matched Length规则不是Differential Pairs Matched Length。但背后的调线思路是一样的先布完看最长线有多少然后通过Interactive Length Tuning或Interactive Diff Pair Length Tuning两条线也可以一起拉把短线补到目标长度。具体到AD操作DDR这类多根单端线的等长通常用一个Matched Length规则匹配一类网络Tolerance按DDR协议要求设置比如DDR3通常要求地址线间差异在20~50milDDR4更严格可能要求10mil以内。调整时选中一组线用UT逐根Tune或者用Interactive Multi-Route的等长调整功能一次性调多根。原理和差分对绕线一模一样只是规则类型换了。如果你用的是AD Viewer系列提醒一句Viewer只能查看工程和检查规则不能编辑走线修改等长必须回到完整版Altium Designer里操作。所以看到类似关键词时别以为换个查看器就能解决。6. 常见问题排查与避坑记录6.1 差分对不被识别怎么办症状明明在原理图里定义了差分对也放了指示符但PCB里Differential Pair Editor就是看不到或者差分对列表为空。排查顺序先检查原理图网络名是否真的是_P和_N结尾大小写和符号都要确认然后检查指示符是否放置成功双击看一下属性里两个网络是否都填对了最后重新编译工程再导入PCB一次。如果都不行直接在PCB的差分对编辑器里手动添加。这里有一个容易踩的坑原理图库里的元器件引脚名带_P和_N但你在原理图里重新命名网络时改了前面的识别名导致基名不一致。最好把网络名完全统一别在器件端改了一半。6.2 规则设了不生效先查优先级AD的规则引擎有一个特点多条规则同时匹配时优先级高的规则生效。如果你设置了一条全局差分对规则又设置了一条特定网络的差分对规则特定网络的规则优先级默认更高会覆盖全局规则。检查规则编辑器的“优先级”按钮确保想要的规则排在前面。另一个导致“等距无效”的原因是你用的是普通布线命令而不是差分对布线命令。普通布线不会自动应用Differential Pairs Routing规则两条线可能被当成普通单端线处理Gap自然无法保证。遇到这种情况先确认布线命令再查规则优先级。6.3 DRC一直报等长误差怎么查如果DRC报Differential Pair Matched Length违规先看报错信息里给的长度差是多少、目标长度是多少。然后打开差分对编辑器查看每对的当前长度判断是哪一对超差。有时DRC报错不是等长没调好而是规则里匹配范围设置错了。比如你只匹配了某个Class其他差分对找不到对应规则也会报“No rules matched”。这时检查规则范围和类名是否一致。还要注意蛇形线调完之后DRC需要重新跑一遍。AD的DRC是设计规则检查不是实时自动更新必须手动执行Tools Design Rule Check或按快捷键DR选择“Run Design Rule Check”。6.4 蛇形绕线绕多了反而坏事一次实测我早期调一块板子的USB差分对为了把一对线从长度差30mil压到5mil在一段很局促的区域里连续绕了三段蛇形线。绕完DRC确实通过了但后来拿到实验室测眼图发现上升沿有明显抖动波形也比预期差。后来排查发现问题就出在绕线段上。三段蛇形线彼此靠得太近互相之间产生了额外耦合而且绕线段的阻抗因为间距过密发生了偏移。最后我把三段蛇形线拆成两段中间用一小段正常间距的走线隔开振幅也调小了一些实测眼图才恢复正常。这件事给我的教训是等长是手段信号质量才是目的。绕线前先评估板面空间空间不够就调整布线路径别硬绕。DRC过了不代表信号一定没问题等长和等距要一起看绕线段尤其要留意间距是否过小。问题现象可能原因排查/解决方式差分对不识别网络命名不规范、指示符未放统一_P/_N后缀重放指示符Gap不生效用了普通布线命令、规则优先级错误改用差分对布线命令检查规则优先级DRC等长误报规则范围设置错、Tolerance太严检查规则匹配对象调整容差蛇形绕线后信号差绕线过密、间距过小、振幅过大控制绕线间距在3倍线宽以上分段绕线差分对阻抗不对叠层参数不准确、Gap和线宽不匹配用板厂叠层数据重新计算最后再分享一个小技巧做差分对布线之前先把层叠管理器里的阻抗Profile建好然后在布线规则里勾选“Use impedance profile”AD会自动根据Profile调整线宽和Gap。这样你在布线时根本不用手动记参数AD全程按阻抗连续的要求推线比任何经验值都靠谱。我第一次用这个功能时差分布线速度直接快了一倍。希望这篇能帮你把AD里的差分对做得又稳又快。
返回列表