3. 信道编码基础:卷积码、Turbo码、LDPC码的简单对比,编码增益的概念
各位同学,今天我们来聊聊信道编码。说实话,这玩意儿是物理层传输的“护身符”。没有它,你的信号在信道里跑一圈,回来可能就面目全非了。
我个人习惯把信道编码比作“给数据穿防弹衣”。你想想看,无线信道里有多径衰落、噪声干扰、同频干扰……数据包就像在枪林弹雨中穿梭。编码,就是让数据在受损后还能被正确还原。
3.1 编码增益——到底能赚多少?
先讲一个核心概念:编码增益。说白了,就是用了编码之后,系统能在更低的信噪比(SNR)下达到同样的误码率(BER)。
举个例子:
- 不编码时,要10dB信噪比才能让误码率降到10⁻⁵
- 用了某种编码后,只需要7dB就能达到同样的误码率
- 那这3dB就是编码增益
嗯,这里要注意:编码增益不是白给的。它通常以带宽扩展或复杂度为代价。你想想看,加了冗余比特,传输速率自然就降了。所以工程上是个权衡问题。
核心公式(记住这个):
编码增益 (dB) = 未编码所需SNR (dB) - 编码后所需SNR (dB)
在相同误码率条件下比较才有意义。
我在项目中遇到过一件事:有个同事为了追求高编码增益,选了个复杂度极高的Turbo码。结果FPGA资源不够,延迟也超标。最后不得不降档用卷积码。所以啊,编码增益不是越高越好,得看你的硬件兜不兜得住。
3.2 卷积码——老将出马
卷积码是信道编码里的“老兵”。它不像分组码那样把数据切成块,而是连续地处理输入比特流。每个输出比特不仅跟当前输入有关,还跟之前几个输入有关——这就是“记忆”特性。
关键参数:
- 码率 (R):比如1/2码率,就是每输入1比特,输出2比特
- 约束长度 (K):决定了编码器的记忆深度,K越大,纠错能力越强,但复杂度也越高
- 生成多项式:定义了反馈连接的方式
举个例子,一个经典的(2,1,3)卷积码:
// 码率1/2,约束长度3
// 生成多项式:g0 = 7 (octal), g1 = 5 (octal)
输入序列: 1 0 1 1 0
输出序列: 11 01 00 10 01 ...
解码常用Viterbi算法。说白了就是找一条最可能的路径。我刚开始做通信时,总觉得Viterbi算法很玄乎。后来自己手写了一遍,发现其实就是动态规划——找最短路径而已。
避坑指南:
我曾经在项目中用卷积码做卫星通信,没注意约束长度对延迟的影响。K=9的译码器,延迟直接飙到几百个符号周期。后来改成K=7,延迟降下来了,编码增益只损失了0.3dB。值!
3.3 Turbo码——接近香农极限的“黑科技”
Turbo码在90年代横空出世,直接逼近了香农极限。它的核心思想是:用两个或多个卷积码并行编码,中间加个交织器,然后迭代译码。
为什么叫“Turbo”?因为译码过程像涡轮增压一样,两个译码器互相交换“软信息”,迭代几次后性能越来越好。
关键特点:
- 编码增益极高:在1/2码率下,距离香农极限仅0.5dB左右
- 译码复杂度高:需要多次迭代,延迟较大
- 适合低信噪比场景:比如深空通信、卫星通信
我记得有一次做3G系统的链路仿真,Turbo码在Eb/N0=1dB时就能达到10⁻⁶的误码率。而卷积码至少要3dB。差距就是这么明显。
注意:
Turbo码有个“地板效应”——当信噪比很高时,误码率下降会变慢。这是因为交织器不够大或者迭代次数不够。我曾经被这个坑过,仿真做到一半发现BER下不去了,后来把交织器从1024改成4096才解决。
3.4 LDPC码——后起之秀
LDPC码(低密度奇偶校验码)其实1960年代就提出来了,但当时硬件太弱,没人用。直到90年代末才被重新发掘。现在5G、Wi-Fi 6、DVB-S2都在用。
它的核心是:用一个稀疏的校验矩阵来定义码字。“稀疏”的意思是矩阵里1的个数很少,这样译码复杂度就低。
关键特点:
- 性能接近香农极限:比Turbo码还略好一点
- 译码可并行:适合硬件实现,延迟可控
- 没有地板效应:高信噪比下性能依然优秀
我最近在做5G NR的物理层优化,LDPC码的译码器用FPGA实现,吞吐量能到10Gbps以上。Turbo码想都不敢想。
3.5 三种编码的对比——一张表说清楚
| 特性 | 卷积码 | Turbo码 | LDPC码 |
|---|---|---|---|
| 编码增益 | 中等(3-5dB) | 高(5-7dB) | 高(5-7.5dB) |
| 译码复杂度 | 低 | 高 | 中等 |
| 译码延迟 | 低 | 高(需多次迭代) | 中等(可并行) |
| 硬件实现 | 简单 | 复杂 | 中等 |
| 适用场景 | 低延迟、低复杂度 | 深空、卫星、3G/4G | 5G、Wi-Fi、DVB |
| 地板效应 | 无 | 有(交织器不够大时) | 无 |
你想想看,选哪种编码其实是个系统工程问题。如果延迟敏感,比如语音通信,卷积码是首选。如果追求极限性能,LDPC码是当前最优解。Turbo码嘛,现在用得少了,但在一些遗留系统里还能见到。
3.6 知识体系框架图
下面这张图帮你理清本章的核心逻辑:
我的个人建议:
如果你是刚入门,先从卷积码开始。它简单、直观,能帮你理解“冗余”和“纠错”的本质。等你把Viterbi算法吃透了,再去看Turbo和LDPC,会发现它们都是卷积码的变体和扩展。
我曾经带过一个实习生,上来就想搞LDPC码的FPGA实现。结果连校验矩阵怎么构造都搞不清楚。我让他先回去把卷积码的Viterbi译码器写一遍,一周后他回来跟我说:“原来如此!”
好了,信道编码的基础就讲到这里。记住:编码增益是衡量编码好坏的“硬指标”,但工程实现时,复杂度、延迟、功耗同样重要。没有最好的编码,只有最合适的编码。
公众号:蓝海资料掘金营,微信deep3321