先讲一个搬家的问题。你有 100 件玻璃杯要从广州寄到北京,快递公司的赔付条款是:每一单最多赔 1 件。现在你有两种装法:
杯子总数没变、路面没变、赔付条款也没变——变的只有错误的分布方式。装法 B 干的事情,就是本文的主角:交织(Interleaving)。
无线通信里,信道编码就是那份“赔付条款”:每种码都有一个明确的能力上限,比如“每个码字最多救回 1 位错”或“每 1000 位最多救 8 位”。而这个上限,是按随机分布的、彼此独立的错误设计的。麻烦在于,无线信道的错误偏偏不长这样——它们成串而来。交织要做的,就是在“错误成串”和“码只救得起零散错”之间,搭一座桥。
如果信道像掷硬币,每次出错概率 1%,彼此独立,那纠错码的日子会非常舒服——随机错误正是它们最擅长的。但无线信道更像天气:一旦进入深衰落,会连续阴雨几十毫秒,而不是每毫秒独立地“下雨/晴天”抽签一次。
原因在物理层。手机和基站之间相对运动产生多普勒效应,接收信号强度是一条随时间起伏的曲线,深谷处信号可以比均值跌落 20~30 dB——这一跌,信噪比掉到底,解调器连续出错。而两个深谷之间隔着一整段好日子。错误不是撒芝麻,是成串的痘痘。
描述这种起伏有两个关键量。最大多普勒频移与运动速度成正比:
$$f_D = \frac{v}{c}\, f_c$$
其中 $v$ 是相对速度,$c$ 是光速,$f_c$ 是载波频率。信道冲激响应“换一副面孔”所需的时间,即相关时间,工程上常用下面的估计(对应相关系数约 0.5 的经典定义):
$$T_c \approx \frac{0.423}{f_D}$$
算两个例子,感受一下量级:
一个最小距离为 $d_{min}$ 的码,能纠正的随机错误位数为:
$$t = \left\lfloor \frac{d_{min}-1}{2} \right\rfloor$$
注意这个公式的隐含前提:错位之间互不勾结。迭代译码(Turbo、LDPC)在构造时的性能分析,同样是基于独立错误的假设。一旦 20 个错挤在同一码字里连续出现,再强的码也会当场翻车——不是码不行,是错误出现的姿势超出了它的服务范围。
于是设计问题变成:错误在时间上扎堆,能不能把它们摊开?
交织的原理一句话就能说完:发送端按一个双方约定好的确定性规则打乱比特顺序,接收端按逆规则还原。注意两个关键词:
它在处理链上的位置如下:
flowchart TD
A["信息比特"] --> B["信道编码<br/>按随机错设计"]
B --> C["交织洗牌<br/>只换顺序不改值"]
C --> D["调制发射"]
D --> E["无线信道<br/>深衰落成串咬人"]
E --> F["接收解调<br/>误码连成一串"]
F --> G["解交织<br/>逆洗牌还原顺序"]
G --> H["信道译码<br/>错已摊薄可救"]
最直观的交织器是一个矩阵游戏——按行写入,按列读出。看一个 4×4 的例子:
| 写入(按行) | 列1 | 列2 | 列3 | 列4 |
|---|---|---|---|---|
| 行1 | b1 | b2 | b3 | b4 |
| 行2 | b5 | b6 | b7 | b8 |
| 行3 | b9 | b10 | b11 | b12 |
| 行4 | b13 | b14 | b15 | b16 |
发送时的读出顺序是按列:b1、b5、b9、b13、b2、b6、b10、b14……假设信道在一段深谷里连咬 4 位:b5、b9、b13、b2——在发送序列里它们是挨着的 4 连错,任何单一码字都救不了。但接收端解交织还原后,这 4 个错分散到了 4 个不同的行:行1 错 1 位(b2)、行2 错 1 位(b5)、行3 错 1 位(b9)、行4 错 1 位(b13)。如果每行是一个纠 1 位错的码字——全部救活。
flowchart TD
subgraph TX["发送端:按行写 按列读"]
A["行1: b1-b4"] --> B["行2: b5-b8"]
B --> C["行3: b9-b12"]
C --> D["行4: b13-b16"]
end
D --> E["按列读出"]
E --> F["突发咬中4连位"]
F --> G["解交织逆洗牌"]
G --> H["每码字只错1位"]
这就是交织的全部魔法:它没有消灭错误,它消灭的是错误之间的“相关性”。一个长度为 B 的突发错,经过深度足够的交织后,最坏也只让每个码字背上约 B/码字数 个错——把“一次灭门”化成“家家擦伤”。
| 参数 | 含义 | 带来什么 | 代价 |
|---|---|---|---|
| 交织宽度 W | 矩阵列数,同时"在册"的码字数 | 决定单个突发最多摊到几个码字 | 缓存、处理复杂度 |
| 交织深度 D | 矩阵行数,对应时间跨度 | 决定能覆盖多长的深衰落 | 固有时延:$T_{int}=D \cdot W \cdot T_b$ |
| 码的纠错力 t | 每个码字能救的错位数 | 决定摊薄后每份"损失额度" | 码率损失(冗余开销) |
三者是一个天平系统:深度 D 必须足够大,使得交织的时间跨度盖过信道相关时间 $T_c$;而 D×W 直接决定数据要在缓冲区里“憋”多久才能凑齐一个矩阵。交织的每一分抗衰落能力,都是用时延现钱买来的。
交织够用的判据很朴素:交织跨度 > 信道深谷的持续时间。于是出现了一道经典的工程对比题。
2G 语音的答案:GSM 全速率语音每 20 ms 产生一个语音块,信道编码后得到 456 bit;这 456 bit 被拆进连续 8 个 TDMA 突发(每帧 4.615 ms),跨度约 $8 \times 4.615 \approx 37$ ms,而且相邻语音块首尾搭接、对角穿插,让每个突发都同时携带两个语音块的内容。为什么要这么深?看算术:900 MHz、车速 50 km/h 时,$f_D \approx 42$ Hz,$T_c \approx 10$ ms——37 ms 的跨度能稳稳压过 10 ms 的深谷。而语音业务对百毫秒级时延并不敏感,这个钱花得起。
5G 低时延业务的答案:URLLC 类业务预算可能只有 1 ms 级。步行用户的相关时间却有 26 ms——深交织在这个场景下根本等不起。那深谷怎么办?答案在第五节。
flowchart TD
A["量出深谷时长<br/>相关时间0.423/fD"] --> B{"谷比时延预算<br/>短还是长?"}
B -->|谷更短| C["交织能压平<br/>按预算给足深度"]
B -->|谷更长| D["深交织等不起<br/>绕道走别的路"]
C --> E["码字横跨<br/>好时段与坏时段"]
D --> F["HARQ重传<br/>与多天线分集补位"]
这张决策图点出了一个常被忽略的真相:交织只是对抗衰落的武器库之一。当时间维度上摊不开时(时延预算不够),系统会转向空间维度(多天线分集:同一比特走几条互相独立的天线路径)或重传维度(HARQ:一次翻车下一次重来,两次传输的衰落天然不相关)。三条路本质相同——制造独立性。
把 2G 语音链路的时延账本摊开看,你会对“交织的代价”有更具体的体感:
GSM 语音听感上“底噪沙沙、但稳”,正是深交织压平淡突发的功劳。而这份稳,是用每人近 60 ms 的缓冲换的。每一代系统的交织深度,本质上都是当年“时延预算 × 码能力”联合定价的结果。
一个有趣的事实:越新的系统,越找不到那个“独立的大交织器”模块了。它没有消失,而是换了一种存在方式。
| 代际 | 信道码 | 交织做法 | 所在位置 | 时延性格 | 设计动机 |
|---|---|---|---|---|---|
| 2G GSM | 卷积码 | 对角块交织,跨8个突发约37ms | 编码后外置 | 深而慢 | 深交织压平深衰落,语音等得起 |
| 3G | Turbo码 | 行列入交织+内交织两级整理 | 编码器内部 | 中 | 迭代译码需要输入比特"长得随机" |
| 4G LTE | Turbo码 | QPP多项式交织 | 编码器内部 | 浅而快 | 无冲突特性支持多核并行译码 |
| 5G NR 数据 | LDPC | 准循环结构+位交织 | 焊进校验矩阵 | 极浅 | 迭代译码+HARQ 补位,低时延优先 |
| 5G NR 控制 | Polar码 | 子块交织 | 速率匹配环节 | 浅 | 把信息比特摆到特定子信道位置 |
LTE Turbo 码的内交织用了二次置换多项式(QPP):
$$\pi(i) = \left( f_1 \cdot i + f_2 \cdot i^2 \right) \bmod K$$
其中 $K$ 是码块长度,$f_1$、$f_2$ 是按长度查表确定的系数。为什么偏偏选二次多项式?因为它具备一个珍贵性质——无冲突(contention-free):把长度 K 的码块分给 P 个并行处理器译码时,任意同一时刻,不同处理器读写的地址互不撞车。Turbo 迭代译码是出了名的计算黑洞,无冲突交织让多核硬件真正跑出并行度。这是一个非常“为什么这样设计”的案例:交织规则不只看打散效果,还要看在硅片上好不好住。
LDPC 更进一步,干脆没有独立交织器——它的准循环(quasi-cyclic)校验矩阵中,每个子块都是前一个子块的循环移位。循环移位本身就是一种结构化交织:不同信息比特的校验关系被系统性地错开,一个局部突发错在 Tanner 图上天然被摊到远处的多个校验节点。也就是说,交织从“编码后的一道工序”变成了“编码矩阵的基因”。
Polar 码侧则保留了一个轻量的子块交织:把编码比特分组后按固定顺序重排,配合速率匹配的打孔/重复,让信息比特落在性能最优的子信道位置上。目的不再是压深衰落,而是整形码字结构与速率匹配的对齐方式。
flowchart TD
A["2G GSM<br/>外置对角块交织"] --> B["3G Turbo<br/>两级内交织起步"]
B --> C["4G LTE<br/>QPP无冲突内交织"]
B --> D["5G LDPC<br/>交织焊进准循环矩阵"]
B --> E["5G Polar<br/>子块交织配速率匹配"]
为什么新系统敢把交织做浅?三笔账:
标准允许多种具体实现,交织的具体参数与行为以各系统、各厂家的官方资料为准;但“交织随代际变浅、功能内化”这条主线,是所有标准文本共同讲述的故事。
Q: 交织和加密都是“打乱顺序”,本质区别是什么? A: 区别在目标和钥匙。交织用标准里公开的固定规则,目标是打破错误的时间相关性,人人可逆;加密用只有双方知道的密钥,目标是让第三方读不懂,规则公开、密钥保密。一个管“错误怎么排”,一个管“内容谁能看”,在协议栈里是两个不同环节。
Q: 为什么 2G 敢用 37 ms 的深交织,5G 却几乎把交织“拆”没了? A: 因为替代品长出来了。深交织买的是时间独立性,而 5G 用更强的迭代译码码字、HARQ 重传的天然不相关性、以及多天线空间分集,用更低的时延代价买到了同样的独立性。时延预算从百毫秒级压到毫秒级后,深交织在账本上出局了。
Q: 交织深度具体怎么选?现网上怎么判断交织不够用? A: 设计侧的公式很直接:交织跨度取信道相关时间(0.423/f_D)的若干倍,再卡时延预算的上限。现网侧看误码的形态:如果 BLER 失败呈连片突发、且发生在阴影/深衰落区,说明现有时间跨度盖不住深谷——优先考虑覆盖优化,而不是去“加深交织”(现网交织深度是标准定死的,不可调,这正是要理解原理的原因:知道哪一层没救了,去别的层找答案)。
Q: 一个突发错串比交织深度还长,会发生什么? A: 摊不干净,会有个别码字背上超出纠错能力的错位,译码失败。失败的数据不会直接丢给用户:初传失败触发 HARQ 重传(用不同的冗余版本再赌一次不相关的衰落),仍不行再走外层重传。交织决定了“第一次成功率”,重传机制决定“最终丢包率”,两层各管一段。
Q: 交织深度和信道编码的纠错能力,哪个更重要? A: 它们是乘法关系,不是比大小。系统抗突发能力 ≈ 交织的摊薄倍数 × 码的纠错位数。摊得再散、码太弱救不回;码再强、错误挤成一坨也无力。设计时两者联动:码能力富余时交织可以浅一点(5G 的路线);码弱时只能靠深交织硬扛(2G 的路线)。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
