4. 均衡的必要性:为什么需要均衡?均衡器的作用与分类(线性/非线性、前馈/反馈)
4.1 为什么非要均衡不可?
先从一个现象说起。你从FPGA发出一个干净的脉冲,经过一段背板走线、几个连接器,再到接收端。信号早就不是原来的样子了——边沿变缓,幅度变小,甚至糊成了一片。
为什么会这样?简单说,信道不是理想的。PCB走线、电缆、连接器,它们都有损耗。高频分量比低频分量衰减得更厉害。结果就是,一个1和0分明的信号,在接收端变成了“一团浆糊”。
我早年负责一个25Gbps的背板项目。PCB走线长度大概30英寸。第一次看接收端的眼图,眼图完全闭合,跟睁眼瞎一样。那会儿我就意识到,不加均衡,信号根本传不过去。这不只是信噪比的问题,更是码间干扰(ISI)在作怪。
信道损耗导致的ISI有多严重?你可以通过链路损耗预算来估算。比如一个典型的10英寸背板走线,在28Gbps速率下,插损可能超过15dB。这意味着高频分量几乎被“吃掉”了。接收端看到的符号,会受到前后多个符号的拖尾干扰。
| 信道类型 | 典型损耗(@ 28Gbps,每英寸) | ISI 影响程度 |
|---|---|---|
| PCB微带线(低损耗) | ~0.5 dB | 中等 |
| PCB带状线(中等损耗) | ~0.8 dB | 严重 |
| 长距离电缆(~10米) | 可超过30 dB | 极严重 |
你想想看,接收端的信号是很多个符号的叠加。当前符号的尾巴还没收完,下一个符号就来了。这个“拖尾”效应,就是ISI。
4.2 均衡器到底在干什么?
均衡器做的事情,可以概括为:预测信道响应,然后反着来。
如果信道对高频衰减大,均衡器就提升高频分量。如果信道对延迟有影响,均衡器就补偿延迟。它像一个“逆滤波器”,目标是让信道+均衡器的整体响应,逼近一个理想的无失真系统。
我个人习惯把均衡器的作用拆成三件事:
- 补偿信道损耗 —— 提升信号在关键频率上的增益。
- 消除ISI —— 滤除来自前后符号的干扰。
- 提升信噪比裕量 —— 但需要注意,均衡器可能会放大噪声。
第三条很关键。很多刚做SerDes的同学以为均衡就是“使劲提高频”,结果高频噪声被一起放大了。你懂的,这是个噪声增强问题。好的均衡器要在补偿信号和抑制噪声之间找平衡。
4.3 均衡器的分类
均衡器的分类,可以按处理方式(线性/非线性)来分,也可以按结构(前馈/反馈)来分。很多时候这两者会交叉在一起。嗯,这里要注意,面试高频考查的正是这些概念的区别和适用场景。
4.3.1 线性均衡器 vs. 非线性均衡器
线性均衡器:输入和输出之间是线性关系。典型的比如连续时间线性均衡器(CTLE)。它用模拟电路实现一个高通或者带通特性,提升高频增益。优点是功耗低、结构简单;缺点是对噪声敏感,而且不能有效消除深度的ISI。
我记得有一次,一个候选人在面试时把CTLE说成是“数字均衡器”,我当时就追问了CTLE的模拟实现细节。结果他没答上来。CTLE本质是个模拟滤波器,增益和零点频率是固定的或可调的,但它不是数字的。
非线性均衡器:输入输出不是简单的比例关系。这类均衡器可以做一些“聪明”的事情,比如决策反馈均衡器(DFE)。DFE利用已经判决出的符号,去抵消后续符号的拖尾干扰。因为它用到了判决的结果,所以是非线性的。非线性的好处是它能有效消除深度的ISI,而且不会放大噪声——但有个代价,就是错误传递。如果有一个符号判错了,后面一连串符号跟着倒霉。
| 对比维度 | 线性均衡器(如CTLE) | 非线性均衡器(如DFE) |
|---|---|---|
| 噪声增强 | 有(放大高频噪声) | 无(不放大错误符号的噪声) |
| ISI消除能力 | 中等(有限抽头数) | 强(可消除长尾ISI) |
| 错误传递 | 无 | 有(一旦判错,影响后续) |
| 实现复杂度 | 较低 | 较高(需要反馈回路) |
4.3.2 前馈均衡器 vs. 反馈均衡器
这是另一种分类维度,更偏向于结构。
- 前馈均衡器(FFE):通常放置在接收前端,或者发送端。它处理未来的和当前的信号。FFE可以用模拟延迟线或者数字抽头实现。常见的结构是抽头延迟线,每个抽头乘以一个系数再求和。它的好处是可以处理前标。
- 反馈均衡器(DFE):它处理过去的已判决符号。用过去符号的决策值去抵消当前符号中的后标干扰。注意,DFE的反馈回路有严格的时序要求,必须在下一个符号到来之前完成判决和反馈计算。这也是为什么在超高速设计中,DFE的抽头数有上限的原因。
4.4 一张图看清均衡器分类体系
下面这张图,把主要均衡器和它们的归属关系画清楚了。你可以把这张图当备忘录,面试前过一下。
4.5 实际系统中的均衡器选择
在实际的串行链路中,你很少只用一种均衡器。通常都是组合拳。
我来拆解一个典型的接收端均衡路径:
- 信号首先经过CTLE做初步的线性补偿,把高频分量提起来一点。
- 然后进入AGC(自动增益控制),调整信号幅度到ADC或比较器的最佳输入范围。
- 再进入DFE,用过去已判决的符号去抵消长尾ISI。
- 有些先进的接收机还会在DFE前面加一级前馈均衡器(FFE),进一步消除前标。
这是在数字域实现的。CTLE是模拟域的,但DFE和FFE可以是数字的,也可以是混合信号的。
4.6 均衡器的性能怎么评估?
评估均衡器好不好,不能光看它能提升多少dB的高频增益。
- 误码率(BER) —— 最终指标。没有达到目标BER,其他都是空谈。
- 眼图张开度 —— 包括水平和垂直张开度。均衡器应该让眼图打开。
- 收敛速度 —— 在自适应均衡器中,收敛是否够快?我见过在快速变化的信道中,均衡器迟迟不收敛,系统就一直处在不稳定状态。
- 噪声增强 —— 特别是线性均衡器,要计算它会让噪声增强多少dB。
- 功耗与面积 —— 在芯片设计里,这是硬约束。一个超高性能但功耗翻倍的均衡器,在量产中是没有竞争力的。
我曾经评估过一代均衡器IP,它的眼图打开得很漂亮,但误码率就是下不去。最后发现,它在提升信号的同时,把某个频段的噪声也放大了,导致margin不够。最后不得不回退均衡强度,加了一级滤波。
4.7 一点实践思考
我这里贴一段简单的Matlab代码,演示线性均衡和非线性均衡对ISI的抑制对比。你可以在仿真里跑跑看。
% 简化的ISI信道模型
h = [0.8, 0.3, -0.1]; % 三个抽头的信道,后标干扰-0.1
x = randn(1, 1000) > 0; % 发送的二进制信号
% 经过信道
y = filter(h, 1, x);
% 线性均衡器(ZF零强制均衡)
w_zf = [1, -h(2)/h(1), h(2)^2/h(1)^2 - h(3)/h(1)]; % 简化的3抽头
y_eq_linear = filter(w_zf, 1, y);
% 非线性均衡器(DFE,1个前馈+1个反馈)
% 假设判决器是直接门限判决
z = zeros(size(y));
for n = 2:length(y)-1
% 前馈部分
u = y(n) + 0.3 * z(n-1); % 利用判决反馈消除后标
% 判决
z(n) = u > 0.5;
end
% 对比BER
ber_linear = sum(abs(round(y_eq_linear) - x)) / length(x);
ber_dfe = sum(abs(z - x)) / length(x);
fprintf('线性均衡BER: %e\n', ber_linear);
fprintf('DFE BER: %e\n', ber_dfe);
这个例子很简化,但它能让你直观感受到:在相同的ISI信道下,DFE的BER远低于线性均衡器。为什么?因为DFE用反馈消除了非线性的后标干扰,而线性均衡器试图用线性滤波器去反卷积,效果有限。
4.8 本章小结
均衡是SerDes链路的灵魂。没有均衡,高速信号飞不出几英寸。
- 为什么需要均衡? —— 信道有损耗,信号有ISI。眼图闭合,误码率高。
- 均衡器做什么? —— 补偿信道响应,消除码间干扰,在信号和噪声间找平衡。
- 怎么分类? —— 线性/非线性(CTLE vs. DFE),前馈/反馈(FFE vs. DFE)。
- 怎么组合? —— CTLE打头阵,DFE收尾。粗调加精调。
- 怎么评估? —— 误码率是王道。别只看眼图。
这些概念,面试时会被反复拷问。你把4.1到4.8理解了,回答这个问题就游刃有余了。