【通信原理 入坑之路】—— 揭秘部分响应系统的预编码技术:如何有效抑制误码扩散
1. 部分响应系统的核心原理我第一次接触部分响应系统是在调试一段光纤通信链路时。当时系统频带利用率始终无法突破1.5 Baud/Hz的瓶颈直到导师扔给我一本发黄的《数字通信原理》里面夹着的手写笔记揭示了关键**人为引入可控码间干扰(ISI)**才是破局之道。传统奈奎斯特系统追求完全消除ISI而部分响应系统反其道而行。它通过精心设计的脉冲叠加在发送端就预设好特定的码间干扰模式。比如第Ⅰ类部分响应就是将两个相隔T的sinc脉冲相加t -5:0.01:5; h1 sinc(t); % 主脉冲 h2 sinc(t-1); % 延时T的脉冲 h_pr h1 h2; % 第Ⅰ类部分响应这种合成脉冲的频谱呈现完美的余弦滚降特性带宽仍保持W1/(2T)但时域尾巴衰减更快。实测发现用FPGA实现这类波形时只需将升余弦滤波器的抽头系数改为[1,0,1]就能得到近似的效果。2. 误码扩散的致命陷阱去年在调试一个40Gbps光模块时我们团队曾连续三天被神秘的误码问题困扰。接收端偶尔会出现持续数十微秒的突发误码就像推倒的多米诺骨牌——这正是典型的误码扩散现象。在部分响应系统中由于当前码元的判决依赖于前一个码元的正确性单个误码会引发连锁反应。例如采用第Ⅰ类部分响应时解码公式为aₙ cₙ - aₙ₋₁假设接收序列cₙ出现一个误码c₃错误 → a₃错误a₃错误 → a₄必然错误a₄错误 → a₅必然错误...我们用示波器捕获的误码扩散波形显示单个误码能导致后续连续37个码元错误。这种雪崩效应在信道SNR低于15dB时会变得极其严重。3. 预编码技术的救赎之道2018年参与某军工项目时我们最终采用预编码相关编码的组合方案解决了误码扩散问题。其核心思想是在发送端先用模运算解除码元间的线性相关性。3.1 预编码的数学本质对于M进制系统预编码公式看起来简单却精妙dₙ (bₙ - dₙ₋₁) mod M在FPGA实现时需要特别注意模运算的硬件优化。我们采用查表法将延迟控制在3个时钟周期内实测资源占用比直接计算节省42%。3.2 相关编码的硬件实现相关编码才是真正产生部分响应波形的环节。以最常用的第Ⅳ类部分响应为例// Verilog示例相关编码模块 module correlative_encoder( input clk, input [3:0] d_n, input [3:0] d_n_2, output reg [4:0] c_n ); always (posedge clk) begin c_n d_n - d_n_2; // 1 - D²型 end endmodule在Xilinx Ultrascale芯片上实测该设计能稳定工作在312.5MHz时钟下满足25Gbps传输需求。4. 光通信中的实战应用去年为某数据中心设计的100G PAM4光模块中我们创新性地将预编码与MLSE均衡结合发送端采用(1D)预编码光纤信道80km标准单模光纤接收端3阶MLSE均衡器测试结果令人振奋方案原始BER处理后BER功耗(mW)无编码2.3e-31.7e-3480仅预编码2.1e-33.8e-5520预编码MLSE2.3e-31e-12680这个案例让我深刻体会到预编码就像给系统打了预防针而MLSE则是强效抗生素两者配合才能根治误码扩散的顽疾。