3、均衡基本原理:线性均衡结构与迫零算法、MMSE准则
讲到均衡,咱们先得把“线性均衡”这个东西搞清楚。说白了,它就是一个FIR滤波器。我在项目里跟年轻同事讲的时候,经常拿它比作一个能调权重的滑动窗口——输入信号进来,每个抽头乘上系数,然后加起来输出。就这么简单。但真正关键的,是这些系数该怎么算。今天我们就来聊两个最经典的准则:迫零(ZF)和最小均方误差(MMSE)。
3.1 线性均衡器的结构
一个典型的线性均衡器长什么样呢?看下面的结构图就清楚了。
你看这个图,输入信号经过抽头延迟线,每个抽头乘以一个系数,然后求和。这些系数 w₀, w₁, w₂, w₃ 就是均衡器要优化的目标。不同准则会给出不同的一组 w。
3.2 迫零算法(Zero Forcing)
迫零算法,名字很直白:强迫码间干扰(ISI)为零。它不考虑噪声,只想着怎么把信道冲激响应的拖尾完全抵消掉。数学上,就是让均衡器和信道的组合响应在采样点上满足“只在当前符号处为1,其余时刻为0”。
我早年在一个8PSK系统里就吃过亏。当时信道多径很严重,我用迫零均衡,明明眼图张开了,但星座图还是散得厉害。后来才发现——噪声被放大了!因为迫零本质上是逆信道的幅频特性,如果信道在某个频点衰减很厉害,迫零就会在这个频点拼命增益,噪声也跟着放大。所谓“零强制”的代价,就是噪声增强。
迫零系数的求解:
如果用矩阵表示,设信道矩阵为 H,均衡器系数向量为 w,迫零准则要求:
wT H = [0 … 0 1 0 … 0]
说白了就是解一个线性方程组。实际中常用自适应算法(比如LMS)来逼近。
3.3 MMSE准则(最小均方误差)
MMSE准则就不一样了。它不追求把ISI完全消除,而是找个折中——在残留ISI和噪声增强之间取得平衡。数学上,它最小化均衡器输出与发送符号之间的均方误差:
min E[| â(k) – a(k) |²]
我个人的习惯,在信噪比比较低的环境下优先选MMSE。你想想看,迫零在低SNR时效果往往很差,因为它把噪声抬上来了。而MMSE会主动“让一部分ISI留着”,以此换取噪声不被过分放大。代价是会有残留ISI,但在实际系统中,后面往往还有FEC解码,这点残留ISI大部分能被纠错码扛过去。
MMSE的闭式解也很经典:
wMMSE = (HHH + σ²I)⁻¹ HH r
其中σ²是噪声方差,I是单位阵。你看多了一个σ²I,正是这个东西抑制了噪声增益。
3.4 两个准则的对比
为了让你更直观地理解,我整理了一张表。平时在项目评审时,我常拿这张表跟算法组对口径。
| 属性 | 迫零 (ZF) | MMSE |
|---|---|---|
| 目标 | 完全消除ISI | 最小化误差+ISI+噪声 |
| 噪声影响 | 可能放大噪声 | 抑制噪声,不放大 |
| 适用场景 | 高SNR,信道深度衰落可控 | 低SNR,或信道特性不稳定 |
| 计算复杂度 | 较低(只解线性方程) | 稍高(需要噪声方差估计) |
| 数值稳定性 | 差,病态矩阵易发散 | 好,正则化项自动稳定 |
3.5 两种准则的自适应实现
实际工程中,我们不会每次都去求矩阵逆。太慢了。一般用自适应滤波器迭代更新系数。常见的算法:
- LMS(最小均方):简单,但收敛慢。对于MMSE,使用
e(k) = a(k) – y(k)来更新。 - RLS(递归最小二乘):收敛快,但计算量大。适合需要快速跟踪的信道。
- 盲均衡(CMA等):不需要训练序列,适用于无导频的场景。
我个人的经验:能上RLS就上RLS,尤其在做硬件加速时,RLS用矩阵求逆引理实现,其实资源量是可控的。不过如果在FPGA上做,还是LMS更稳妥——我记得有一个项目,为了省几个乘法器,硬是用LMS迭代了好几万步才收敛,但最终稳定后的性能和MMSE解析解几乎一样。
3.6 小结一下
线性均衡器的核心就是选系数准则。迫零简单暴力,但怕噪声;MMSE聪明平衡,但需要噪声估计。没有的好坏,只有场景的选择。你在做系统设计时,不妨留一个可配置的参数,让上层软件根据SNR动态切换准则。我就这么干过,效果不错。
其实,很多时候真正的挑战不是准则本身,而是实现过程中的数值稳定性、定点化精度、以及实时更新速度。希望今天的这些内容能给你一个扎实的起点。后面我们会深入更多均衡结构,但今天先把这些基础打牢。