ARTICLE DETAIL

资讯详情

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

AD20差分对等长布线实战:规则设定、蛇形绕线与阻抗控制

AD20差分对等长布线实战:规则设定、蛇形绕线与阻抗控制 1. 差分对等长布线到底在解决什么问题1.1 从两个真实翻车案例说起前两年帮朋友调一块工业相机的采集板USB 3.0 接口死活跑不满速插上电脑能识别但一传大文件就掉线。原理图查了三遍电源纹波也测了都没问题。最后把 PCB 拿出来一看USB 那对差分线一根绕了个大弯另一根直接斜穿过去两根线长度差了将近 400mil。重新等长之后问题当场消失。还有一次是 HDMI 输出花屏原因更隐蔽——差分对内部两根线虽然等长了但走线中途换层的时候只打了一个过孔参考平面突变导致阻抗不连续眼图直接糊掉。这两个案例基本覆盖了差分对布线里最常见的两类坑对内等长没做好以及等长之外忽略了阻抗和参考平面。很多人以为差分对只要“两根线一样长”就万事大吉实际上等长只是入场券真正决定信号能不能跑稳的是等长、等间距、阻抗连续、参考平面完整这几件事一起做到位。1.2 差分信号和单端信号的本质区别要理解为什么差分对要这么讲究得先搞清楚差分信号到底怎么工作的。单端信号是一根线传电平参考地回流噪声直接叠加在信号上。差分信号是两根线传一对极性相反的信号接收端取的是两者的差值。外部噪声同时耦合到两根线上做差之后就被抵消掉了——这就是共模抑制。听起来很美好但前提是两根线受到的干扰必须“一样”也就是它们的电气环境要高度对称。一旦两根线长度不一致信号到达接收端的时间就有先后差值波形会出现一个台阶眼图张开度变小。长度差越大这个时间差越大能容忍的速率就越低。业界常用的经验值是差分对内长度失配控制在 5mil 以内高速信号比如 5Gbps 以上甚至要压到 2mil 以内。这个数字不是拍脑袋来的它对应的是信号在 PCB 上的传播速度——FR-4 板材上大约 6mil/ps5mil 的长度差对应约 0.8ps 的偏斜对于上升沿 100ps 左右的信号来说已经接近可容忍极限。1.3 哪些信号必须做差分等长不是所有差分线都要死磕等长。USB 2.0 这种低速差分长度差个几十 mil 通常也能跑但下面这几类必须认真对待信号类型典型速率对内等长要求备注USB 3.0/3.15-10Gbps≤5mil超速对尤其严格HDMI 2.06Gbps/lane≤5mil四对 TMDS 都要PCIe Gen3/48-16GT/s≤5mil对内极敏感DDR4/DDR5 DQS1.6-3.2Gbps≤5mil差分时钟对千兆以太网1.25Gbps≤10mil相对宽松CAN/LVDS中低速≤20mil视速率而定这张表是我自己项目里总结的常用参考值具体还要看芯片手册和信号完整性仿真结果。有些芯片厂商会在 datasheet 里明确给出对内偏斜的容忍度比如某些 FPGA 的 GTX 收发器会写“intra-pair skew 5ps”换算成 FR-4 上的长度就是 30mil 左右比通用经验值宽松不少。所以先查手册再定规则别一上来就无脑按 5mil 卡。1.4 等长布线的三种常见策略实际项目里做等长无非三种思路蛇形绕线把短的那根绕成 S 形或锯齿形补足长度差。这是最常用的方法但绕不好会引入额外的寄生参数。调整走线路径通过改变两根线的拓扑让它们天然等长比如让长的那根走内圈、短的那根走外圈。引脚交换如果芯片支持引脚映射比如 FPGA 的 IO 可以任意分配直接把差分对的正负引脚对调省去绕线。第一种最灵活第二种最干净第三种最省事但受限于芯片。我一般优先考虑引脚交换实在不行再绕线。绕线的时候有个原则绕线段尽量靠近信号源端因为信号从源端出发时上升沿最陡绕线引入的阻抗不连续在这里影响相对可控如果绕在接收端附近反射会直接叠加在采样点上更危险。2. AD20 里差分对的规则设定全流程2.1 原理图阶段就要把差分对定义好很多人习惯在 PCB 里临时指定差分对其实更规范的做法是在原理图阶段就完成定义。AD20 支持两种方式第一种是用差分对标识符。在原理图里给网络命名时用_P和_N后缀比如USB_DP和USB_DNAD20 会自动识别为一对差分信号。注意后缀必须成对出现且大小写要一致USB_DP和usb_dn是认不出来的。第二种是用差分对指令。在原理图里放一个Differential Pair指令Place → Directives → Differential Pair然后把它连到两根线上在属性里指定这对差分对的名称。这种方式适合网络名不规范、但你又想强行配对的场景。提示如果原理图里网络名已经定了不想改可以在 PCB 里用Design → Classes手动创建差分对类把两个网络拖进去。但这种方式不会同步回原理图后续改板容易漏不推荐作为常规做法。2.2 在 PCB 中创建差分对类打开 PCB 文件后走Design → Classes在Differential Pair Classes下面新建一个类比如叫USB3_Diff然后把需要归类的差分对加进去。这一步的意义在于后面设规则时可以按类批量设不用一对一对地配。一块板子上如果有十几对差分线按类管理能省大量时间。创建完类之后回到Design → Rules在Differential Pairs Routing下面会看到几个规则项Max Uncoupled Length最大非耦合长度控制两根线分开走的最大距离Matched Lengths等长容差Max Gap差分对内部最大间距Min Gap差分对内部最小间距Preferred Gap首选间距这几个规则是差分对布线的核心下面逐个拆。2.3 等长规则Matched Lengths怎么设在Matched Lengths规则里关键是设Tolerance。这个值就是允许的长度差。我一般这样设普通差分USB 2.0、CANTolerance 20mil高速差分USB 3.0、HDMI、PCIeTolerance 5mil超高速PCIe Gen4、USB4Tolerance 2mil设完之后AD20 会在 PCB 里实时显示每对差分线的长度差超标的会标红。这里有个细节AD20 默认统计的是整条网络的长度包括过孔和焊盘内的部分。如果你只想统计走线长度需要在规则里勾选Ignore Pad Entries或者手动调整统计方式。我一般会保留焊盘统计因为焊盘内的那段也是实际电气路径的一部分。2.4 非耦合长度Max Uncoupled Length为什么重要差分对不是全程都紧挨着走的。从芯片引脚出来到第一个耦合点或者中途遇到障碍物被迫分开这些“非耦合段”如果太长共模抑制能力就会下降。Max Uncoupled Length就是限制这个长度的。经验值非耦合长度不超过差分对总长的 20%绝对值控制在 200mil 以内。比如一对总长 2000mil 的差分线非耦合段加起来别超过 400mil。设规则的时候可以直接填 200milAD20 会检查每一段非耦合区域。注意有些设计里差分对必须跨分割区这时候非耦合长度会天然变长规则要适当放宽但跨分割本身就要尽量避免——参考平面不完整会让回流路径断裂比非耦合更致命。2.5 间距规则Gap的设定逻辑差分对的间距决定了差分阻抗。AD20 里可以设Min Gap、Max Gap、Preferred Gap三个值。间距越小耦合越强差分阻抗越低间距越大耦合越弱阻抗越接近两根独立单端线的并联。以常见的 100Ω 差分阻抗为例在 FR-4 板材、线宽 5mil 的条件下间距大约设在 7-8mil 能到 100Ω。但这个值跟叠层结构强相关必须用阻抗计算工具算过再填。AD20 自带的Layer Stack Manager里有个阻抗计算器或者用 Saturn PCB Toolkit 这类外部工具也行。我一般把Preferred Gap设成算出来的目标值Min Gap和Max Gap各留 ±2mil 的余量。这样布线时如果稍微偏一点不会立刻报错但偏太多就会被规则拦住。2.6 规则优先级和冲突处理AD20 的规则是按优先级从高到低匹配的。如果你同时建了全局规则和类规则类规则要放在全局规则上面否则全局规则会先匹配类规则形同虚设。在Rules对话框里可以用Priorities按钮调整顺序。另外差分对规则和普通走线规则可能冲突。比如普通走线的最小间距是 6mil但差分对内部间距要求 7mil这时候差分对规则要优先。AD20 会自动处理这种层级关系但前提是差分对规则确实建在Differential Pairs Routing下面而不是混在Clearance里。3. 交互式布线从手动绕线到智能等长3.1 启动差分对布线的正确姿势在 AD20 里布差分对快捷键是P→IInteractive Differential Pair Routing或者直接在工具栏找那个双线图标。启动之前先确认几件事差分对类已经建好规则已经设好当前层和目标层之间的过孔规则已经配好栅格设成合适的大小一般 5mil 或 1mil太大会导致绕线不精确布线的时候鼠标点在第一根线上AD20 会自动把另一根也拉出来保持设定的间距。按Tab键可以临时改线宽和间距但改完只对当前这段生效不会改规则。3.2 过孔处理换层时的对称性差分对换层必须两根线同时打过孔而且过孔要尽量靠近。如果一根先打、另一根绕一段再打那段的长度差和阻抗不连续都会出问题。AD20 在差分对布线模式下按数字键2可以放置差分过孔对两个过孔会自动保持设定间距。过孔对的位置也有讲究尽量放在两根线耦合最紧密的地方也就是紧挨着走线的位置。如果过孔离走线太远引出那段就成了非耦合段长度要算进Max Uncoupled Length里。实操心得我习惯在换层位置附近先放一对差分过孔然后用布线工具把两根线分别引到过孔上这样比让工具自动打过孔更可控。自动打过孔有时候会把过孔放在很奇怪的位置后续调整反而麻烦。3.3 蛇形绕线的参数控制AD20 的交互式布线支持实时蛇形绕线。在布线状态下按Shift A可以切换绕线模式常用的有Accordion手风琴式适合在直线段上补长度绕出来的形状像手风琴Trombone长号式适合在拐角处补长度绕线幅度更大Sawtooth锯齿式最紧凑但寄生电容最大绕线的时候有几个参数要盯住参数推荐值说明绕线幅度Amplitude3-5 倍线宽太小耦合强太大占空间绕线间距Gap≥3 倍线宽避免相邻绕线段互相耦合绕线角度45° 或圆弧90° 拐角会引入阻抗突变我一般用 Accordion 模式幅度设成线宽的 4 倍间距设成线宽的 3 倍。绕的时候尽量让绕线段集中在差分对的一侧不要两根线都绕那样长度差反而不好控制。3.4 实时长度监控和动态调整AD20 在布线时会在状态栏显示当前差分对的长度和长度差。如果装了PCB Panel可以在Differential Pairs面板里看到所有差分对的实时状态超标的会用红色标出。更精确的做法是用Reports → Measure Primitives或者Tools → Signal Integrity来测。我习惯在布线过程中随时按R→LReport Length看当前长度快接近目标值时放慢速度用微调绕线补最后那几 mil。注意AD20 的长度统计有时候会把过孔内的长度算进去有时候不算取决于规则设置。如果发现统计值和预期差很多先去规则里检查Ignore Pad Entries和Ignore Via Entries这两个选项。3.5 差分对布线的层间切换策略高速差分对尽量在同一层走完减少换层次数。每换一次层就多一对过孔多两个阻抗不连续点多一段非耦合长度。如果实在要换层优先换到相邻层因为相邻层的参考平面通常相同回流路径最短。换层的时候如果参考平面也变了比如从 GND 换到 VCC要在过孔附近加缝合电容或缝合过孔给回流信号提供低阻抗路径。这个细节很多人忽略但在高速设计里往往是花屏、掉线的元凶。4. 等长之外的隐形杀手阻抗、参考平面和串扰4.1 差分阻抗不是设了间距就完事前面说了间距决定差分阻抗但实际影响阻抗的因素远不止间距。线宽、铜厚、介质厚度、介电常数、阻焊层厚度每一个都会影响最终阻抗。我见过一个案例同一块板子上表层差分线和内层差分线用了同样的线宽和间距结果表层阻抗 92Ω内层 105Ω差了 13Ω。原因就是表层有阻焊层等效介电常数和内层不一样。所以每一层都要单独算阻抗不能一套参数走天下。AD20 的Layer Stack Manager里可以按层设置阻抗目标布线时工具会根据当前层自动匹配线宽和间距。4.2 参考平面完整性的检查方法差分对的参考平面必须完整不能有跨分割。检查方法很简单在 PCB 里打开View → Board Planning Mode然后看差分线正下方的平面层。如果平面层有裂缝、开槽或者被其他信号线割断那就是跨分割了。跨分割的后果是回流路径被迫绕行形成一个大环路辐射和串扰都会急剧增加。如果实在避不开可以在跨分割处加缝合电容给回流提供一条“捷径”。缝合电容的容值一般选 0.1μF 或 0.01μF位置要尽量靠近跨分割点。4.3 差分对之间的串扰怎么控差分对和差分对之间也会串扰尤其是并行走很长一段的时候。控制方法有三个拉开间距相邻差分对的中心距至少是线宽的 5 倍最好 10 倍减少并行长度如果两对差分线必须靠近尽量让它们垂直交叉而不是平行加地线隔离在两对差分线之间加一根接地走线并每隔一段打过孔到地平面我一般优先用第一种实在空间紧张才加地线。加地线的时候要注意地线必须两端都接地中间每隔 λ/10 打一个过孔否则地线本身会变成一根天线。4.4 常见问题速查表现象可能原因排查方法解决措施高速传输掉线对内长度差超标用 Report Length 测每对长度重新绕线压到 5mil 以内眼图闭合阻抗不连续用 TDR 测阻抗曲线检查过孔、换层、绕线处花屏/闪屏参考平面跨分割检查平面层完整性调整走线或加缝合电容误码率高差分对间串扰测相邻对间距和并行长度拉开间距或加地线隔离规则报错但找不到原因规则优先级冲突检查 Rules 优先级顺序调整类规则到全局规则之上长度统计不准焊盘/过孔统计设置检查 Ignore Pad/Via Entries按需勾选或取消4.5 几个容易踩的坑第一个坑是绕线绕过头。AD20 的实时长度显示有延迟有时候你看着还差 10mil实际已经超了。我的做法是绕到差 20mil 左右就停然后用单根线的微调功能补最后那点。第二个坑是过孔对不对称。AD20 自动打的差分过孔对有时候会一前一后虽然长度差不大但阻抗不连续点错开了效果打折扣。手动放的时候要确保两个过孔在同一水平线上。第三个坑是忽略了焊盘内的长度。芯片引脚焊盘本身有长度如果两根线的焊盘长度不一样比如一个引脚在芯片左侧一个在右侧这段长度差也要算进去。AD20 默认会统计但如果你手动关了统计就会漏掉。第四个坑是规则设了但没生效。AD20 的规则匹配是按优先级来的如果全局规则优先级高于类规则类规则就不会被应用。建完规则一定要用Design → Rules → 检查确认一下。5. 从规则到实操的完整检查清单5.1 布线前的准备清单原理图里差分对网络名规范_P/_N后缀PCB 里差分对类已创建所有差分对已归类叠层结构已确认每层差分阻抗已计算差分对规则已设等长容差、非耦合长度、间距规则优先级已调整类规则在全局规则之上栅格设为 1mil 或 5mil捕捉精度足够5.2 布线中的实时检查项每对差分线的实时长度差是否在容差内非耦合段长度是否超标过孔对是否对称、是否靠近走线换层处参考平面是否连续相邻差分对间距是否足够绕线段幅度和间距是否合理5.3 布线后的验证步骤用Reports → Measure Primitives逐对测长度用Tools → Signal Integrity做反射和串扰分析检查所有差分对的规则违例Design → Rules → Violations导出 Gerber 前确认差分对层设置正确如果有条件做 TDR 实测验证阻抗5.4 我个人的几条经验第一规则宁严勿松。设 5mil 容差实际做到 3mil比设 10mil 做到 8mil 要稳得多。高速信号对偏斜的容忍度比想象中低。第二绕线尽量早做。在布线初期就把长度差控制住比后期返工要省事。后期板子密了想绕都没地方绕。第三过孔能少则少。每对差分线换层不超过两次最好一次都不换。如果必须换优先换到相邻层。第四参考平面比等长更重要。长度差 10mil 可能还能跑参考平面断了直接没戏。布线时先保证平面完整再考虑等长。第五仿真不是万能的但不仿真万万不能。AD20 自带的 Signal Integrity 工具虽然不如专业 SI 软件精细但用来做快速验证足够了。花十分钟跑个仿真比板子回来发现跑不通再改要划算得多。差分对布线这件事说到底就是对称两个字。长度对称、间距对称、过孔对称、参考平面对称。把这几个对称做到位信号自然就稳了。AD20 的工具已经足够强大规则设好之后剩下的就是耐心和细心。我见过太多板子因为差分对没处理好而返工其实只要在布线阶段多花半小时检查就能省下几周的调试时间。
返回列表