☰
AD差分对等长等距布线:原理与实操完全指南
2026/10/7 5:54:27 网站建设 项目流程

做高速数字板卡的这些年,我几乎每块板子都要和差分对打交道。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,或者直接用快捷键P+V+D。把指示符放置到其中一条网络(比如正端网络)的导线上,然后按Tab键设置属性,里面可以指定“正极网络”和“负极网络”。如果网络命名规范,AD会自动匹配出另一条,只需要确认就行。

放指示符的意义,是让工程在编译后把这两个网络“绑定”成差分对,并携带阻抗Profile信息。这样原理图导入PCB时,差分对信息会直接带过去,省去在PCB里手动配对的麻烦。

2.2 怎么确认差分对真的被识别了

原理图编译通过后,切换到PCB工程,第一步先在Project面板看看有没有报错。然后打开PCB,进入差分对编辑器:快捷键D+C,或者用菜单 Design > Differential Pairs。左侧是当前所有差分对列表,右侧是未配对的网络。你需要检查左侧列表里是否列出了所有设计的差分对,并且每对的网络名正确。

如果发现某一对没出现,优先检查两个地方:一是原理图是否给这对网络放了指示符,二是两个网络的命名是否都带上了_P/_N后缀。还有一种情况是命名规则正确但大小写不一致,AD对匹配是区分大小写的,也会识别失败。这时可以直接在Differential Pair Editor里手动从右侧窗口选中两个网络,点击Add加进去,不需要回原理图返工。

手动添加差分对时,注意正极和负极的顺序不要选反。AD允许你选中后点“Switch”交换极性,但如果你中途换过连接器方向,一定要核对极性。我曾经因为一对接反,导致后续仿真和实际调试对不上,排查了半天,最后还是回到差分对编辑器才发现的。

3. 等距实战:Gap规则与差分对布线技巧

3.1 Differential Pairs Routing规则参数怎么填

进入PCB规则编辑器:Design > Rules(快捷键D+R)。找到 Routing > Differential Pairs Routing,这里就是控制等距的核心规则。

规则里有三个关键参数:Min Gap、Gap、Max Gap。Gap(Preferred Gap)是首选间距,你希望两条线在整段路径上保持的间距值,布线时AD默认按照这个值推线;Min是允许的最小间距,通常出现在焊盘、过孔密集的扇出区;Max是允许的最大间距,用于过渡区域。布线时如果你推挤线条,AD会在Min到Max之间自动调整,但一定优先保持首选Gap。

还要设置一个约束:如果规则里没填Preferred Gap,AD会提示规则不完整,布线时不会按差分模式执行。所以这三个值都必须填,Preferred Gap填核心目标值,Min和Max根据板子实际布局给一个合理范围。我习惯Min设为首选Gap的70%~80%,Max设为首选Gap的1.5倍左右。比如首选Gap是8mil,Min给6mil,Max给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Ω线宽5mil,Gap 8~10mil对内5mil
HDMI TMDS100Ω线宽5mil,Gap 6~9mil对内5mil,对间20mil
PCIe85Ω或100Ω线宽4mil,Gap 7~8mil按协议要求
千兆以太网100Ω线宽5mil,Gap 8~10mil对内5mil
LVDS100Ω线宽5mil,Gap 7~9mil对内5~10mil

这里要强调,Gap和线宽是关联的。在50Ω单端线宽大约5mil的叠层上,差分100Ω的Gap通常在8~10mil之间。如果换了更薄的介质层,线宽变细,Gap也跟着变。所以不要看到某个教程截图里写了“8mil”就直接套用,先确认叠层。

我个人经验,第一次设计时如果拿不准,直接找板厂要他们常用叠层的阻抗设计参考,或者让板厂帮你算好线宽间距。很多板厂在打样流程里就提供阻抗计算服务,态度好一点问一嘴,他们通常会给到具体数值,比自己翻资料准。

3.3 用差分对布线命令一次拉出两条线

等距的落地操作,必须使用交互式差分对布线命令,而不是普通交互布线。普通布线一次只能拉一条线,两条线之间的间距靠肉眼和手动调,根本不可能稳定保持,工作效率也极低。

在PCB编辑界面,启动交互式差分对布线的方法:菜单 Route > Interactive Differential Pair Routing,或用快捷键P+I+D。布线前,先按Tab键打开属性面板,在Options里确认Routing Width 和 Gap已经按照规则中的首选值设置。

启动命令后,鼠标会拖动两条线同时前进,AD自动保持两条线的间距为规则中的Preferred Gap。布线过程中注意:

  • 走线方向转弯时,两条线会同步转弯,间距在拐角处会有细微变化,这是正常现象,只要规则里Min/Max留够余量,不会导致阻抗突变。
  • 如果遇到障碍物需要绕行,use Shift+Space切换拐角模式(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 Pairs,Tolerance填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,快捷键是U+T。

启动后,鼠标在差分对上移动,会以蛇形线的形式预览能增加多少长度。按Tab打开属性面板,设定目标长度和容差。目标长度一般取同组差分对中最长的那对的长度,或者直接填设计要求的长度。容差填和规则一致的数值(比如5mil)。

正式操作流程:

  1. 先布完全部差分对,确认等距没大问题。
  2. 用报告工具查看每对差分对的当前长度,找到最长的一对作为基准,或者以设计要求值为准。
  3. 选中需要调整的差分对,执行U+T,Tab设定目标长度和容差。
  4. 鼠标在线上滑动,AD实时计算当前位置能补充的长度,显示在状态栏;当达到目标范围时,会出现绿色指示,长度太短或太长会显示红色。
  5. 确认绿色后点击放置,蛇形线生成。

调整过程中有几个快捷键非常常用:按逗号和句号键调整蛇形线的振幅(幅度),按方括号键调整蛇形线段的间距(即蛇形线的相邻边距),按数字键或预设模式切换蛇形线样式。不同AD版本快捷键可能有细微差异,但核心的几个操作基本一致。如果你发现按键没反应,看一下PCB界面底部状态栏的提示,那里会实时显示当前可用的快捷键。

4.3 蛇形线参数调优与绕线禁忌

很多人第一次绕蛇形线,绕出来要么太密、要么太高,不但制造麻烦,对信号质量也没好处。几个实际经验:

振幅不要贪大。蛇形线振幅(两条平行绕线之间的横向距离)越大,占用面积越大,而且相邻平行段之间的距离变近,彼此耦合增强,会给差分对带来额外的共模噪声。我习惯把振幅控制在20~30mil左右,最多不超过40mil。如果需要的补偿长度特别大,宁愿多绕几段小的,也不要一段绕成一个大大的包。

蛇形线间距(同一段蛇形线中相邻线边的距离)最好不小于线宽的3倍,实际操作至少留到2倍以上。间距太小,两条相邻线段的耦合会很强烈,信号会从正常的差分路径耦合到旁边的绕线段上,相当于多了一段不必要的串扰。优先保证间距,再考虑振幅。

绕线的位置也有讲究。蛇形线尽量放在信号比较干净的区域内,不要在时钟线、复位线、高压或大电流走线旁边绕。如果PCB空间紧张必须靠近干扰源,至少加一点保护地线隔开。

同理,不要在差分对的源端或接收端附近绕。信号刚出发就遇到蛇形线,阻抗变化和耦合都会对信号质量产生直接影响。正确做法是:优先在走线中段、靠近接收端的空旷区域集中调整长度。

绕完蛇形线之后,再跑一次DRC确认误差满足要求。如果DRC还是报错,先别急着重绕,看看蛇形线是否在规则匹配范围内,很多时候是Tolerance设得太严(比如设成了0),给自己留一点余量才是现实的。

5. 多对等长与DDR地址线这类“组合拳”场景

5.1 同组多对差分怎么一起等长

很多应用不只有一对差分。HDMI有4对TMDS,USB 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~50mil,DDR4更严格,可能要求10mil以内。调整时选中一组线,用U+T逐根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,或按快捷键D+R,选择“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里的差分对做得又稳又快。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询