ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AD差分走线完全指南:从规则设置到阻抗匹配的实战流程

2026/10/6 1:25:01 拓冰建站 浏览量
AD差分走线完全指南:从规则设置到阻抗匹配的实战流程 做高速PCB的朋友应该都有体会差分走线这个东西看似简单实则坑很多。USB、HDMI、MIPI、千兆以太网……几乎每个高速接口都离不开它。我第一次画带HDMI的板子时以为差分就是两根线并排走结果回来测试眼图惨不忍睹后来才明白线宽间距、等长控制、参考平面、阻抗连续性哪一环都马虎不得。这篇文章我就以Altium Designer下面统一叫AD为工具把差分走线从规则设置到阻抗匹配这条路完完整整走一遍。不管你是刚接触差分对的新手还是被等长、阻抗搞得头皮发麻的老伙计这篇文章应该都能帮你少踩几个坑。1. 差分信号的底层逻辑为什么大家都爱用它1.1 差分信号到底在传什么要理解差分走线为什么讲究先得搞清楚差分信号本身在干嘛。所谓差分传输就是一对信号线一般标记为P和N或者和-上传输幅度相同、极性相反的两个信号。接收端真正关心的是这两根线的电压差而不是各自对地的绝对电压。这一点和单端信号有本质区别单端信号是拿一根线的电压和GND比GND不干净信号就被污染。差分信号的第一个好处是抗干扰能力强。外部噪声耦合到这对线上时只要布线对称两根线上感应的噪声大小几乎一样、方向也一样在接收端做差之后共模噪声就被抵消掉了。这个特性在USB、CAN、RS485这些总线里特别有用因为它们经常要在电磁环境比较恶劣的场合工作。第二个好处是能有效抑制自身对外辐射。两根线上的电流大小相等、方向相反在空间上产生的电磁场相互抵消。所以差分对不太容易成为干扰源这对EMC测试非常友好。我做过的很多板子高速线走差分之后辐射骚扰测试比之前单端走线明显好过。第三个好处是摆幅小、速率可以做得更高。差分对的逻辑电平跳变不需要很陡因为接收端靠的是差值判断很小的摆幅就能被识别因此寄生功耗低信号速率也容易做上去。像PCIe、USB3.x、HDMI 2.1这些协议动不动就是几Gbps甚至十几Gbps差分传输几乎是唯一选择。1.2 阻抗匹配为什么是差分对的命门明白了差分信号的优势接下来得面对一个现实信号速率越高传输线的“传输线效应”越明显。当信号波长和走线长度可比时走线就不能再被当成一条简单的导线而是一根有特性阻抗的传输线。特性阻抗是什么可以理解成信号在传输过程中感受到的瞬时阻抗它由走线宽度、到参考平面的距离、介质材料等因素决定。如果这个阻抗不匹配信号到了接收端或者途经某个阻抗突变点比如过孔、换层、连接器一部分能量会被反射回来。反射会造成信号的过冲、下冲、振铃严重时直接导致接收端误判。眼图上一个眼睛睁不开大概率就是这里出了问题。差分对对应的特性阻抗叫差分阻抗Differential Impedance。常见的高速接口里USB 2.0是90欧差分千兆以太网是100欧HDMI的单端差分要求是100欧PCIe则根据版本不同有85欧和100欧的规范。注意差分阻抗不是“两根单端阻抗相加”那么简单它受到两根线之间耦合程度的直接影响。两根线靠得越近耦合越强差分阻抗和2倍单端阻抗的偏差就越大。这也是为什么差分对布线不能随便把间距放宽——你放宽了耦合变了阻抗也跟着变。所以你在做差分走线时本质上是在做一件事在给定叠层和参考平面的前提下用合适的线宽、线距组合把差分阻抗控制到目标值附近同时尽量保证整个链路上阻抗的连续性。后面所有规则设置、布线操作、等长处理都是围绕这个目标展开的。2. 在AD里把差分对的根扎好创建与规则设置2.1 从原理图开始定义差分对网络很多人直接在PCB里画差分其实更好的做法是在原理图阶段就把差分对定义好。这样从原理图到PCB网络自然带上差分属性后面布线和规则检查都会省很多事。在AD的原理图里先在库中找到或放置一对带差分标记的器件引脚然后选中这两根网络执行菜单命令 Place Differential Pair或者直接按快捷键 P V D在不同版本里快捷键可能会有差异菜单路径更保险。这时光标会变成十字提示你选择作为正端Positive的网络单击后再选择负端Negative的网络。AD会在网络标签上自动加上_P和_N这样的后缀后缀名可以在工程选项里配置常见的有_P/_N、_P/_M等并且这两个网络会被识别成一棵“差分树”。如果你用的原理图库比较老器件引脚上没带差分标记也不用着急。可以手动给网络命名比如USB_DP和USB_DN然后在原理图中选中这两根网络批量添加差分对。另外AD也支持在PCB环境中直接通过菜单 Design Differential Pair Editor 或者 PCB面板里的Differential Pairs Editor来创建或修改差分对。我个人的习惯是原理图阶段搞定PCB里再核对因为原理图才是设计的源头源头不干净后面各种检查和仿真都会受影响。2.2 差分规则的核心参数线宽、间距、耦合差分对创建完成后必须给它们设置专门的布线规则。在AD中打开 PCB Rules and Constraints Editor快捷键 D R找到 Routing Differential Pairs Routing在这里配置差分走线的核心参数。里面几个关键项我得逐个说清楚。Line Width 是差分对单根线的走线宽度。这个值直接影响单端阻抗进而影响差分阻抗通常由叠层和阻抗计算决定这部分后面专门讲。Minimum/Maximum 可以设置一定范围给布线工具一点点余量但别设得太宽松否则AD布线时可能走出不满足阻抗要求的宽度。Gap 是差分对内两根线的间距也叫耦合间距。这是决定耦合强度的关键参数。间距越小耦合越强差分阻抗相比2倍单端阻抗偏差越大间距越大耦合越弱差分对就越接近两根独立的单端线抗干扰和抑制辐射的优势会打折扣。所以 Gap 不能乱设必须结合目标阻抗和线宽一起算。还有一项需要配合设置的是差分对与其他信号线之间的安全间距这个通常在 Clearance 规则里单独建一条约束对象设为差分对和普通信号之间的间距。经验值是至少保持3倍线宽3W的间距避免旁边信号对差分对造成串扰。这几个参数很容易被忽略尤其很多教程只教你“线宽6mil、间距6mil”这种现成组合但不讲为什么是6和6。实际上不同的叠层、不同的介质材料、不同的目标阻抗这个组合差别非常大。板厂给你的阻抗线宽表里每个目标阻抗往往对应几组不同的线宽/间距组合你得根据自己板子的密度和实际情况挑一组不能拿来就套。2.3 等长规则长度和误差的约束差分对的等长约束同样在规则编辑器里配置位置在 Routing Length 和 Matched Length 这两个地方。Length 规则用来约束单根差分线或者说每条网络的最大/最小长度这个在特定协议有明确总线长度预算时需要设置。比如USB 2.0的全速/高速模式对线长有一定限制超出预算信号衰减和时序偏差就会超标。不过更常见的是用 Matched Length 来约束一对差分线之间的误差。Matched Length 里有 Tolerance 一项这就是差分对内两根线的长度差容忍值。具体多少取决于信号速率和协议要求像I2S这类低速差分±20mil甚至更松都没问题USB 2.0高速差分通常建议控制在5mil以内USB 3.0/HDMI这类超高速差分严格一点可以做到±2mil甚至±1mil。注意这里说的是“对内误差”intra-pair skew不是“对间误差”inter-pair skew。对间误差一般靠蛇形绕线等手段去补偿而对内误差就是要求正负两根线尽量等长。在实际项目中我一般先按协议要求设一个目标值比如±5mil然后布线完成后再跑一遍规则检查如果部分差分对没达标再用蛇形线微调。别一开始就把误差设成±1mil否则布线工具会为了满足这个严苛条件疯狂绕线反而搞出来一堆难看的走线加工也容易出问题。2.4 规则怎么精准套到差分对上AD的规则系统是基于“对象”的也就是说你要指定这条规则管的是哪些网络。在 Differential Pairs Routing 规则里默认的 Query 是 All意思是对所有差分对生效。如果整板只有一种差分阻抗要求比如全部100欧这样没问题。但现实往往是USB要90欧、HDMI要100欧、以太网也要100欧这时候就得分类管理。比较好的做法是在PCB面板里打开 Differential Pairs Editor为不同阻抗要求创建不同的差分对类别Differential Pair Class。然后在规则编辑器里把每种阻抗对应的规则 Query 改写成 InDifferentialPairClass(USB_Class) 这种形式让不同类别套用不同参数。同理空间允许的话Clearance 规则也可以按类别分别设。比如电源相关的差分对像某些芯片的电源时钟和普通高速差分对间距要求不一样用类别区分管理最稳妥。这种“规则类别化”的习惯一开始可能觉得麻烦但板子复杂起来、叠了多层之后你会庆幸当时做了这个分类。3. 真正上手画差分布线顺序与关键操作3.1 差分对布线前必须做的三件小事规则设好不是马上就能拉线正式布线前有几个准备工作别跳过。第一核对叠层和参考平面。打开 Layer Stack Manager快捷键 D K确认差分信号层上下的参考平面是完整的GND或者电源层并且所有参考平面都不要有大的分割槽。跨分割是差分阻抗不连续的罪魁祸首后面会细说。第二把网表里所有的差分对都在Differential Pair Editor里过一遍确认类别归属、误差设置、线宽间距没有问题。尤其是从其他项目复制过来的规则经常带着旧项目的网络类别残留导致新板子的规则压根没生效。第三设置好布线栅格和捕获点。差分布线对栅格比较敏感建议把当前活动层的布线栅格设成线宽加间距的整数倍这样拉出来的差分对走线均匀不会出现间距忽大忽小的情况。3.2 交互式差分布线从P键开始准备好了就可以开始拉线了。AD里最常用的差分布线工具是交互式差分对布线Interactive Differential Pair Routing启动方式很简单先选中一对差分网络比如在PCB面板里选中一个差分对然后按 P 键再按 I 键或者直接用菜单 Route Interactive Differential Pair Routing。如果网络没选中命令起来后按下 Tab 键在弹窗里选择要走的那对差分网络。布线时有个小窍门AD会自动让两根线并排走这时候你只需要控制其中一根线的路径另一根会跟着调整。但这种“自动跟随”不是死板的如果你遇到障碍物需要绕开可以按 ShiftR 切换走线模式忽略障碍/推挤障碍/绕开障碍一般推挤模式在密板上更顺手。拉线的顺序也讲究。我的习惯是先布对时序要求最严格的那一对比如时钟差分对然后布其余高速数据差分对最后再处理低速差分和普通信号。这样核心部分有最高的布线和参考平面优先级后续调整起来也方便。3.3 蛇形等长的正确打开方式差分对内等长没满足时一般用蛇形线来补偿。AD里的操作是选中需要调整的那根差分线注意不是选差分对启动 Interactive Length Tuning快捷键 T R然后沿着走线方向拖动光标AD就会自动生成蛇形绕线。蛇形线的参数在按Tab键弹出的属性面板里调整。关键参数有 Amplitude蛇形幅度也就是蛇形伸出部分的宽度、Spacing蛇形各段之间的间距、Gap蛇形与旁边走线的间距。这几个参数不是随便设的。幅度太大转弯处阻抗不连续严重间距太小相邻的蛇形段之间会产生耦合相当于额外改变了对内阻抗。经验值是蛇形幅度取线间距的35倍蛇形段间距不小于线宽的2倍这样既补偿了长度又不至于对阻抗产生明显影响。另外蛇形绕线尽量放在差分对的中间位置别放在靠近连接器或驱动端的地方因为端接附近的阻抗突变对信号质量影响最明显。这一点很多人不注意总在焊盘边上绕蛇形结果等长是达标了信号质量反而更差。3.4 过孔和换层最容易埋雷的地方当差分对需要从顶层换到内层或者底层时过孔就成了整个链路里阻抗突变最集中的位置。处理不当整段差分线的功力全废。首先过孔必须成对放置、对称分布。也就是说N和P两根线的过孔位置要镜像对称确保两根线经过过孔后的路径长度一致。否则换层后一根线长一根线短对内误差直接超标。AD里可以通过设置过孔的X/Y方向偏移一个正一个负来保证对称。其次过孔的孔径和焊盘尺寸关系到过孔本身的寄生电容。高频信号对过孔寄生电容很敏感孔径太大、焊盘太大都会让阻抗下降。一般情况差分信号过孔的孔径和焊盘都比普通信号过孔略小一号具体数值可以和板厂确认。另外如果一个过孔在多层板中穿过多个无连接的平面层会产生很长的“过孔桩”via stub桩越长信号反射越严重。高速差分线建议使用背钻工艺或者选择合适深度的盲埋孔来消除桩线。最后换层后要立即在附近放置一个回流过孔也就是给参考平面提供一个回流路径的通孔。差分信号换层后返回电流也要跟着换到另一层如果回流路径不连续会造成整个链路的阻抗抖动。回流过孔的位置通常在差分对换层点的两侧对称放置。4. 阻抗匹配落地从叠层到板厂沟通4.1 叠层设计阻抗的地基很多工程师阻抗算不准根本原因不是公式用得不对而是叠层先就错了。叠层是阻抗计算的基础它决定了差分线的参考平面距离、介质厚度和介电常数这些参数一变同样的线宽线距阻抗完全不一样。做叠层规划时有几个原则要牢记。差分信号层最好相邻参考平面GND或电源且参考平面要完整。通常4层板的经典叠层是 Signal-GND-VCC-Signal顶层和底层走信号中间两层做平面6层板则可以在顶层和底层之外再增加内层信号层但每层信号都必须紧贴完整的参考平面。参考平面到信号层的距离也就是介质厚度直接控制阻抗大小。距离越近阻抗越低距离越远阻抗越高。所以4层板的叠层中如果芯板core厚度偏大差分阻抗往往会偏高这时候要么增大线宽要么缩小线距来调整。这就是为什么不要照搬别人的“6mil/6mil”就能出100欧——换一块板厂、换一种半固化片PP数值就全变了。4.2 用Polar Si9000算阻抗手把手流程阻抗计算我习惯用Polar Si9000PCB行业最常用的阻抗计算工具。虽然现在AD自带的阻抗计算功能越来越完善但板厂工程师之间沟通时Si9000的输出格式几乎是行业标准用它算出来的结果直接发给板厂双方都省心。算差分阻抗之前先把叠层参数搞到手。你需要知道信号层到最近参考平面的介质厚度、介电常数Er、铜箔厚度、阻焊厚度等。这些参数最权威的来源就是板厂的叠层表所以最稳妥的做法是先找一家靠谱的板厂要他们的叠层表按他们的工艺参数算而不是自己拍脑袋定一个Er值。以表层微带线Surface Microstrip为例Si9000里操作流程大概是这样的新建一个计算模型选 Differential Surface Microstrip依次填入单端线宽、线距、铜厚、介质厚度、介电常数工具会给出差分阻抗。如果算出来不是目标值比如不是100欧调整线宽/线距再算直到满足要求。这时候你得到的线宽和线距就是你在AD规则里要填的值。内层带状线Differential Stripline的算法和微带线不同它对介质厚度和介电常数的敏感性不一样但流程是类似的。有个常见误区是有人把微带线算出来的线宽直接套到内层结果阻抗对不上就是因为没有重新计算。4.3 影响阻抗的那些“玄学”因素说实话阻抗计算值再精确实际生产出来也会和理论值有偏差。因为有些工艺因素很难在计算模型里完全模拟。第一个是玻纤效应。PCB的基材是玻纤布加树脂玻纤的介电常数和树脂差别不小。差分线如果正好走在玻纤布编织缝隙比较大的位置信号感受到的介电常数和相邻位置不一样阻抗就会有细微差异。现在很多高速板用扁平玻纤布如1067、1080等开纤布来减小这种效应或者通过走线方向的调整来规避。第二个是阻焊层的影响。阻焊油墨的介电常数通常在3.54.5之间比空气高。差分线表面涂了阻焊后有效介电常数上升阻抗会下降几个欧姆。Si9000里有个专门的选项来考虑阻焊影响计算表层差分阻抗时别忽略它。第三个是铜箔粗糙度。铜箔表面不是绝对光滑的粗糙度会影响高频信号的传输速度和损耗。速率特别高的设计板厂会提供经过修正的介电常数和损耗因子直接用来计算会更准。普通的100欧差分设计影响不明显但了解一下总没坏处。4.4 和板厂沟通时的关键信息最后阻抗匹配的落地离不开板厂的配合。发板前一定要单独附一份阻抗要求说明注明哪些网络需要控制阻抗、目标阻抗是多少、误差范围是多少一般±10%。不要只在BOM或备注里提一句“USB差分要做100欧”太笼统板厂很容易理解偏差。我在实际项目中通常会在板框内放置一个阻抗测试条coupon供板厂做阻抗测试用。测试条要根据你的叠层和走线参数制作板厂一般会替你排版但你至少要在发板时提出来。另外如果整板有多个阻抗要求比如90欧和100欧的差分都有一定要在文件中明确区分区域或网络避免板厂只按一种阻抗做阻抗控制。还有一个小细节AD导出Gerber时记得把阻抗规则相关的丝印或标记层也导出来至少让板厂能从文件中看出你的阻抗要求对应的物理位置。否则板厂默认按他们自己的经验帮你处理最后出来的阻抗可能和你预期的差不少。5. 招式之外的坑常见问题与排查心得5.1 等差检查报错先看规则再改线差分等长检查是DRC的常客。经常遇到这种情况明明觉得已经绕线绕得很齐了DRC还是报长度不匹配。这时候先别急着继续绕打开规则编辑器看看 Matched Length 的约束对象对不对。AD默认的等长规则可能只对某个类别的网络生效如果你的差分对没有被加进那个类别规则形同虚设。还有一种情况是原理图里差分对的正负网络定义反了。AD里如果网络名后缀识别错误创建出的差分对正负端顺序和实际布线逻辑对不上PCB里拉线时会发现两根线不按预期并排走绕来绕去就是绕不好。检查方法是打开 Differential Pair Editor逐对确认正负端网络是否正确。另外AD的差分对规则里有个“Phase Tolerance”相位误差相关参数和长度误差是关联的不能只设Tolerance不管相位。如果在高速信号里不关注相位关系单独控制长度误差意义不大。这一点从USB 3.0开始特别明显协议里明确规定了对内skew和对间skew的限制光满足长度DRC是不够的。5.2 差分对旁边有干扰串扰排查三步走有时候等长也达标了阻抗也算得没问题但是实测信号还是不行眼图闭合或者抖动偏大。这种时候很大概率是差分对收到了邻近信号串扰排查思路我一般分三步。第一步看间距。差分对和相邻信号线包括其他差分对、单端线甚至时钟线的间距是不是足够大。间距不够高频信号会通过寄生电容和互感耦合进来。低于3W的间距串扰风险很高。第二步看平行长度。即使间距够了如果差分对和受害信号线平行走线太长累积串扰也不容忽视。曾经调过一块板子差分对和一根时钟线平行走了快两英寸间距其实有6mil以上但还是干扰明显。改成跨层绕行或者拉开间距后问题就消失了。第三步看回流路径。差分信号对参考平面的回流电流非常敏感如果参考平面被切割回流电流就不得不绕路产生较大的电流环进而辐射到邻近差分对上。检查一下每一段差分线正下方的参考平面是否连续完整用AD的层显示功能配合高亮走线查看比光在2D视图里看靠谱。5.3 实测阻抗不上道从板材到测试条找原因阻抗实测值偏了别急着赖板厂先自己排查。第一确认测试规范。板厂给你标的阻抗值用的是TDR时域反射计测试出来的和仿真计算值本身存在一定偏差。测试条的走线长度、形状也会影响测试结果。沟通时问清楚板厂的测试条件比如测试信号上升时间、测试条长度别拿一个理想值直接对比实际测试值。第二检查自己的叠层设置是否过度理想化。例如介电常数根据频率变化会略有不同你算阻抗时用的Er值是某个频率点的实际工作频率不同阻抗会有几个欧姆的偏移。对100欧差分来说差几个欧姆通常还好但如果速率很高、容限很严就得认真对待。第三考虑玻纤效应和阻焊影响叠加。表层走线阻抗受阻焊影响最大如果你在开窗没阻焊区域和盖油区域都走了差分线两段阻抗可能不一样。严格来说差分线的开窗/盖油尽量统一不要一段有阻焊一段没有否则从TDR测试的波形上能看到明显的阻抗台阶。6. 实战小贴士让AD差分工作更顺手的几个习惯最后分享几个我在日常使用中沉淀下来的小习惯可能有些偏门但确实能提高效率和稳定性。第一合理使用“差分对颜色”功能。在PCB面板里给不同差分类别设置不同的走线颜色比如USB类别标成绿色、HDMI标成蓝色、以太网标成橙色。板子层数多、差分对数量大时这个功能能让你几秒钟内定位所有目标差分对省下大量找网络的时间。第二善用“Copy规则”功能时一定注意检查来源板的叠层。AD允许从其他PCB文件导入规则非常方便但旧规则里的线宽、间距和现在这块板的叠层很可能完全不匹配。每导入一次规则都要在规则编辑器里重新核一遍和阻抗相关的设置。第三保存布线前的“规则快照”。在布线开始前把规则设置导出一份菜单 File Export Rules一旦后续操作把某条规则改乱了直接导入恢复即可。这个习惯在我处理复杂设计时帮我避免过很多次“规则被无意修改却不知道”的困局。第四DRC跑完记得看“差分对检查”专项。AD的DRC默认并不会把所有差分对相关问题都报出来需要你在 Design Rule Checker 里确认 Differential Pairs 相关检查项是开启的。否则板子都发出去才发现有一对差分没布等长返工成本就大了。第五用AD的阻抗剖面Impedance Profile功能看整板阻抗分布。这个功能相对冷门但在排查“哪条差分线阻抗有问题”时非常实用。它能把板子上所有差分对的阻抗计算值以不同颜色高亮显示出来一眼就能看出哪个区域偏离目标阻抗。配合自己的计算交叉验证基本能定位布线上哪里做得不够好。做一个高速差分设计其实更像是在做一门平衡的艺术——线宽、线距、叠层、参考平面、过孔、等长每一项都是变量牵一发动全身。规则设置只是起步真正的功夫在布线过程中每一个细节的判断。希望这篇实战总结能让你在AD里做差分走线的时候少走一些弯路。如果后面你在实践中遇到什么不一样的情况也欢迎一起交流毕竟做硬件的乐趣很多时候就在于大家一起趟过那些怎么想都想不到的坑。