1. 为什么USB2.0差分阻抗必须死磕90Ω
USB2.0高速模式跑在480Mbps,差分信号沿PCB走线传播时,走线本身的特性阻抗如果不匹配,信号能量会在阻抗突变点产生反射。反射回来的能量叠加在原始信号上,直接压缩眼图的张开度,严重时接收端根本解不出正确的0和1。USB2.0协议规范里写得很清楚:高速差分对的差分特性阻抗目标是90Ω,允许±15%的偏差,也就是76.5Ω到103.5Ω之间。注意这是差分阻抗,不是单端阻抗。很多新手看到“90Ω”就以为是单根线对地的阻抗,这是最常见的误解之一。
差分阻抗的本质是两条耦合传输线在差模激励下的等效阻抗。它由单端阻抗和线间耦合共同决定。单端阻抗通常在45Ω到55Ω之间,两条线靠近时,线间电容和互感会拉低差分阻抗。所以你不能只控制单端阻抗就完事,必须把线宽、线距、到参考平面的距离、介质厚度这几个参数放在一起算。
那为什么是4层板?两层板能不能做?理论上可以,但两层板没有完整的地平面,回流路径不连续,差分阻抗很难稳定控制在90Ω附近。4层板的典型叠层是:顶层信号、内层地、内层电源、底层信号。这样顶层和底层的差分线都有紧邻的参考平面,回流路径短且连续,阻抗可控性大幅提升。而且4层板成本比6层板低不少,对于大多数USB2.0应用来说,4层板是性价比最高的选择。
这篇文章面向的是已经会用Altium Designer画原理图和PCB、但对高速差分线阻抗控制还没有系统实操经验的工程师。我会从叠层设计开始,一步步拆解线宽线距的计算、Altium Designer里的规则设置、差分对布线技巧、以及后期怎么验证。你跟着走一遍,基本能独立完成一块USB2.0 4层板的差分阻抗控制。
2. 4层板叠层设计与阻抗计算的核心逻辑
2.1 叠层方案选型:为什么优先选“信号-地-电源-信号”
4层板的叠层排列有好几种,常见的有:
| 叠层方案 | 结构 | 优点 | 缺点 |
|---|---|---|---|
| 方案A | 信号/地/电源/信号 | 顶层底层都有参考平面,回流路径好 | 电源平面和地平面之间需要去耦 |
| 方案B | 信号/电源/地/信号 | 同上,但电源平面在上 | 电源平面分割时影响顶层回流 |
| 方案C | 信号/信号/地/电源 | 内层走线多 | 顶层信号参考不连续,不推荐 |
| 方案D | 地/信号/信号/电源 | 表层无走线 | 调试困难,不推荐 |
我实测下来,方案A最稳。顶层走USB2.0差分线,参考内层地平面;底层走其他低速信号,参考内层电源平面。注意底层信号的回流会经过电源平面,再通过去耦电容回到地平面,所以去耦电容的摆放位置很关键,后面会细说。
叠层厚度方面,以常见的JLC 4层板为例,总厚度1.6mm的典型结构是:
- 顶层铜厚:1oz(35μm)
- 介质层(PP):0.2mm
- 内层地铜厚:1oz
- 芯板:1.2mm
- 内层电源铜厚:1oz
- 介质层(PP):0.2mm
- 底层铜厚:1oz
这个结构里,顶层到内层地的介质厚度是0.2mm。这个参数直接决定差分线的线宽线距。如果你用的板厂叠层不同,一定要找他们要叠层结构图,不能自己瞎猜。
2.2 差分阻抗计算:线宽、线距、介质厚度的三角关系
差分阻抗的计算公式比较复杂,但你可以用Altium Designer自带的阻抗计算器,或者用Saturn PCB Toolkit、Polar SI9000这类工具。我习惯用Saturn PCB Toolkit,免费且够用。
以顶层到内层地介质厚度0.2mm、铜厚1oz、FR4介电常数4.3为例,用边缘耦合微带线模型计算:
- 目标差分阻抗:90Ω
- 线宽W:0.2mm
- 线距S:0.2mm
- 单端阻抗:约50Ω
- 差分阻抗:约88Ω到92Ω之间
这个组合是比较容易实现的。如果你把线宽加到0.25mm,线距保持0.2mm,差分阻抗会降到82Ω左右,偏低。如果把线距拉到0.3mm,差分阻抗会升到95Ω左右。所以线宽和线距要一起调。
注意:很多板厂的工艺能力是线宽/线距最小3mil(0.076mm),但0.2mm(约8mil)的线宽线距对大多数板厂来说都是轻松做到的,良率高,成本低。不要为了追求理论上的完美阻抗而把线宽线距压到极限,那样反而容易出问题。
还有一个容易被忽略的参数:阻焊层厚度。阻焊油墨覆盖在差分线上,会改变表面的有效介电常数,从而影响阻抗。通常阻焊层会让差分阻抗降低2Ω到5Ω。如果你算出来是92Ω,加上阻焊影响可能就变成88Ω了。所以计算时最好把阻焊因素考虑进去,或者直接按90Ω算,留一点余量。
2.3 共面波导还是微带线?什么时候需要考虑共面波导
如果你的差分线两侧有密集的地铜皮,并且地铜皮和差分线的间距很小(比如小于2倍线宽),那就变成了共面波导结构。共面波导的差分阻抗会比纯微带线低一些,因为地铜皮增加了耦合电容。
我一般建议:USB2.0差分线两侧的地铜皮间距至少保持3倍线宽以上,比如线宽0.2mm,那地铜皮离差分线至少0.6mm。这样共面波导效应可以忽略,按微带线模型计算就够了。如果空间实在紧张,必须用地铜皮包紧,那就得用共面波导模型重新算阻抗。
3. Altium Designer里的差分对设置与规则配置
3.1 原理图阶段:差分对的命名与标识
差分对在原理图里就要定义好。Altium Designer识别差分对的方式是靠网络名称的命名规则。默认规则是:网络名以“_P”和“_N”结尾,或者以“+”“-”结尾。比如USB_DP和USB_DN,或者USB_D+和USB_D-。
我习惯用“_P”和“_N”后缀,因为不容易和电源符号混淆。在原理图里,你可以用差分对符号(Place > Directive > Differential Pair)直接放在两条线上,然后给它们起一个差分对名称,比如“USB_HS”。这样在PCB里就能直接按差分对来布线和规则检查。
实操心得:有些工程师喜欢在原理图里用总线(Bus)来组织差分对,比如USB_HS[0..1]。但Altium Designer对总线的差分对识别有时候会出问题,特别是总线成员命名不规范的时候。我建议差分对就老老实实用两条独立的网络线,命名清晰,别搞太复杂。
3.2 PCB阶段:差分对规则的创建与参数设置
打开PCB文件后,进入Design > Rules,找到Differential Pairs Routing规则。这里要设置几个关键参数:
- Min Width / Max Width / Preferred Width:差分线的线宽。根据前面的计算,设为0.2mm。
- Min Gap / Max Gap / Preferred Gap:差分线之间的间距。设为0.2mm。
- Max Uncoupled Length:最大未耦合长度。这个参数控制差分线分开走的最大距离。USB2.0建议不超过5mm,越短越好。
- Target Impedance:目标阻抗。填90Ω。
设置完这些,Altium Designer会在布线时自动按这些参数来约束差分对。但要注意,Altium Designer的阻抗计算是简化的,它不会考虑阻焊层和铜皮的影响。所以规则里的阻抗值更多是参考,实际阻抗还是靠线宽线距来保证。
另外,还要在Clearance规则里设置差分对和其他网络的安全间距。一般建议差分对到其他信号线的间距至少3倍线宽,也就是0.6mm以上。如果空间紧张,至少也要保证2倍线宽。
3.3 层叠管理器里的阻抗计算
Altium Designer的Layer Stack Manager里有一个阻抗计算器。你可以添加阻抗配置文件,选择微带线或差分对模型,输入线宽、线距、介质厚度、介电常数,它会算出阻抗值。
我一般会在这里做初步验证:把板厂给的叠层参数输进去,然后调整线宽线距,看阻抗能不能落在90Ω±10%以内。如果能,就把这组参数记下来,作为布线规则的依据。
注意:Altium Designer的阻抗计算器精度有限,特别是对共面波导和阻焊层的处理比较粗糙。所以最终参数还是要用Saturn PCB Toolkit或Polar SI9000复核一遍。我通常两个工具都跑一遍,取交集。
4. 差分对布线实操:从扇出到端接的全流程
4.1 差分对扇出:BGA和连接器的处理技巧
USB2.0连接器通常是4针或5针的插件或贴片座。如果是贴片座,焊盘间距可能只有0.5mm甚至更小。从焊盘扇出时,差分对要尽量保持对称。
我的做法是:从连接器焊盘出来后,先用短线段把线宽过渡到0.2mm,然后立即开始耦合布线。如果连接器焊盘间距太小,无法直接走出0.2mm线宽和0.2mm线距,那就先走出焊盘区域,在空旷区域再调整到目标线宽线距。但要注意,过渡区域要尽量短,而且两条线的过渡要对称。
如果是BGA封装的USB控制器,扇出会更麻烦。BGA焊球间距通常是0.8mm或0.65mm,焊球之间只能走一根线。这时候差分对可能需要通过过孔换层。换层时,两条线要同时换层,过孔要靠近放置,保持对称。
实操心得:过孔会引入阻抗不连续。一个过孔大概会带来0.5nH到1nH的电感,在480Mbps下影响不大,但两个过孔不对称就会导致差分 skew。所以差分对换层时,两个过孔要尽量靠近,最好对称放置。如果空间允许,可以在过孔旁边加接地过孔,提供回流路径。
4.2 耦合布线:保持等长、等距、参考平面连续
差分对布线最核心的要求就三个:等长、等距、参考平面连续。
等长是为了保证两条线的传播延迟一致,否则差分信号会变成共模信号,产生EMI。USB2.0的差分对长度匹配要求通常在5mil(0.127mm)以内。Altium Designer里可以用Interactive Diff Pair Length Tuning工具来做蛇形绕线,补偿长度差。
等距是为了保持差分阻抗稳定。如果两条线间距忽大忽小,差分阻抗就会波动。所以布线时尽量保持线距恒定,不要一会儿靠近一会儿分开。
参考平面连续是指差分线下面的地平面或电源平面不能有裂缝或分割。如果参考平面不连续,回流路径就会绕远,导致阻抗突变和EMI。所以差分线不要跨过平面分割线。如果必须跨,那就在跨线处放缝合电容。
我布线时的顺序是:先布差分对,再布其他信号。差分对优先走顶层,因为顶层到内层地的介质厚度最薄,阻抗最容易控制。如果顶层走不通,再考虑底层。
4.3 端接与匹配:串联电阻和共模扼流圈的位置
USB2.0高速差分线通常不需要端接电阻,因为收发器内部已经有匹配。但有些设计会在差分线上串联共模扼流圈(Common Mode Choke)来抑制共模噪声。共模扼流圈要放在靠近连接器的位置,而且差分对进出共模扼流圈的走线要尽量短且对称。
如果USB控制器和连接器之间的距离比较远,比如超过10cm,可以考虑在靠近控制器的一端串联0Ω电阻,方便调试时断开。但0Ω电阻的封装要选0402或更小,避免引入额外的寄生参数。
注意:共模扼流圈的选择要看它的差分阻抗和共模阻抗。差分阻抗要尽量小,最好在5Ω以下,否则会影响信号幅度。共模阻抗要尽量大,通常在100Ω以上。选型时看数据手册里的阻抗-频率曲线,确保在480MHz附近共模阻抗足够高。
5. 后期验证与常见问题排查
5.1 用TDR或VNA实测差分阻抗
板子打回来后,如果有条件,用TDR(时域反射计)或VNA(矢量网络分析仪)实测差分阻抗。TDR可以直接看到沿走线的阻抗变化曲线,哪里阻抗突变一目了然。VNA可以测S参数,看回波损耗和插入损耗。
如果没有这些设备,至少要用万用表测一下差分对有没有短路或断路。然后上电测试USB2.0能不能正常枚举和传输数据。如果枚举失败或者传输不稳定,大概率是阻抗或信号完整性问题。
5.2 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方法 |
|---|---|---|---|
| USB2.0无法枚举 | 差分对短路或断路 | 万用表测通断 | 检查焊接和走线 |
| 枚举成功但传输不稳定 | 差分阻抗偏差大 | TDR测阻抗 | 调整线宽线距,重新打板 |
| 传输速度上不去 | 差分对长度不匹配 | 检查等长绕线 | 重新绕线,控制长度差在5mil内 |
| EMI测试超标 | 共模噪声大 | 近场探头扫描 | 加共模扼流圈,优化回流路径 |
| 眼图闭合 | 阻抗不连续或损耗大 | 眼图测试 | 检查过孔、连接器、线宽过渡 |
5.3 独家避坑技巧
第一个坑:忽略阻焊层对阻抗的影响。我早期做的一块板子,按微带线模型算出来是90Ω,结果实测只有83Ω。后来发现是阻焊层太厚,介电常数又高,把阻抗拉低了。解决办法是在计算时把阻焊层厚度算进去,或者直接按95Ω设计,留出余量。
第二个坑:差分对换层时过孔不对称。有一次差分对从顶层换到底层,两个过孔一个在左一个在右,距离差了2mm。结果眼图明显不对称,误码率偏高。后来把两个过孔并排放在一起,问题解决。
第三个坑:参考平面分割。有一块板子,差分线下面的地平面被电源分割线切断了,回流路径绕了一大圈。结果EMI超标严重。后来在地平面分割处加了缝合电容,问题缓解。所以差分线下面一定要保证参考平面完整,实在避不开分割,就加缝合电容。
第四个坑:连接器焊盘到差分线的过渡。连接器焊盘通常比差分线宽很多,如果直接连接,会形成一个阻抗突变点。我的做法是在焊盘和差分线之间加一段渐变线,长度约1mm到2mm,让线宽平滑过渡。这样阻抗变化更平缓,反射更小。
6. 从设计到打板:文件输出与板厂沟通要点
6.1 OutJob文件配置:快速输出Gerber和钻孔文件
Altium Designer的OutJob文件可以一键输出Gerber、钻孔文件、贴片文件等。我习惯创建一个OutJob,包含以下输出:
- Gerber文件:顶层、底层、内层地、内层电源、阻焊层、丝印层
- NC钻孔文件:钻孔表和钻孔文件
- 贴片文件:Pick and Place
- 测试点报告:如果有测试点的话
输出Gerber时,注意单位选毫米,格式选2:5,精度足够。钻孔文件选Excellon格式,单位毫米。
6.2 给板厂的阻抗控制说明
打板时,一定要在备注里写清楚:USB2.0差分对需要控制差分阻抗90Ω±10%。最好附上叠层结构和线宽线距参数。有些板厂会帮你调整线宽线距来匹配阻抗,但前提是你得告诉他们你的要求。
我一般会写一个简单的阻抗控制说明,包含:
- 叠层结构:顶层信号/内层地/内层电源/底层信号
- 介质厚度:顶层到内层地0.2mm
- 差分对线宽:0.2mm
- 差分对线距:0.2mm
- 目标差分阻抗:90Ω
- 参考层:内层地
板厂收到后,如果有疑问会联系你确认。如果板厂说做不到,那就得调整线宽线距或者换叠层。
实操心得:有些板厂会提供免费的阻抗测试报告,打板时勾选这个选项。虽然多花一点钱,但能拿到实测阻抗数据,对后续设计很有参考价值。我一般都会选。
6.3 打板后的调试与迭代
板子回来后,先目测检查差分对走线有没有明显问题,比如线宽不均匀、过孔偏位、参考平面裂缝等。然后上电测试USB2.0功能。如果功能正常,再考虑做信号完整性测试。
如果功能不正常,先排查焊接和连接器,再排查差分对走线。用万用表测差分对的通断和短路,用示波器看差分信号的波形。如果波形明显畸变,大概率是阻抗问题,需要重新调整线宽线距打板。
迭代时,每次只改一个参数,比如只改线宽,或者只改线距,这样才能知道哪个参数对阻抗影响最大。不要一次改好几个参数,否则出了问题都不知道是哪个引起的。
7. 我个人的实操体会
做了这么多块USB2.0的板子,我最大的体会是:阻抗控制不是算出来的,是试出来的。理论计算给你一个起点,但实际板厂的工艺偏差、阻焊层厚度、铜厚公差都会影响最终阻抗。所以第一版板子一定要留足够的调试余量,比如线宽线距做几组不同的组合,打回来实测哪组最接近90Ω。
另外,不要迷信仿真。仿真软件再准,也模拟不了板厂的实际工艺。我见过太多仿真完美但实测翻车的案例。所以有条件的话,第一版板子一定要做阻抗测试,拿到实测数据后再优化。
最后,差分对布线要趁早。在PCB布局阶段就要规划好差分对的走向,不要等到最后才布。差分对优先布,其他信号给它让路。如果空间实在不够,宁可加层或者改布局,也不要强行把差分对布得歪歪扭扭。
这个内容后续还可以这样扩展:如果你要做USB3.0或者USB Type-C,差分阻抗要求变成85Ω或90Ω,而且速率更高,对过孔和连接器的要求更严。到时候可以在这个基础上进一步优化叠层和布线策略。