高速串行链路挑战:信道损耗、串扰、反射与阻抗不连续
做 SerDes 这么多年,我见过太多板级联调翻车的案例。说到底,高速信号从发射端到接收端,一路上要经历三大劫:损耗、串扰、反射。这三兄弟不搞定,眼图大概率是闭的。今天咱们就逐个拆解。
信道损耗:信号还没到,先被“削”了一刀
信道损耗说白了就是信号在传输过程中能量衰减。你在发送端看到一个漂亮的方波,走完几十厘米的 PCB 走线,到接收端可能已经变成一个“小土包”。损耗主要来自两个物理效应:
- 趋肤效应 —— 高频电流只在导体表面流动,相当于导线有效截面积变小,电阻增大。
- 介质损耗 —— 电场在 PCB 板材中来回振荡,一部分能量被材料吸收并耗散成热。
我记得有一次调试 28Gbps 的背板,仿真时眼图余量很大,结果实测完全闭合。查了半天,发现是板材参数没矫正——FR4 的损耗因子在高速下比厂商手册差了 20%。嗯,从那以后我对板材数据只会参考,不会全信。
α_total = α_skin + α_dielectric
其中 α_skin ∝ √f,α_dielectric ∝ f。看斜率就能判断是哪种占主导。
串扰:隔壁邻居的“噪音”
你想想看,高速信号线间距有限,一根线跳变时产生的电磁场会耦合到旁边的线上,这就是串扰。根据耦合方向分成两类:
| 类型 | 全称 | 传播方向 | 典型特征 |
|---|---|---|---|
| NEXT | 近端串扰 | 与干扰信号同向返回 | 在近端测量,幅度大,持续时间长 |
| FEXT | 远端串扰 | 与干扰信号反向(远端) | 在远端测量,与线长和耦合长度相关 |
我曾经在 12Gbps 的 SerDes 设计里遇到一个奇葩 bug:误码率始终降不下去,调试了一周。后来发现是相邻通道的 FEXT 耦合到接收端,而接收端内部的 DFE 收敛算法根本没考虑这种非对称耦合。解决方案很简单——在 layout 阶段把 victim 和 aggressor 的走线错开 3 个线宽,问题就消失了。
反射与阻抗不连续:信号撞墙就反弹
反射是怎么发生的?信号在传播过程中遇到阻抗变化点,就像光线遇到折射率不同的介质——一部分能量被反弹。PCB 上常见的阻抗不连续点包括:
- 过孔 —— 孔径变化、焊盘多余、反焊盘过大,都会让阻抗突变。
- 连接器 —— 引脚和插座之间的阻抗很难完全匹配。
- 封装 —— 芯片内走线和基板之间的过渡区。
- 换层 —— 参考平面切换导致的回流通路不连续。
反射的直接后果就是信号完整性的“振铃”和“台阶”。我给你们看一个真实的调试记录:当时一块 25Gbps 的板子,接收端眼图的“眼皮”上有明显的台阶,我看一眼就知道是过孔引起反射。拿 TDR 一测,果然过孔阻抗掉到了 42Ω(目标 50Ω)。改成背钻工艺后,眼高提升了 40%。
这里有个关键点:反射系数 Γ = (Z_load − Z0) / (Z_load + Z0)。只要反射能量大于接收端能容忍的噪声容限,误码率就别想低。
核心逻辑:三大挑战如何联动
损耗、串扰、反射从来不是孤立工作的。它们会叠加:损耗让信号幅度变小,串扰注入额外噪声,反射制造码间干扰。最后眼图要么闭合,要么出现严重的“双线”。
面试高频题: 信道损耗和串扰哪个对 25Gbps 以上的链路影响更大?我个人看法是——到了 32Gbps 以上,损耗是第一杀手,串扰是第二。但如果你用 PAM4 调制,串扰的容忍度比 NRZ 低 9.5dB,这时候反而要优先压串扰。