第一次看到Arikan那篇论文时,我整个人是懵的。
信道极化?这概念太美了,美得不像真的。一堆独立的二进制输入离散无记忆信道,通过简单的递归组合与分裂,竟然能自然分化出“完全可靠”和“完全噪声”两类子信道。然后我们只需要在好信道上放数据,坏信道上塞点儿冻结比特——完事儿。
说实话,当时我觉得这玩意儿就是个数学玩具,离工程落地远着呢。但后来5G标准冻结,Polar码被写入eMBB场景控制信道编码方案,打脸来得太快。
今天不聊虚的。我们就掏刀子,直接解剖Polar码的核心算法机制、实测性能,还有我在落地时踩过的三个大坑。踩坑经验这东西,对吧,纯烧钱烧出来的。
关键点前置:如果你只记得一句话,那就是——Polar码的构造、译码、速率匹配,三者必须耦合设计,任何一个环节割裂都会导致性能崩塌。不是渐进损失,是崩塌。

先看底层。
信道极化的暴力美学:不是编码,是物理规律

传统的信道编码思路——无论是卷积码、Turbo码还是LDPC——核心都是在码字中引入相关冗余,然后在译码端通过各种迭代算法把误码率压下去。本质上是用计算复杂度换性能。
Polar码完全反着来。它不“加入”冗余,而是利用一个被称为信道合并与分裂的递归过程,让冗余从信道自身“长”出来。
怎么理解?想象你有N个完全相同的信道,互相独立。现在做两个操作:
1. 合并:通过一个简单的线性变换(矩阵KRONECKER积),把这些独立信道捏成一个合成信道。注意,合成信道的输入不再是任意比特,而是需要满足特定约束的向量。
2. 分裂:在接收端,利用串行抵消(SC)译码的策略,将合成信道重新撕开。神奇的事情发生了——撕开后的子信道不再同质。有的子信道错误概率趋近于0,有的趋近于1,而且随着N增大,这种现象越发极端,像物理相变。
这就是信道极化。它不需要外部加冗余,极化后的好信道天然就有逼近香农限的能力,而坏信道……直接放弃,反正上面传的都是已知的冻结比特。
数学上,这个过程的基底只是一个2×2的矩阵G2 = [1 0; 1 1]。Arikan的递归公式简单到令人发指:G_N = B_N * F^{⊗n},其中F是那个核心矩阵的比特反转版本,⊗n是n次克罗内克积。整个编码过程就是x=u*G_N,u中部分比特固定为0,部分为信息比特。
但别被简洁骗了——这背后是信息论50年来最大的突破。香农当年用随机码证明极限存在,而Arikan给出了确定性的构造,还证明了好信道占的比例正好等于信道容量。
够美了。
数据不会说谎:Polar码 vs LDPC,我们在5G控制信道测了半年
理论再漂亮,工程上得看实打实的性能。5G NR控制信道报文短,从几十比特到几百比特不等,传统LDPC码在短码长段的表现……怎么说呢,有点拉胯。
我们团队做过一个系统级仿真,对比Polar码与802.11n时代的LDPC码(码长64到512比特,码率1/3),在加性高斯白噪声信道下,目标误块率(BLER)10^{-4}。
结果:
· 码长128比特时,Polar码(SC-List译码,列表大小L=8)相比LDPC有约0.8dB的净编码增益。0.8dB什么概念?在链路预算极其紧张的毫米波场景,这就是生死线。
· 码长256比特以上,差距缩小,但Polar依旧领先0.3~0.5dB。而且Polar码的误块率曲线极其陡峭——一旦信噪比过某个拐点,BLER断崖式下降,这在实际网络中意义巨大,因为重传开销会被压得很低。
· 计算复杂度方面,SC-List译码器复杂度与列表大小L成线性关系,而Turbo码的MAP译码复杂度随状态数剧增。实测FPGA实现,Polar译码器在相同吞吐量下,面积比Turbo小40%,功耗低30%。

然而——重点来了——这些甜头全都有代价。
落地三大陷阱,烧光了预算才攒来的教训

陷阱一:盲目追求长列表导致实时的灭顶之灾
SC-List译码的列表大小L直接决定性能。L越大,译码器能保留的候选路径越多,理论上更接近最大似然译码。但代价是指数级增长的路径度量存储和排序开销,尤其是吞吐率要求>1Gbps时。我们第一版用L=32,系统直接时钟时序炸了。后来发现,在控制信道场景,L=8与L=32性能差不到0.2dB,但硬件复杂度翻了三倍。
解法:动态列表剪枝。根据信噪比估计,自适应调整L大小,低信噪比用L=8,高信噪比降到L=4。同时引入CRC辅助早期终止,一旦某条路径校验错误,直接毙掉,别占着茅坑。
陷阱二:速率匹配对极化码结构的破坏
实际系统码率要求灵活,必须对母码打孔或缩短。但Polar码的极化索引依赖于码长和信道条件,打孔会改变子信道可靠性顺序。很多人直接用标准打孔表,但那是基于二进制擦除信道优化的,在无线衰落信道下性能劣化严重。
我们踩过的最蠢的坑:用QPSK调制时,打孔了第5个子信道,结果那个子信道恰好是当前极化结构下最可靠的信道之一,BLER直接飙升2dB。原因?打孔位置打破了极化棵树的嵌套结构,导致信息位选择完全错位。
解法:必须联合优化打孔图样与信息位选择。我们采用了基于密度进化的离线构造方法,针对每种码率和调制方式,重新计算极化权重,并在线存储为表。内存开销增加了约512KB,但性能挽回超过1dB,值。
陷阱三:译码延迟的雪崩——串行依赖,不可并行
SC译码本质上是一个逐比特判决过程,每个比特依赖前一个比特的判决结果。这种串行依赖在长码下会导致译码延迟巨大,无法满足5G的低时延要求。LDPC译码器天然支持大量并行节点更新,Polar却是单机流水线。
痛苦的经验:码长1024,SC译码器在2GHz频率下延迟达2.3微秒,加上列表管理,延迟飙到5微秒,URLLC指标(1毫秒内)直接压爆。
解法:改用简化的SC-List算法 + 多段并行。将码树切为几段,段内使用SC译码,段间并行执行,牺牲微小的性能换取延迟降至1/4。同时将冻结比特判决逻辑硬化为组合逻辑,减少关键路径。最终延迟控制在0.8微秒内。
这套东西,现在已经在我们的5G小基站里跑了一年了。稳。
回头再看Arikan的论文,还是那么美。数学上的极简,引出了工程上的极限。编码这门手艺,说到底,就是如何在混乱的信道中切出一条完美的秩序之缝。