2. 信号完整性基础:传输线效应、反射、损耗
做高速数字设计的人,迟早会被信号完整性(SI)问题绊一跤。我刚开始调Equalization时以为只要把抽头系数算对就行,结果第一次上板测眼图,眼睛闭得跟一条缝似的。后来才明白:不懂传输线效应、反射和损耗,调均衡就是瞎调。
这一节我们把这几个基础概念拆开讲。别嫌它理论,后面所有眼图测试、均衡调试都靠它们兜底。
传输线效应
普通导线在低频时就是个电阻,信号跑了多远几乎一样。但到了高速——比如10Gbps以上——导线就变成了传输线。传输线有分布式的电阻、电容、电感,还有个关键参数:特性阻抗Z₀。
特性阻抗是什么?你可以理解为信号在线上行走时遇到的“瞬时阻力”。常见的PCB微带线,Z₀通常是50Ω或100Ω差分。不是设计者随便画的,是用叠层和线宽算出来的。
| 参数 | 理想导线 | 传输线 |
|---|---|---|
| 信号行为 | 瞬间全空间等电位 | 以有限速度传播 |
| 关键参数 | 直流电阻 | 特性阻抗、延迟、损耗 |
| 设计关注点 | 载流能力 | 阻抗匹配、时延、串扰 |
为什么一定要知道Z₀?因为你输出端的内阻、接收端的端接电阻如果跟Z₀不相等,信号就会反射。
反射
反射的原理很简单——信号遇到阻抗突变,一部分能量弹回去,一部分继续往前走。弹回去的信号跟原信号叠加,造成波形畸变,严重时眼图完全闭合。
反射系数Γ的计算公式:
Γ = (Z_load - Z₀) / (Z_load + Z₀)
举个我自己踩过的坑:有次调试12.5Gbps的SerDes,眼图上方出现一个“小鼓包”,怎么调均衡都不消。后来用TDR一看,原来是连接器处阻抗只有42Ω,反射系数约-0.087,能量反弹回来正好在眼图中央形成振铃。换了个阻抗更稳的连接器,鼓包立刻消失。
反射的后果不只是眼图变差,还会造成过冲、下冲、振铃,甚至触发接收端的误码。匹配好阻抗是第一步。
# 一个简单计算反射系数的Python函数(我习惯用这个快速排查)
def reflection_coefficient(Z_load, Z_0=50):
return (Z_load - Z_0) / (Z_load + Z_0)
# 实际例子:远端开路 Z_load=∞ → Γ=1 全反射
# 远端短路 Z_load=0 → Γ=-1 反相反射
# 匹配时 Z_load=50 → Γ=0 无反射
损耗
信号在传输线里走一段距离后幅度会衰减,这就是损耗。损耗分为两种:导体损耗和介质损耗。
- 导体损耗:主要来自铜箔的趋肤效应。高频电流挤在导体表面,等效电阻增加,损耗随频率平方根上升。
- 介质损耗:来自PCB板材极化损耗,用损耗正切tanδ表示。损耗随频率线性上升。
高频信号(比如28Gbps以上)介质损耗占大头。
我在一个56Gbps PAM4的项目中发现,FR4板材在28GHz时损耗高达3dB/inch,信号出去一圈就只剩一半。后来换用M6级低损耗板材,损耗降到0.8dB/inch,眼图才打开。
| 频率 | 导体损耗 (dB/inch) | 介质损耗 (dB/inch) — FR4 | 介质损耗 (dB/inch) — M6 |
|---|---|---|---|
| 1 GHz | 0.1 | 0.05 | 0.02 |
| 10 GHz | 0.3 | 0.5 | 0.08 |
| 28 GHz | 0.5 | 3.0 | 0.8 |
损耗的直观后果:眼高变矮、眼宽变窄、抖动增大。因为你高频分量衰减比低频快,信号的上升沿变缓,码间干扰就来了。
了解传输线效应、反射和损耗之后,再去做眼图测试和Equalization调优,你会知道眼图哪里不好是因为阻抗不匹配,哪里是因为损耗太大,而不是盲目去拧均衡抽头。这是基本功,没它真的走不远。