ARTICLE DETAIL

资讯详情

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

Altium Designer 20差分对走线全攻略:从原理图到PCB的完整实践

Altium Designer 20差分对走线全攻略:从原理图到PCB的完整实践 1. 为什么差分对走线在AD20里这么容易翻车做高速数字电路设计的朋友都知道Altium Designer 20 里最让人纠结的一类走线就是差分对。USB、以太网、MIPI、LVDS、HDMI这些接口一旦跑起来一对差分线没处理好整板的信号完整性问题全来了。很多人把差分对做成两根平行的线就觉得万事大吉结果阻抗不连续、时序偏差、EMI超标最后回来查问题发现从原理图标识阶段就埋下了雷。这篇教程我就把 Altium Designer 20 差分对走线的完整链路拆开讲一遍从原理图怎么命名、怎么放置差分对标识到PCB里差分对编辑器怎么用、差分对规则怎么设再到交互式走线和等长绕线的实操手法一次说透。在开始之前先给大家一个整体认知AD20的差分对设计不是画两根线这么简单它背后有一条完整的工具链——原理图阶段必须用_P/_N后缀把网络名定义清楚再用差分对指令告诉软件这两个网络是一对PCB阶段要经过差分对编辑器收集网络、规则匹配、阻抗参数设计最后才是手动布线。任何一个环节漏了后面都会以各种诡异的方式报错。我见过太多人卡在原理图标了差分对PCB里却没有差分对这个坎上其实就是对这条工具链的运行机制理解不到位。1.1 差分信号的本质为什么我们非要折腾这一对线先花一分钟说清楚差分信号是什么这是后面所有设置的理论基础。差分信号是指在一对导线上传输两个等幅反相的信号接收端比较的是两个信号的差值。比如发送端送出的是1V和-1V接收端读到的就是2V的电平差。这种传输方式天生抗共模干扰——外部噪声如果同时叠加到两根线上差值基本不受影响——而且回流路径非常明确对地平面的依赖比单端信号小得多。这里面有个核心参数叫差分阻抗也就是这对线在传输过程中呈现的阻抗特性。差分阻抗不是单独看某一根线的阻抗而是由线宽、线间距、铜厚、介质层厚度和介电常数共同决定的。同样的叠层两根线离得越近差分阻抗越低线越宽阻抗越低。这也是为什么差分对规则设置里最重要的两个参数就是线宽Width和间距Gap它们直接决定了你做出来的板子阻抗是不是符合USB或者以太网要求的90Ω、100Ω。所以你在AD20里设置差分规则时心里要清楚这些数字不是随便填的它们最终会在板厂那里接受阻抗测试的检验。后面我会给出一套实际的参数经验值但更重要的是理解它们为什么这么定。1.2 AD20中差分对设计的完整链路从原理图到PCB再回到规则为了不让大家迷失在细节里我先把AD20差分对设计的整体流程列出来后面每一章对应一个环节原理图中把配对的两个网络命名为USB_P和USB_N这样的格式并放置差分对指令。编译工程后把原理图变化更新到PCB文档。在PCB的差分对编辑器中确认差分对已经存在必要时手动补建。在PCB规则中为这些差分对设置线宽、间距、等长约束。使用交互式差分对布线工具实际走线。走完线后使用等长调节工具做对内、对间等长补偿。跑DRC检查差分对相关的间距、长度、阻抗约束是否全部满足。这套链路里最容易被忽略的是第1步。很多人直接在PCB里手工画两根线虽然也能画出来但画出来的线不会被AD识别为真正的差分对后续的等长调节、规则匹配全都用不上DRC也不会把关那跟普通平行线没区别。2. 原理图阶段就把差分对钉死命名与标识的正确姿势原理图阶段的差分对处理是整个链路的地基。这一步做对了PCB阶段能省掉90%的麻烦做错了后面全是坑。2.1 网络命名硬规则_P/_N后缀不能乱来AD20默认通过网络名的后缀来识别差分对的两根线。一个差分对由两个网络组成正端网络以_P结尾负端网络以_N结尾且除了后缀之外前半部分必须完全一致。下面这个表是典型的正确命名和错误命名类型正端网络名负端网络名说明正确USB_PUSB_N前半段都是USB后缀_P/_N正确ETH_TX_PETH_TX_N带功能前缀也可以错误USB_PUSBN少了下划线AD识别不了错误USB_PUSB_N_1后缀不标准错误USB_PUSB_NEG只有正端是对的负端后缀不对这个命名规则可以在Project Options里调整但我强烈建议不要改就用默认的_P/_N。原因很简单保持工具默认行为能让你避免很多莫名其妙的问题而且原理图库里的符号、别人的图纸、第三方生成的网表九成都是按这个规则来的。2.2 放置差分对指令让软件知道这两根线是一对命名只是前提真正把两个网络绑定成差分对的动作是放置差分对指令。操作路径是Place Directives Differential Pair或者用快捷键P V D。执行后光标会带着一个菱形符号把它放在你要定义的那两个网络附近按Tab键打开属性面板。在属性面板里你需要关注三个字段Net Name这个差分对的名字比如USB注意这里不需要带_P、_N后缀。Positive Net正端网络选择USB_P。Negative Net负端网络选择USB_N。设置好后把这个菱形符号放到两个网络标号的引脚区域它会自动覆盖到这条网络线上。放置完成后原理图上会出现一个带箭头的菱形标记示意这个区域的两个网络构成一个差分对。这里有一个经常被问到的点是应该先放网络标签再放差分对指令还是先放指令再放标签我的习惯是先把两个网络标签分别放到对应的引脚上确保网络名已经正确连接了再放差分对指令。原因是差分对指令本身不负责创建网络它只是告诉AD这两个已存在的网络是配对的所以先有网络再绑定关系逻辑上不会出错。放完指令后一定要执行一次项目编译Project Compile PCB Project然后打开Message面板确认没有差分对相关的报错。常见报错是Net USB_P has no differential pair之类的这说明其中一个网络的配对关系没建立成功多半是命名不匹配或者指令没有覆盖到网络。如果你用的是比较新版本的AD20原理图库里也可以直接给引脚分配差分对属性但那是库设计层面的高级操作常规项目在原理图上放指令就够了不用把问题复杂化。3. PCB里的三个设置关卡差分对编辑器、规则类、等长规则原理图阶段的工作完成后更新PCB文档差分对信息才会跟着网络一起进入PCB。但很多第一次做差分对的人打开PCB后一脸懵差分对到底跑哪去了规则在哪设宽度和间隙怎么填这一章我把PCB里的三个关键关卡逐个讲清楚。3.1 差分对编辑器查看、验证、手动补建在PCB编辑界面下通过菜单PCB Differential Pairs Editor打开差分对编辑器。这个面板会列出当前PCB文档里所有被识别为差分对的网络组。你也可以在右侧面板栏里切换到PCB面板在下拉列表里选择Differential Pairs Editor。在这个编辑器里你能看到每个差分对的名字、正端网络、负端网络、以及当前的线宽和间距数值。用它的核心目的有两个第一验证原理图的差分对设置是否完整传递到了PCB。如果列表里缺少某个差分对说明原理图阶段漏标了或者更新PCB时没有勾选差分对变更项。这种情况下你可以直接在编辑器里手动添加右键选择Add然后在弹窗里手动选择正端网络和负端网络。但我要提醒一句——手动补建是补救手段不是常规手段。原理图才是设计的源头PCB里补建的差分对在下次工程变更时有可能被覆盖掉治标不治本。第二统一查看所有差分对的当前参数。在这里你能直观地看到差分对的Width和Gap如果发现某些差分对显示的值和预期不一致说明它们的匹配规则没有生效排查方向就指向规则设置而不是继续在编辑器里改。这里显示的参数只是报告当前实际值修改的主战场在规则编辑器里。3.2 差分对布线规则线宽、间隙与规则优先级真正的参数设置发生在Design Rules里。打开规则编辑器后定位到Routing Differential Pairs Routing这个规则条目这是AD20专门为差分对布线设置的规则项。双击现有规则或新建规则后你会看到两个关键区域Where the First object matches这决定了规则作用范围。默认是All意思是对所有差分对都生效。但如果你同时有90Ω的USB差分对和100Ω的以太网差分对就不能用All一把抓而是要用Custom Query或网络类来区分。比较实用的方式是先在Design Classes里建一个网络类比如叫DIFF_100R然后把以太网相关的差分对网络全部拉进去规则匹配方式选Net Class指定为DIFF_100R。这样USB和以太网就能各自享受不同的线宽间距。Constraints这里是最核心的参数区。你需要关注以下字段参数含义建议初始值Min Width最小线宽按阻抗计算结果设定比如4milPreferred Width首选线宽与期望阻抗对应比如5milMax Width最大线宽比首选宽1-2milMin Gap最小间距按阻抗计算结果比如8milPreferred Gap首选间距与期望阻抗对应比如8milMax Gap最大间距比首选宽2-4milMin Coupled Length最小耦合长度差分管脚应尽量保证耦合通常设为10-20mil为什么Width和Gap要区分Min/Typical/Max三档因为实际布线过程中你会在转角处、过孔附近、遇到障碍物时被迫调整线宽和间距。AD20允许你在当前规则范围内滚动调整后面布线章节会讲到超出这个范围就会报DRC错误。这三档就是你给布线操作划定的允许区间区间越窄阻抗一致性越好但布线难度也越大区间越宽操作空间大但信号质量没保证。规则优先级是另一个大坑。差分对规则和普通的Width规则、Clearance规则之间是有优先级关系的。AD20按规则列表中从下往上的顺序逐级匹配优先级从上到下递减。如果某个网络既匹配单端Width规则又匹配Differential Pairs Routing规则而差分对规则的优先级更低实际走线时AD会采用单端Width规则的线宽导致差分对线宽完全失控。正确的做法是把差分对规规则拖到所有普通Width规则之上或者在规则编辑器左下方的Priority按钮里点击调整优先级。3.3 对间等长规则多组差分对同时满足长度约束除了对内等长这个第四章走线时详细讲多组差分对之间的长度匹配也是一个高频需求。比如并行传输的LVDS总线或者某些控制器要求多对差分信号延迟一致。AD20提供了一条专门的规则High Speed Differential Pairs Matching在部分版本中叫Differential Pairs Matching。这条规则的作用是把多组差分对约束在同一个长度允许范围内。新建规则后匹配对象选All或者特定网络类然后设置Tolerance允许的最大长度偏差常见0.5mm~1mm要求高的系统可以设到0.25mm。Rule Scope选择哪些差分对参与匹配通常选网络类。这个规则设置好之后你在DRC阶段就能看到哪些差分对超出了等长范围非常直观。如果项目中只有一两对差分信号不涉及多对间等长那这条规则可以不设重点放在对内等长上。4. 亲自上手从第一根差分对到等长绕线的完整操作规则全部设置好之后接下来就是最让人兴奋也最容易出问题的实际操作环节。这里的操作手感很重要很多知识点是改过几版板子之后才真正理解的我尽量把细节一次讲透。4.1 交互式差分对布线入口、快捷键与操作手感差分对布线不能像画普通单端线那样一根一根画那样很难保证两线同步换层、同步拐弯。AD20专门提供了差分对布线工具位于Place Interactive Differential Pair Routing快捷键是P I。启动命令后光标靠近任意一个差分管脚如果这个网络已经被正确识别为差分对光标下面会同时带上两根线——正端和负端间距和线宽自动按规则里的Preferred值显示。布线的过程中下面这些快捷键直接决定效率和结果ShiftR切换布线模式包括推挤走线、绕障走线、忽略障碍等。差分对布线最常用的是Push模式后面的线会被自动推开保持间距。逗号和句号切换差分对的线宽和间距会在规则允许的Min/Max范围内切换组合实时调整方便你在主线上用一个值、在过孔区域用另一个值。星号*或小键盘/-切换信号层换层时AD会自动为两条线各添加一个过孔。CtrlShift滚轮同样可以切换层但会把滚轮操作映射到换层比按星号直观一些。Backspace撤销上一段走线从上一个拐点重新拉。实际操作中最重要的一条经验是起线时先让光标吸附到引脚中心确认两根线同时出现再开始走。如果只出现一根线说明这个引脚对应的网络没有被识别为差分对的一部分停下来检查网络名和差分对指令不要硬着头皮走。我见过太多人强行走完回头一看负端线在另一层或者根本没连上。在走线过程中还要注意两条线应尽量平行、等长、保持恒定间距。遇到90°转角时AD默认会切成45°斜角和圆弧的组合这是合理的因为直角会产生严重的阻抗突变。不要刻意取消这个行为。在狭窄区域确实需要拐90°时尽量把转角处的Gap稍微拉大一点缓冲阻抗变化。4.2 换层、过孔与差分对的对称性控制差分布线换层是信号完整性出问题的高发区。一对差分线在换层时两个过孔必须保持与走线相同的间距对称放置不能一个过孔在左边一个在右边。AD20在你使用差分对布线工具换层时会自动把两个过孔按当前间距放置但前提是过孔自身的大小和间距符合规则要求。几个值得注意的点换层前先确认目标层的参考平面完整。如果信号从顶层换到底层顶层和底层都要有连续的地平面否则回流路径被切断差分信号就变成单端信号了。换层的那一小段短线尽量走垂直方向与主信号流向呈90°减少参考平面切换引起的回流突变。过孔不能打在差分线Gap的中间位置这会破坏耦合结构。完成一对差分线的布线后建议立刻按L键或者View Flip Board翻转板子看一眼过孔位置是不是对称的。这个检查动作30秒就能做完但能帮你省掉一次信号测试时才发现问题的返工成本。4.3 等长绕线对内、对间的实际操作差分对内两线长度不一致会导致接收端的差分信号出现共模分量严重时直接判错数据。所以布线完成后等长调节是必备操作。AD20的等长调节工具入口在Route Interactive Differential Pair Length Tuning快捷键T R。启动后点击已经布好的差分对中的任意一条线AD会自动识别整个差分对弹出一段等长调整预览。在调整面板里最重要的设置是Target Length目标长度。你的目标长度应该设为这对差分线中最长的那一根的长度因为等长调节只会让短线变长去追长线不会把长线缩短。实操的时候我习惯先选中这个差分对打开PCB面板查看当前两根线的实际长度然后取较大值加上0.1mm左右的余量作为Target Length。接下来是绕线的具体操作走线从一端开始沿原路径拖动AD会在你拖动的路径上自动生成蛇形绕线。按Tab键循环切换绕线形式包括经典的U型蛇形、菱形绕线、锯齿形等。USB、以太网这类对串扰敏感的信号首选U型蛇形。按数字键1、2、3调节绕线的振幅平行段的间距按减号和等号键调节绕线间距。绕线的实时长度会显示在光标旁长度达到Target Length目标值后颜色会从红色变为绿色这时候按右键结束这一段绕线。绕完后记得再跑一次Tools Length Tuning面板确认最终长度在公差范围内。对间等长多个差分对之间等长的操作和这个类似区别在于目标长度要设为所有参与匹配的差分对中最长的那个。你可以先逐个记录每对差分线的长度找出最大值然后把每一对都按这个值绕一遍。这个过程比较机械但多对并行信号绕完之后DRC里那排等长报错一次性全消掉的爽感还是很值得的。5. 高频翻车现场与排查手册这些坑我当年每个都踩过最后这部分我把自己和身边同事在差分对设计里踩过的坑整理成一份排查手册。大家看完之后如果也遇到类似问题直接对照来查比翻文档快得多。5.1 原理图里标了差分对PCB里却没有现象在原理图里放置了差分对指令网络名也是标准的_P/_N但更新到PCB后打开差分对编辑器列表里空空的。排查链路先检查原理图编译是否通过了差分对校验。编译后Message面板如果出现Net ... is not matched with a differential pair的警告说明指令没放对位置或者指令属性里Positive Net/Negative Net与实际网络名不一致。执行Design Update PCB Document在工程变更对话框中仔细看列表中是否有Add Differential Pair这一项。如果没看到说明AD认为这次更新不需要新增差分对。比较常见的原因是之前更新过一次但那次更新没有勾选差分对之后重新更新时AD只检测到网络变化而没有检测到差分对新增。确定原理图确实没问题的前提下最稳的做法是先编译器编译工程然后执行Design Update PCB Document在弹出的对话框左下角点击Validate Changes和Execute Changes确保所有变更项被正确执行。这条排查链路是标准化的如果走完还是不行再考虑在PCB差分对编辑器里手动添加。但手动添加相当于绕过程序校验后续DRC只能查规则查不到差分对关系本身是否完整。5.2 差分对规则设置了但不生效现象规则编辑器里Differential Pairs Routing设置得很漂亮线宽5mil间距8mil实际走线时却自动变成了10mil的普通宽度或者DRC一直报错说Gap不满足。排查链路先确认规则作用范围是否包含了你要布的差分对。如果你在Where the First object matches里选了某个网络类而这个类里没包含对应网络规则自然不生效。最快验证方法是在规则的Custom Query里输入HasDifferentialPair(USB)手动指定匹配的差分对名。检查规则优先级。规则编辑器右下角的Priority按钮打开后看Differential Pairs Routing在列表中的位置。差分对规则必须排在普通Width规则和Clearance规则之上也就是列表靠上位置优先级数字更小。否则网络同时满足两条规则时优先生效的可能不是差分对规则。检查是否同时存在多条Differential Pairs Routing规则。AD20允许多条规则作用于同一个差分对但只有优先级最高的那条会生效。建议每个差分对只保留一条匹配规则避免混乱。5.3 差分对走线变灰或变绿DRC报错现象布线过程中或者走完线后差分对变成灰色或绿色高亮DRC报出大量Clearance Constraint Violations。排查链路最常见的原因是普通Clearance规则和差分对Gap规则冲突。差分对内两根线的距离通常只有8mil甚至更小但你在单端Clearance规则里填的Min Clearance可能是10mil。如果两条线被识别为两个普通网络而不是差分对的一部分DRC就会按Clearance规则去查报错没商量。解决办法是在Clearance规则里增加一条针对差分对网络的豁免规则或者把差分对网络的最小间距要求单独降低。如果你不想改Clearance规则更简单的办法是把差分对规则比Clearance规则优先级调高同时保证差分对网络确实被差分对规则匹配到了。AD在计算DRC时如果网络属于差分对会优先使用差分对规则的Gap进行计算而不去套用普通Clearance。另外还有一种情况走线过程中不小心切换到了单端布线模式有些版本快捷键容易按错导致一根线走成了普通走线另一根还在差分对模式里。这时候Vio一定会出现问题。检查方法就是看光标下是不是同时带着两根线如果不是按ShiftR切回差分模式重走。5.4 差分对等长但阻抗仍然不达标现象长度明明匹配了Gap和Width也按规则设置了但板厂反馈阻抗测试不合格或者实测眼图不过。排查链路先算一下你是不是把单端阻抗和差分阻抗搞混了。很多新手会用单端50Ω的经验值去设计差分线导致差分阻抗完全不对。差分阻抗通常是单端阻抗的两倍左右100Ω差分对应50Ω单端但叠层不同会有差异。检查有没有跨越参考平面分割。哪怕是一条完美的100Ω差分对如果某一段走线的参考地被分割了这一段阻抗就变了。注意过孔旁边的地过孔留下的反焊盘空隙这些也会破坏参考平面连续性。线宽和间距是不是在转角处被默认改了AD20在拐角处自动调整线宽间距的功能在一些版本里默认是启用的如果转角处的Gap被撑大阻抗会上升一小段。可以在Rule里把转角处约束改成保持Gap不变或者绕线时减少直角。这条其实不是纯AD操作问题更多是设计习惯问题。我从自己打样回来的阻抗报告得出的结论是差分阻抗不是软件里填对了就行的最终要以板厂的叠层和阻抗测试为准。正规做法是发板前把叠层和阻抗要求发给板厂让板厂给你算出匹配的线宽间距然后你在AD规则里按板厂的建议值填写再发板。这个顺序反了大概率会多花一次打样费。6. 收尾前再说几句大实话差分对走线在Altium Designer 20里其实不复杂复杂的是理解它背后这套原理图标识 PCB规则 交互布线的联动逻辑。只要记住三个关键词命名规范、差分对指令、规则匹配整个流程就能串起来。新手最容易翻车的地方恰恰是在原理图阶段图省事把全部希望寄托在PCB的手动操作上。真正做过几块高速板之后你会发现原理图阶段的30秒标识工作比PCB阶段花半小时去排查问题划算得多。我个人现在布差分对已经形成了一套固定习惯原理图放置差分对指令后立刻编译确认Message面板干净更新PCB后第一时间打开差分对编辑器数一遍数量对不对规则设置时总是不忘调优先级走线全程开DRC等长调节完成后截一张Length Tuning报告留档。这套动作看着繁琐但好处是每块板子都是一样的流程出问题的时候能快速定位到具体环节而不是东一榔头西一棒子地瞎猜。最后再分享一个小技巧如果你的项目里差分对数量很多建议在原理图里就把它们统一命名成带功能前缀的格式比如MIPI_TX0_P、MIPI_TX0_N方便在PCB规则里用网络类批量管理。这个习惯早期养成后面做越大的板子受益越明显。
返回列表