3、训练失败原因分析(上):信号完整性问题

各位工程师朋友,咱们接着聊链路训练失败的事。上节课我们把训练失败的几种表象捋了一遍,今天开始深挖背后的物理层原因。说白了,信号在线上跑,就像快递在高速上送货——路况不好,货就送不到。

我个人习惯把信号完整性问题分成四大类:反射、串扰、衰减,再加上时钟抖动和漂移。这四兄弟是训练失败的常客。我做过一个项目,USB 3.2 Gen2x2 的链路,死活训练不到 20Gbps 速率,最后查出来就是反射和串扰联手搞的鬼。嗯,咱们一个一个说。

核心观点:链路训练失败,80% 的物理层问题可以归结为信号完整性不达标。接收端的眼图一旦闭合,训练必然失败。

训练失败物理层原因 反射 串扰 衰减 时钟抖动与漂移 阻抗突变 过孔/连接器 分支/桩线 相邻走线 参考层不连续 封装耦合 趋肤效应 介质损耗 长走线 随机抖动(RJ) 确定性抖动(DJ) 频率漂移

3.1 反射——信号的回声

反射是什么?简单说,信号在传输线上跑,遇到阻抗突变的地方,一部分能量就弹回来了。你想想看,这就像你对着山谷喊话,回声会干扰你下一句说什么。在高速信号里,反射回来的能量叠加到原始信号上,波形就变形了。

USB 链路的差分阻抗要求是 90Ω ±15%。一旦偏离这个范围,反射就来了。我遇到过一块板子,阻抗实测只有 72Ω,结果链路训练时 EQ 阶段反复失败。接收端看到的眼图,眼高只有规范要求的一半不到。

我的经验:反射问题最常出现在三个地方——过孔、连接器、以及走线分支(stub)。尤其是 USB Type-C 连接器,它的阻抗控制比传统 Type-A 难得多。我建议在 layout 阶段就做 3D 电磁仿真,别等到板子打回来再哭。

反射的严重程度可以用反射系数 Γ 来衡量:

Γ = (Z_load - Z0) / (Z_load + Z0)

其中:
Z_load = 负载阻抗
Z0     = 传输线特性阻抗

举个例子:
如果 Z0 = 90Ω,Z_load = 75Ω
Γ = (75 - 90) / (75 + 90) = -15 / 165 ≈ -0.091

这意味着约 9% 的能量被反射回来了。

你可能会问,9% 很多吗?在 USB 3.2 的 10Gbps 速率下,这个反射量足以让眼图闭合 20% 以上。训练时接收端检测到信号质量不达标,直接给你发个 LFPS 复位,从头再来。

3.2 串扰——隔壁老王在捣乱

串扰,说白了就是一根线上的信号,通过电磁耦合干扰到了旁边的线。在 USB 链路里,差分对内部的 P/N 线之间、以及不同差分对之间,都可能发生串扰。

我记得有个项目,USB 3.0 的 RX 和 TX 差分对在 PCB 上平行走了 3 英寸,间距只有 5mil。结果呢?TX 的信号串扰到 RX 上,接收端在训练阶段收到的 TS1 序列全是错的。我花了整整两天才定位到这个问题——一开始还以为是芯片坏了。

串扰类型 产生原因 典型影响 我的建议
近端串扰 (NEXT) 干扰源靠近发送端 影响发送端自身 保持 3W 间距
远端串扰 (FEXT) 干扰源靠近接收端 直接破坏接收信号 加屏蔽地线
共模串扰 参考层不连续 导致共模噪声增大 保证完整参考平面

注意:串扰在 USB 3.x/4 的 10Gbps+ 速率下尤其致命。我曾经见过一个案例,串扰导致接收端的抖动增加了 15ps,直接超出了 USB-IF 的规范上限。训练失败后,系统反复重试,最终超时报错。

怎么判断是不是串扰?我个人习惯的做法是:在示波器上看差分对的共模分量。如果共模电压波动超过 50mV,大概率有串扰问题。另外,TDR 时域反射计也能帮你看到耦合的位置。

3.3 衰减——信号越跑越弱

衰减是物理规律,谁也逃不掉。信号在 PCB 走线上传输,高频分量比低频分量衰减得更厉害。这就导致接收端看到的信号,上升沿变缓、眼图变小。

USB 3.2 Gen2 的 10Gbps 信号,在普通的 FR4 板材上,每英寸大约衰减 0.5~1dB。如果走线长度超过 8 英寸,衰减量可能达到 8dB 以上。你想想看,发送端输出 800mV 的差分摆幅,到接收端可能只剩 300mV 了。

衰减的两个主要来源:

  • 趋肤效应:高频电流只在导体表面流动,等效电阻增大。频率越高越明显。
  • 介质损耗:PCB 板材的介电常数随频率变化,信号能量被介质吸收。FR4 在高频下损耗很大。

我做过一个对比测试:同样的 10Gbps 信号,在 FR4 上走 6 英寸,眼高只剩 250mV;换成 Megtron 6 板材,同样长度眼高还有 450mV。板材的选择,直接影响训练成功率。

避坑指南:我曾经在 4 层板上做 USB 3.0,走线长度 10 英寸,结果死活训练不过。后来加了 Redriver 芯片才搞定。如果你走线超过 6 英寸,建议直接用 Re-timer 或 Redriver,别指望靠 EQ 硬扛。

3.4 时钟抖动与漂移——节奏乱了

时钟抖动,就是时钟边沿的位置在时间轴上随机摆动。漂移则是频率缓慢变化。在 USB 链路训练中,接收端需要用 CDR(时钟数据恢复)电路从数据流中提取时钟。如果抖动太大,CDR 就锁不住相位,训练必然失败。

抖动分两类:

  • 随机抖动 (RJ):由热噪声、散粒噪声引起,服从高斯分布。没法完全消除,只能控制。
  • 确定性抖动 (DJ):由 ISI、串扰、电源噪声引起,有规律可循。可以通过设计优化来减小。

USB 规范对抖动的限制很严格。以 USB 3.2 Gen2 为例,发送端的总抖动 (TJ) 不能超过 0.3 UI(单位间隔)。10Gbps 下 1 UI = 100ps,也就是说抖动不能超过 30ps。一旦超标,接收端的 CDR 就会失锁。

USB 3.2 Gen2 抖动预算(典型值):
- 发送端抖动:0.15 UI (15ps)
- 通道抖动:0.10 UI (10ps)
- 接收端容忍度:0.35 UI (35ps)

如果发送端抖动超标,接收端即使有 35ps 的容忍度也救不回来。

我记得有一次调试,USB 4 的链路在 20Gbps 下训练失败。用示波器看时钟,发现 PLL 输出的抖动高达 2ps RMS,而规范要求是 0.5ps RMS。最后查出来是电源纹波太大,给 PLL 供电的 LDO 输出有 10mV 的 ripple。换了颗低噪声 LDO,问题解决。

总结一下:反射、串扰、衰减、时钟抖动——这四个问题往往不是单独出现的。它们会互相叠加,最终导致眼图闭合。我建议你在做链路训练失败分析时,按这个顺序排查:先看阻抗(反射),再看隔离(串扰),然后量损耗(衰减),最后查时钟质量。这个顺序是我多年踩坑总结出来的,效率最高。

好了,这一章我们聊了信号完整性的四大杀手。下一章咱们继续分析训练失败的其他原因,包括电源噪声、参考时钟精度、以及协议层的那些坑。嗯,今天就到这儿。


公众号:蓝海资料掘金营,微信deep3321