4. 前馈滤波器(FFF)与反馈滤波器(FBF)的联动

好,咱们来聊聊DFE最核心的部分。

前面我们把FFF和FBF拆开讲了。说白了,它们就像一对搭档。一个负责扫清前方的路障,一个负责擦掉身后的脚印。只有配合好了,均衡器才能真正干活。

我个人习惯把这种联动叫做“你推我拉”。FFF先把主径信号稳住,把大部分前导干扰给干掉。然后FBF再出手,把尾巴上的后导干扰给清掉。你想想看,如果两个滤波器各干各的,互不搭理,那效果肯定打折扣。

4.1 为什么必须联动?

我刚开始做DFE那会儿,犯过一个低级错误。

我当时想,为什么不把FFF和FBF的系数一起调?直接扔给自适应算法不就完了?结果收敛速度慢得让人抓狂,而且动不动就发散。

后来我才明白。FFF和FBF的“视野”不一样。

  • FFF看的是未来:它处理的是当前判决时刻之前进来的信号样本。
  • FBF看的是过去:它处理的是已经判决过的符号。

它们的时间基准不同。如果联动不当,FBF会把FFF已经处理过的信号当成新的干扰来抵消。这就成了“左手跟右手打架”。

核心原则:FFF和FBF必须在一个统一的时钟节拍下工作。FFF的输出,减去FBF的输出,才是送给判决器的净信号。

4.2 联动的数学模型

我们用一个简单式子就能说清。

假设FFF有 N_f 个抽头,FBF有 N_b 个抽头。

FFF的输出是:

y_fff(k) = Σ w_fff(i) * x(k - i)   , i = 0 到 N_f-1

FBF的输出是:

y_fbf(k) = Σ w_fbf(j) * d(k - j - 1) , j = 0 到 N_b-1

注意!这里 d(k-1) 是上一个时刻的判决结果。FBF永远不使用当前时刻的判决。

最终送往判决器的信号就是:

y(k) = y_fff(k) - y_fbf(k)

一个小技巧:写代码时,记得把FBF的初始输出设为0。不然上电一瞬间,FBF里全是垃圾,会把信号带偏。

4.3 联动中的时序问题

嗯,这里要注意。时序是联动的命门。

我在项目里见过一个案例。有人把FBF的加法器放错了流水线位置。结果每个符号都多延迟了一个时钟周期。均衡器不仅没均衡好,反而把误码率搞高了。

正常的联动时序应该是这样:

  1. FFF采样:在当前时钟上升沿,FFF准备好它的输出。
  2. 减法运算:FFF输出减去FBF输出。
  3. 判决:对减法结果做硬判决。
  4. FBF更新:把判决结果送入FBF的移位寄存器,并计算下一拍的FBF输出。

这个流程必须在一个时钟周期内完成。如果你用FPGA做,记得给加法器加一级流水线。但代价是多一个周期的延迟。

避坑指南:我曾经在高速SerDes项目里,因为时序收敛问题,不得不把FBF的反馈路径打了两拍。结果引入了额外的码间干扰。后来我只能重新调整FFF的抽头,才把损失补回来。所以,打拍子一定要谨慎。

4.4 联动中的稳定性

为什么DFE一定要保证前馈路径的误差足够小?

因为FBF是一个反馈系统。如果它收到的判决结果是错的,它就会把错误“传下去”,形成错误传播。

FFF的作用就是阻断这个传播链。FFF先工作,把信道中的大尾巴干扰削到足够小。这样判决器犯错的可能性才能降低。FBF只是做最后的“精细清理”。

FFF与FBF联动关系对比
特性 前馈滤波器 (FFF) 反馈滤波器 (FBF)
信号来源 原始接收信号 判决输出
处理目标 前导干扰 + 主径 后导干扰
稳定性风险 低(无反馈回路) 高(有反馈回路)
对判决错误敏感度 低 高
在联动中的角色 主攻手,消除大部分干扰 辅助,精细清理残余干扰

你想想看,如果FFF处理得不好,判决器老是判错。FBF就会把一堆错误反馈回来。系统就会像喝醉了一样晃来晃去。

4.5 联动下的系数更新

最后说一下系数更新时的联动。

大部分自适应算法(比如LMS)是同时更新FFF和FBF系数的。但更新的误差信号却只有一个。

error(k) = d(k) - y(k)

这个 error 同时用来更新 w_fff 和 w_fbf。

我建议在更新时,把FFF的步长设得比FBF稍大一点。这样做的好处是,FFF能快速把信道的主要特征跟踪上。FBF则慢一点,主要用来削尾。

我曾经试过把步长设成一样大。结果在信道突变时,FBF反应过激,把系统搞得不稳定。后来我把FBF的步长设为FFF的0.8倍,情况就好多了。

记住:FFF和FBF的系数不是独立的。它们共享一个误差信号。调整其中一个,必然会影响到另一个。这就是联动的本质。

FFF与FBF联动流程图 输入信号 x(k) FFF 前馈滤波器 - 判决 FBF 反馈滤波器 输出 y(k) 判决结果 d(k) FBF输出 联动核心: FFF输出减去FBF输出,生成净信号。判决结果送入FBF。 两者在一个时钟节拍下协同工作,不能脱节。

我跟你讲,画图只是辅助理解。真正把联动理清楚,还是得靠动手算。

你在仿真器里试试。把FFF抽头固定住,只调FBF。看看误码率变化。再把FBF固定,只调FFF。两者的配合感觉,一下子就体会到了。