做硬件的朋友多少都躲不开USB3.0,不管是给MCU扩展高速接口、做Type-C转接板,还是画FPGA测试板,只要板子上出现5Gbps的高速差分对,在Altium Designer里布差分线就是逃不掉的一关。今天这篇只讲一件事:在AD里把USB3.0的差分线从规则设置到等长绕线完整走通,尽量做到保姆级,每一步都拆开讲,保证你看完能直接上手抄作业。
先说清楚这篇适合谁。如果你刚接触AD没多久,还没画过差分线,那这篇能帮你走完完整流程;如果你已经布过USB2.0或者LVDS这类低速差分信号,这篇能帮你把思路升级到5Gbps的高速层面,避免那些“看着连上了,实测眼图一团糊”的坑。USB3.0最核心的电气要求就三条:90Ω差分阻抗、信号完整性尽量做干净、对内/组间等长控制做好。整篇教程就围绕这三件事展开,从叠层设计检查开始,到规则设置、对线、绕线,最后到DRC和投产前的验证项,一条龙讲完。
1. 动手之前先把三件事想明白
1.1 拿到USB3.0原理图,先分清这几种信号
USB3.0接口里有两种信号阵营,别一上来就急着布线。一种是USB2.0的D+/D-,90Ω单端或者跳线当45Ω单端来看,传输速率480Mbps;另一种是USB3.0的SSTX+/SSTX-和SSRX+/SSRX-,这是真正意义上的5Gbps差分对,也是今天的主角。如果你用的是Type-C连接器,还要注意它支持正反插,所以会有TX1+/TX1-、TX2+/TX2-、RX1+/RX1-、RX2+/RX2-四组差分对,主控通常只需要其中一组工作,另一组通过CC逻辑切换过来。
这里有个很容易踩的坑:有不少人把USB3.0的差分对当成USB2.0的D+/D-来看待,觉得都是差分信号,规则差不多。实际上USB3.0单通道速率是5Gbps,信号上升沿可能到100ps,等效带宽接近5GHz。在这个频率下,过孔stub、参考平面断裂、走线换层点不一致都会被放大,直接反映到眼图上。所以做USB3.0的第一步,不是去AD里点鼠标,而是先把整条链路想清楚:主控引脚到AC耦合电容,电容到连接器引脚,这中间每一段走线都是差分对,每一段都要保持阻抗连续。
1.2 90Ω差分阻抗从哪来:叠层和计算工具
很多新手有一个误解,觉得阻抗是“布线规则里设置出来的”。其实规则只是告诉AD你要什么,真正决定阻抗的是你的叠层参数——介质厚度、介电常数、铜厚、线宽线距。换句话说,你先要确定板厂给的叠层能做出90Ω差分阻抗,然后再去规则里填线宽线距。
最简单的思路是直接用阻抗计算工具,比如Polar Si9000、Saturn PCB Toolkit,或者免费的在线阻抗计算器。以常见的四层板1.6mm板厚为例,表层到参考平面用半固化片,厚度通常在3.5mil到5mil左右,介电常数4.2左右,铜厚1oz(约1.2mil)。算下来表层差分微带线要做到90Ω,线宽大概在5mil到6.5mil,线距(边到边)大概在5mil到7mil这个区间。我习惯先按6mil线宽6mil线距作为初值,去叠层工具里验证,然后等板厂反馈他们的实际叠层后再微调。
内层走线的话,因为带状线两面都有参考平面,阻抗更容易做稳定,但线宽往往比表层要宽1到2mil。四层板如果层叠是TOP-GND-PWR-BOTTOM,内层走线一般放在第三层或第二层附近不现实,通常还是在表层走USB3.0,除非你的板子层数多、走线特别密,才考虑把差分对内层收。我的经验是:能做在表层就做在表层,微带线好算、好调试、绕线也方便,代价是表层要注意屏蔽和串扰隔离。
注意:千万别跳过叠层计算直接凭感觉填线宽。你填一个11mil的“经验值”进去,出来的实际阻抗可能只有65Ω,USB3.0根本过不了信号完整性测试,板子又改不回来,只能重新做。阻抗计算这一步花15分钟,能省后面几周的折腾。
1.3 AC耦合电容的位置和焊盘处理
USB3.0规范要求发送端做交流耦合,也就是说差分信号在物理链路上要串一个电容。这个电容一般放在主控侧,容值常用0.1uF或0.22uF,耐压要求不高,但封装别选太大,0402比较合适,0603有时候也能用,只是占地方且阻抗不连续的区域更大。
电容位置有几个讲究。第一,要靠近发送端放,也就是主控引脚出来尽量快到电容,而不是先绕一圈再回来串电容。第二,电容两边的走线宽度要保持一致,不能电容前是6mil、电容后变成5mil,这样必然产生反射。第三,电容的焊盘本身比走线宽,会带来寄生电容,导致局部阻抗偏低。解决办法是让电容下方紧邻参考平面保持完整,有条件时可以把电容焊盘外的阻焊开窗优化一下,让阻抗突变尽量小。
我当然知道这些属于信号完整性细节,很多小板子不较真也能跑起来,但既然标题叫“保姆级教程”,这些点早晚会遇到。你按这个思路做,至少能保证流片一次通过,而不是样板回来之后来来回回飞线。
2. Altium Designer里差分对规则全设置流程
2.1 网络命名和差分对创建,一看就会的固定操作
进AD之后别急着画线,先把差分对建出来。AD识别差分对的方式很死板:它靠网络名的后缀来匹配,默认规则是_P和_N,你也可以自定义后缀,比如_P/_N、_PLUS/_MINUS。我强烈建议你在原理图阶段就把USB3.0的差分网络命名为SSTXP/SSTXN、SSRXP/SSRXN这样简洁且成对的名字,导入PCB后直接在Differential Pair编辑器里选就行。
具体操作:打开PCB界面,菜单Design->Differential Pairs,或者用右下角的Panels调出PCB面板,在下拉框里选Differential Pair Editor。左边是未分配的差分对列表,右边是已生成的差分对。选中SSTX_P和SSTX_N,点中间绿色的>加号按钮,再点OK,一组差分对就生成了。四组信号都这么操作,保证每组的_P和_N都被成功配对。
这里有个小坑:如果你原理图里网络名写的是SSTX+和SSTX-,AD默认是不认的,你得在原理图里统一改成后缀命名,或者到Differential Pair Editor里手动指定两个网络。所以在做原理图库的时候就要养成好习惯,高速差分网络的后缀统一用_P/_N,省得导入PCB后再手动配。
2.2 规则设置里四个核心参数,逐个说透
差分对创建好后,打开Design->Rules,找到Routing->Differential Pairs Routing。这里要设置的参数看起来简单,实际坑不少。
线宽(Width)和线距(Gap):AD里区分Min、Preferred、Max三种值。一般把Min和Max设得跟Preferred一致,或者稍微留一点弹性,但别让AD在自动布线时乱变化。对USB3.0,我先算好叠层,设成线宽6mil、线距6mil,如果走线太密需要压缩,可以改线距到5mil,但线距越小差分耦合越强,实际的差分阻抗也会下降,改完一定要重新算一下。
耦合方式(Coupling):AD里有Edge-Coupled和Broadside-Coupled两个选项。我们平常常用的表贴走线都是Edge-Coupled,也就是并排耦合。Broadside-Coupled是层间耦合,比如带状线一上一下,不常用。别选错,否则规则计算完全不同。
最小间距(Min Gap):这个是差分对内部P和N之间的最小间距下限,也有最大间距上限。很多人以为设了线距就完事了,其实AD的差分规则还会受普通间距规则约束。如果你在Electrical->Clearance里设置的总间距比线距还大,AD会以严格的为准,实际走线时你会发现根本拉不出你想要的线距。
说一下为什么USB3.0对线宽线距这么敏感。差分阻抗的大小由走线到参考平面的距离、走线宽度、走线之间的耦合距离共同决定。如果把线距拉得特别开,两条线各自当单端线处理,差分阻抗就会往上飘;如果线距特别近,耦合增强,差分阻抗又会下降。这就是为什么规则里的Preferred值要跟叠层计算结果对齐,而不是拿着鼠标拖到哪算哪。
2.3 等长规则怎么设才不白设
USB3.0的等长要求分两个层面:对内等长(同一组差分对内,P和N的长度差)和组间等长(不同差分对之间的长度差)。规范里通常建议对内等长控制在5mil以内,组间等长控制在20mil以内。别以为只有对内等长才重要——组间等长影响的是数据线和时钟/选通信号的时序偏斜,虽然USB3.0是嵌入式时钟,要求宽松一点,但为了减少接收端的CDR压力,组间还是尽量对齐。
AD里设置等长规则在High Speed->Matched Length。你需要新建一个等长规则,把作用范围指向你的差分对网络。然后设置Tolerance,也就是允许的长度误差。我一般对内设5mil,组间设20mil。同一个规则里可以同时选中多组差分对,让它们的长度都对齐到一个目标值。
这里有一个很多新手不知道的技巧:等长规则里不仅看实际走线长度,还看Total Length,也就是从焊盘到焊盘的完整链路长度。如果你的差分对经过AC耦合电容,那么电容两边的走线长度都会被算进去,AD在报告长度时会自动把两端加起来。所以绕等长的时候,别只盯着其中一段,要等电容两端的长度都确定之后再整体绕。
除了等长,USB3.0还推荐做相位控制,也就是让P和N的走线形状尽量对称。这个靠等长规则做不了,要靠走线时手动让两条线保持一致,比如转弯的地方一起弯,过孔的地方两个过孔靠近。后面绕线环节我会细讲。
3. 布线实操:从扇出到等长绕线一次走顺
3.1 扇出和关键走线策略,动手前先看这五点
规则都设好了,先别急着拉线。打开PCB,先看主控芯片和连接器的相对位置。USB3.0差分线最好走直线,层数有限时,表层走线是最省事的方案。扇出的时候,从BGA引脚出来如果特别密,可以先打孔换到内层,但要保证同一组差分对的两个过孔挨着打,且过孔出来后两条线还能并行走。两组过孔之间的间距不要拉得太大,否则会引入stub和不连续。
走线顺序上我习惯先走USB3.0高速对,再走USB2.0的D+/D-,最后走控制信号。因为差分对是优先级最高的,且往往需要占用比较好的布线通道,先把它们安排好了,再去填充其他信号,能有效避免后期发现差分对没有完整参考平面而返工。
特别提醒:USB3.0差分对千万不要跨分割。所谓跨分割,就是走线下方经过的参考平面(通常是大片GND)中间有一条窄缝或断口,比如某个电源通道或禁止布线区把它切断。这时回流电流就得绕着走,回路面积变大,信号质量明显劣化。在AD里可以打开View->Board Planning Mode或者用LS快捷键查看参考平面层,确认你的差分走线路径下方是一整片完整的GND。
3.2 手动拉差分线的快捷键和弯角控制
在AD里走差分线很简单,选中两个网络(比如按S+P打开Differential Pair选择),然后按快捷键PT(Interactive Differential Pair Routing)就可以开始走线。走线过程中有几个实用技巧:
- 按
Shift+Space切换拐角模式,建议用45°角,走完再看用圆弧替换。圆弧的加工性更好,阻抗突变也小,但AD里用圆弧走线不如45°好控制,一般在DRC允许范围内尽量用45°。 - 走线时按
Shift(或快捷键4)可以切换走线层,换层时AD会自动打两个过孔,分别对应P和N。但要检查过孔是不是靠近放、方向是否对齐,不然两条线换层后距离会拉开。 - 走线时按
Shift+R可以循环切换冲突模式,这个不常用,但有时候要绕过障碍物时可以用Push模式让AD帮你推开普通网络。
当其中一条线走完之后,另一条线要用PT重新走,AD会默认按最短路径去找目标焊盘,但如果前面已经弯弯绕绕了一段,你就得手动走、或者用Unroute(快捷键U+P)把当前差分对撤销重来。我的建议是:只要发现当前路径不够好,就果断撤销整组,别一条一条修补,差分线最忌讳左右不对称。
拐角的地方注意保持并行。90°拐角本身就带来阻抗突变,30°以内的锐角会产生制造问题,最保险的是45°拐角加一段斜线过渡。如果绕不开障碍物必须走超过45°的角度,宁可绕远一点,也不要在一对线里出现一个大直角。
3.3 等长绕线实操,手把手教你绕出规整蛇形线
所有差分对都布通之后,运行一下Report->Board Information或者直接看PCB面板里的Length列,检查每对P/N的长度差。如果你之前对线够规整,通常长度差不大,也就几mil到几十mil。这时候就该绕线了。
在AD里绕等长用的是Tools->Interactive Length Tuning(快捷键TR),然后点击需要调整的差分对走线。AD会以蛇形绕线的方式把这条线拉长,你移动鼠标,绕线幅度和长度实时更新,屏幕上会显示当前长度和目标长度的差距。
绕线时有几个调整项值得记住:按Shift+W可以设置绕线的振幅(也就是蛇形的高度)、间距、以及绕线方式——蛇形、内波形、外波形三种。USB3.0差分对绕线,我最常用的绕线方式就是蛇形,默认振幅取线距的3到5倍,不要绕得太夸张。比如你的线距是6mil,振幅设18-30mil这个区间比较安全。振幅太小,绕线密集区段之间的耦合会增强,对阻抗影响大;振幅太大,蛇形线占用的空间多且容易跟旁边信号线串扰。
绕线的时候高度是整个蛇形突出的距离,AD默认会取一个经验值,我一般手动改成20mil左右,步进(振幅)和间距(step gap)保持差不多,这样绕出来的蛇形线间距均匀、好看,生产时出问题概率低。
还要注意一点:给一组差分对绕线时,尽量在P线和N线之间交替或者同步绕,不要让其中一条多绕了一大段才开始绕另一条。因为绕线本身就带来额外的长度偏差,如果你先绕了一条10mil的长度差,再绕另一条30mil的长度差,虽然最终两者都达标了,但两条线的物理形态差别很大,可能造成差分模式转换,也就是共模噪声增加。
实操心得:绕线结束后,用
Reports->Measure或者快捷键Ctrl+M实际量一下蛇形区域两个焊盘之间的长度,别光看AD状态栏的长度报告。少数情况下AD报告的是“电气长度”,而蛇形绕线的物理长度会因为绕线间距不达标产生偏差,这个偏差在5Gbps下面可能会变成实实在在的时序误差。
3.4 绕线优先级:哪种板子先绕哪组
如果板子上有多组USB3.0差分对,比如Type-C的TX1/TX2/RX1/RX2,绕线的顺序也有讲究。我一般先绕对内长度差大的,再绕组间距离差距大的。比如一组已经差了80mil,先把它绕回来,另一组只差10mil,后绕;这样最后微调的空间大,不会出现绕完这组发现那组需要大改。
另外,目标长度不是越短越好,也不是越长越好。等长规则里指定了Tolerance,如果你的板子空间充足,目标长度可以取各组中当前实际走线最长的那个长度,然后统一把其他组拉到这个目标。千万不要盲目把目标定得特别长,导致所有的差分对都绕一大圈蛇形线,白白增加损耗和辐射。
4. 常见问题与排查技巧实录
4.1 差分对不生效、规则被绕过,这类问题怎么定位
实际过程中最让人抓狂的不是绕线,而是规则明明设置了、走线也走完了,一跑DRC却报一堆错,或者规则压根没有生效。我把踩过的坑汇总成下面这个速查表,新手照着排查就行。
| 现象 | 可能原因 | 排查/解决办法 |
|---|---|---|
| 规则设置了线宽6mil,走线拉出来却是8mil | 差分对规则在规则优先级里低于普通走线规则 | 打开Design->Rules,检查Routing/Width和Differential Pairs Routing的优先级,把差分规则拖到最高优先级 |
| 差分对编辑器里看不到网络 | 原理图网络名没有_P/_N后缀,或网络没导入PCB | 回到原理图统一命名,重新导入PCB;或在Differential Pair Editor里手动添加网络 |
| 距离设置没问题,DRC仍然报警 | 普通间距规则Clearance比差分线距更严格,覆盖了差分规则 | 在Electrical/Clearance中新建规则,把差分网的间距也设置为匹配值,并提高优先级 |
| 等长绕线拉不动/绕了一段之后数值不变 | 没有选中正确的差分对网络;或交互式长度调整多段选择问题 | 先用TR点击走线段,看状态栏提示;若非活,用Shift+X重新选择 |
| 绕线时蛇形高度/间距无法修改 | 选中了对但不是激活的绕线段 | 在绕线状态下按Shift+W修改;如果还是不动,先退出绕线再重新进入 |
4.2 等长绕了DRC也过了,为什么实测眼图还是差
这种情况最为头疼,也是很多工程师“抄了教程还是失败”的原因。我用实际项目经验总结,绕线达标但眼图差,常见原因有三个。
第一个是过孔stub问题。如果采用的是通孔设计,差分对换层时的过孔本身存在一段没用的stub,在5Gbps下,这个stub的寄生电容和电感会形成反射。等长你做得再漂亮,过孔造成的阻抗失配依然存在。解决办法是减少换层次数,必须换层时尽量让过孔短,板厂能用背钻就背钻,或者采用盲埋孔。
第二个是绕线区域离其他信号太近。蛇形线绕出来的那一团,自身就是一个很强的耦合源,要是旁边有USB2.0或者I2C这类低频信号线,很容易被串扰。所以在开始布线时就要预留绕线空间,USB3.0差分对周围至少保持3倍线宽的间距,蛇形绕线区域则要更空旷一些。
第三个是AC耦合电容摆放和焊盘处理不当。电容引脚处的阻抗不连续如果过大,即使走线等长再准确,发射到接收端的信号也会明显畸变。我见过不少板子,电容离主控引脚两三厘米远,焊盘下方参考平面又被掏空,眼图直接麻花。把这些细节改掉之后,同样布线规则下的眼图能明显打开。
4.3 投产前怎么自检USB3.0板子
画完板子不等于完事,投产前我至少会做一次完整的自查清单,这里分享出来:
- 差分对是否全部成功创建,DRC里无未连接的差分对。
- 所有差分对内等长误差小于5mil,组间小于20mil。
- 参考平面完整性:打开内层GND/PWR,确认差分线下方无分割孔/切割线,特别是绕线区域。
- AC耦合电容位置是否靠近发送端,电容两侧走线宽度是否一致。
- 过孔数量是否最少化,差分对换层点是否P/N一致换层。
- 检查串扰:差分线间距是否满足3W,附近有无平行长走线。
- 运行高亮规则检查:让AD把不符合阻抗/等长规则的网络全部高亮,逐条确认不是因为规则设置错误导致的误报。
最后一条建议:有条件的话送板厂做阻抗测试条。很多板厂在你下单时支持加阻抗测试条,规格选90Ω。样板回来后,用TDR测差分阻抗曲线,实际值在85Ω到95Ω之间都算健康,如果偏离太多,优先怀疑叠层参数,而不是责怪布线。测完阻抗如果还带仪器,再看一下眼图,眼图张开度好、眼高大于300mV基本上USB3.0就没问题。
我个人在实际操作中的体会是:USB3.0差分线设计的核心其实不在绕线那一下,而在规则前移——叠层算准、差分对建好、等长规则设好,后续布线就是按部就班执行的过程。很多板子之所以要改到第三版第四版,都是因为最开始少算了阻抗,或者图省事没做等长约束。把这个流程固定下来,每块新板子都按这套方式走,你会发现USB3.0也没那么玄乎。最后再送一个小技巧给做Type-C口的朋友:把两组TX/RX差分对的距离尽量拉开,分别安排到连接器两侧,别挤在一起,这样不仅能绕线更从容,信号串扰和回流问题也能少很多。