差分信号基础:工作原理与共模/差模
做 USB 高速设计,差分信号是绕不开的基本功。我入行那会儿,总觉得差分对就是两根线走在一起,有什么好学的?直到第一次看到眼图完全闭合,才发现差之毫厘谬以千里。
为什么差分信号在 USB 中举足轻重?
USB 3.2 Gen2 跑 10 Gbps,单端信号的电压摆幅只有几百毫伏。你想想看,板子上随便一个开关噪声都能把它淹没。差分信号天生就是来对抗这个问题的——两根线同时受到干扰,接收端只看差值,共模噪声就被抵消了。
说白了,差分信号的核心优势就两条:抗共模噪声和低电磁辐射。但是,如果两根线之间出现了时间偏差——也就是 Skew——那这些好处就会打折。我在项目中遇到过一块板子,USB 3.0 死活过不了合规测试,最后发现 D+ 比 D- 长了 5 mil,就是这 5 mil 让眼图塌了。
差分对的工作原理
一根线叫 D+,另一根叫 D-。发送端让它们在幅度上完全相等,极性完全相反。接收端用一个差分放大器,算出它们之间的差值:
Vdiff = V(D+) - V(D-)
如果 D+ 是 +400 mV,D- 是 -400 mV,那 Vdiff 就是 800 mV。如果同时有个 200 mV 的共模噪声,D+ 变成 +600 mV,D- 变成 -200 mV,Vdiff 仍然是 800 mV。噪声被完美抵消。
嗯,这里要注意:理想情况下两根线要完全对称——长度一样、阻抗一样、延迟一样。但实际 PCB 走线不可能完美,Skew 就来了。我记得有一次拿 TDR 测一组差分对,发现两根线的传播延迟差了 12 ps,对应的 Skew 就是 12 ps。这个数在 USB 2.0 的 480 Mbps 下还能忍,到了 USB 3.0 的 5 Gbps,眼图直接就合上了。
共模信号与差模信号
差分信号可以分解成两种成分。差模信号是我们想要的信息,共模信号是噪声——也包括走线不对称带来的泄露。
用一个表格来对比,更直观:
| 参数 | 差模信号 (Differential) | 共模信号 (Common Mode) |
|---|---|---|
| 定义 | Vdiff = (V(D+) - V(D-)) / 2 | Vcm = (V(D+) + V(D-)) / 2 |
| 信号方向 | 两根线极性相反 | 两根线极性相同 |
| 辐射 | 近场抵消,辐射小 | 远场叠加,辐射大 |
| 对 Skew 的敏感度 | 高 —— 一根线延迟变化直接影响 Vdiff | 低 —— 但 Skew 会把部分差模转为共模 |
共模抑制比 CMRR 是差分放大器的一个重要指标。如果一个接收器的 CMRR 是 40 dB,意味着共模噪声会被衰减 100 倍。但是,当你走线有 Skew 时,一部分差模信号会变成共模——这时候即使接收器 CMRR 再高,也救不了信号质量。
Skew 如何影响差分信号?
想象一对完美的正弦波,D+ 和 D- 完全反相。如果其中一根线因为走线过长或过短,相位偏移了 20 度,那么接收端算出来的 Vdiff 就不再是完美的两倍幅度了。
你会看到:
- 眼图闭合 —— 水平和垂直余量同时缩水。
- 共模噪声上升 —— 因为部分差模能量泄露到了共模里。
- 时序抖动增加 —— 过零点偏移,数据采样窗口变小。
我在一个 USB 3.1 Gen2 的项目中吃过这个亏。Layout 工程师把差分对在 BGA 扇出时走了不一样长的 stub,总共引入不到 8 ps 的 Skew。看起来很小吧?但在 10 Gbps 下,一个 UI 是 100 ps,8 ps 就是 8% 的抖动预算被直接吃掉。最终眼高从 200 mV 掉到 110 mV,合规测试直接红灯。
下面这张图展示了差分信号从发射到接收的完整路径,以及 Skew 造成的效果:
总结一下:差分信号本质上是靠共模抑制来抗干扰的,但 Skew 会把差模能量偷偷转化成共模。一旦共模分量增加,接收端的 CMRR 再高也扛不住。所以,Layout 阶段控制 Skew 比控制总长度更重要——我个人的经验是,USB 3.x 差分对的内内 Skew 最好控制在 15 ps 以内,USB 4 更严格,别超过 5 ps。