<!-- title: 把信号搅成噪声：扰码原理 -->

部队行军过桥时，教官会喊一个奇怪的口令：便步走。队伍一旦整齐踏步，所有人的脚步就会在同一时刻、以同一节奏砸向桥面——这些周期性的力会在某个频率上叠加共振，足以把一座桥震塌。散开步子之后，每个人的落脚时刻互不相同，力量被摊平成一片无结构的“背景”，桥反而安全了。

蜂窝网络里也藏着同一条物理规律：**有规律的力量最可怕，无规律的力量反而无害**。数字通信中最怕的不是信号弱，而是发射出去的比特流里藏着“规律”——长串的0、周期重复的帧、整齐的码型。这些规律会变成频谱上扎眼的谱线、变成对特定邻区的周期性干扰、变成接收机定时电路的噩梦。本文要讲的扰码（scrambling），就是通信系统给自己下的那道“便步走”口令。

## 扰码：一次不增不减的翻转

先给技术定义：扰码是把待发送的比特序列与一条伪随机序列逐位做异或（模二加）运算。设原始比特为 $b_k$，伪随机序列为 $p_k$，则发送比特为：

$$c_k = b_k \oplus p_k$$

它有三个看起来平平无奇、实际非常巧妙的特点。

**第一，长度不变。**每个比特只被“翻转”或“不翻转”，比特总数一个不多一个不少，速率零损失，时延零增加。

**第二，自反性。**异或有个可爱的代数性质——同一个数异或两次等于没异或：

$$b_k = c_k \oplus p_k$$

接收端只要再生成一模一样的伪随机序列，再异或一次，原始数据分毫不差地还原。加扰器和解扰器在数学上是同一台机器。

**第三，序列是公开的。**伪随机序列由小区标识、用户标识、时隙编号等公开参数决定，谁都能算出来。这就引出一个必须澄清的误解：**扰码不是加密**。它的目的从来不是让人看不懂，而是给传输数据“有用的工程特性”。维基百科的 Scrambler 词条说得很直白：扰码与加密毫无关系，其意图是让发射数据获得良好的工程性质，例如避免长串的 0 或 1、让信号功率谱不随实际数据内容变化。

那么问题来了：能担此重任的伪随机序列，去哪里找？

## 序列从哪来：移位寄存器的流水线

答案是硬件里最朴素的部件之一——线性反馈移位寄存器（LFSR）。它的结构简单到可以在一节课内画完：一排串联的寄存器，每个时钟节拍整体移位一次，从其中某几位“抽头”引出信号，经异或门反馈回输入端。

```mermaid
flowchart TD
    IN["反馈值"] --> A0["寄存器a0"]
    A0 --> A1["寄存器a1"]
    A1 --> A2["寄存器a2"]
    A2 --> A3["寄存器a3"]
    A0 -->|抽头| X["异或门"]
    A1 -->|抽头| X
    X -->|下拍反馈| IN
    A3 --> OUT["输出比特流"]
```

这台小机器的输出看起来杂乱无章，实际上完全由两样东西决定：**反馈抽头的位置**（数学上对应一个GF(2)上的多项式，上图对应 $x^4+x+1$）和**寄存器的初始状态**。

抽头位置不是随便选的。只有当对应多项式是**本原多项式**时，寄存器才能在重复前遍历除全零外的所有状态，输出周期最长的序列——这就是最大长度序列，俗称 m 序列。一个 4 级寄存器能吐出周期为 15 的序列；级数 $n$ 与周期的关系是：

$$N = 2^n - 1$$

级数每加一，周期翻倍还要多：20 级寄存器就能生成 1,048,575 位长序列，硬件代价却只是 20 个触发器加一两个异或门。这也是维基百科强调 LFSR 是扰码标准实现的原因——统计性质好，硬件实现又便宜。

这里还埋着一个工程陷阱：**全零状态是死局**。寄存器一旦进入全零，异或门永远输出 0，序列彻底锁死。所以 m 序列的初始状态可以是除全零外的任何状态，这个“缺席的全零”也解释了 m 序列的许多统计细节。

## m序列的三张王牌

m 序列能成为扰码和同步的基石，靠的是三条统计特性，每一条都精确对应一种工程需求。

**王牌一：平衡性。**在一个周期的 m 序列里，1 出现 $2^{n-1}$ 次，0 出现 $2^{n-1}-1$ 次——1 总比 0 恰好多一个（多的正是那个缺席的全零状态）。序列几乎不偏科，直流分量接近零，频谱因此平坦。

**王牌二：游程分布。**游程指连续相同比特的段落。m 序列中一半的游程长度是 1，四分之一长度是 2，八分之一长度是 3……长连 0 或长连 1 极少出现。这正是接收机最想要的品质：定时恢复电路、自动增益控制（AGC）都依赖比特流里有足够的跳变沿，长串同值比特会让这些自适应电路“断粮”。

**王牌三：双值自相关。**把比特 0/1 映射成 −1/+1 后，m 序列的归一化循环自相关只有两个取值：

$$R(\tau) = \frac{1}{N}\sum_{k=1}^{N} s_k s_{k+\tau} = \begin{cases} 1 & \tau = 0 \\ -1/N & \tau \neq 0 \end{cases}$$

对齐时相关值为 1，错开任何位置都是 $-1/N$ 的微小负值。序列越长，这把“尺子”越锋利：相关峰像针尖，非对齐处像刀刃贴地。接收机靠这个性质在噪声里找信号——把本地序列与收到的流做滑动相关，相关值突然冒尖的位置就是同步点。信道估计用参考信号“画像”，本质上也是在用这把尺子。

| 王牌 | 数学表现 | 工程价值 |
| --- | --- | --- |
| 平衡性 | 1 比 0 恰好多一个 | 频谱平坦，无直流漂移 |
| 游程分布 | 游程长度呈几何级数递减 | 定时恢复、AGC 不缺跳变 |
| 双值自相关 | 对齐为 1，错开为 −1/N | 同步捕获、信道估计的“针尖” |

## 人多起来之后：Gold序列登场

m 序列近乎完美，却有一个致命局限：**好序列太少**。两条 m 序列之间的互相关没有保证——大多数配对的互相关很差，真正“优选”的配对在同级数下屈指可数。一个小区两条序列自娱自乐没问题，但蜂窝网络要在同一片频谱里塞下成百上千个小区，每个小区都需要一条“自己的序列”，且任意两条序列相互之间都不能太亲近，否则邻区信号会被误认成自己的信号。

1967 年 Robert Gold 给出的解法优雅得像变戏法：取一对**优选 m 序列**，把其中一条相对另一条做所有可能的循环平移，每个平移量下两条序列逐位异或，就得到一条新序列。所有平移结果，加上两条原始序列本尊，构成一族 $2^n+1$ 条序列——这就是 Gold 序列族。

```mermaid
flowchart TD
    M1["优选m序列A"] --> X["逐位异或"]
    M2["优选m序列B"] --> X
    T["穷举所有相对平移"] --> M2
    X --> G["每个平移出一条"]
    G --> F["组成Gold序列族"]
```

这桩交易的精妙之处在于：**用一点自相关的锋利度，换来整族互相关有界的序列**。Gold 族内任意两条序列的互相关值被夹在一个可控的三值集合内，最大值不超过：

$$|R_{xy}| \le 2^{(n+1)/2} + 1 \quad (n\text{ 为奇数时})$$

打个比方：m 序列是独门兵器，削铁如泥但只此一把；Gold 序列是兵工厂，量产的每把刀都保证“不会误伤友军”。这个设计撑起了两个众所周知的系统——GPS 的民用 C/A 测距码就是周期 1,023 的 Gold 码，几十颗卫星在同一频点广播，每颗用族里不同的一条，接收机靠互相关有界才不至于把别的卫星认成自己；3G 时代的 CDMA 系统同样以 Gold 码做多用户区分。维基百科的 Gold code 词条还提到一个有趣的封闭性质：同族两条 Gold 序列逐位异或，结果仍是族内某条序列——意味着干扰与信号混合后的形态依然可预期，这对干扰消除算法是个隐藏福利。

| 对比项 | m序列 | Gold序列 |
| --- | --- | --- |
| 生成方式 | 单条LFSR配本原多项式 | 两条优选m序列逐位异或 |
| 序列周期 | $2^n-1$ | $2^n-1$（不变） |
| 一个家族的数量 | 同级数下屈指可数 | $2^n+1$ 条 |
| 自相关 | 理想双值，最尖锐 | 多值，略钝但够用 |
| 互相关 | 不保证，多数配对较差 | 全族有界，可控 |
| 典型用途 | 同步捕获、单序列扰码 | 多小区、多卫星区分 |

## 回到蜂窝网络：同频世界里如何互不践踏

现在可以拼出全图了。蜂窝网络是同频组网：相邻小区用着同一片频谱，你的信号对邻区用户而言就是干扰。扰码在这张图里干了三件事。

```mermaid
flowchart TD
    CA["小区A数据"] --> SA["加扰器A"]
    PA["序列相位一"] --> SA
    CB["小区B数据"] --> SB["加扰器B"]
    PB["序列相位二"] --> SB
    SA --> M["同一片频谱"]
    SB --> M
    M --> U["用户接收机"]
    U --> DA["用相位一解扰"]
    DA -->|匹配还原| OK["小区A数据"]
    DA -->|不匹配| N["邻区信号仍是噪声样"]
```

**第一件事：能量扩散，频谱不认数据。**不加扰时，全零输入会让发射频谱缩成一条尖线，重复帧会打出周期性谱线——正如整齐踏步的脚步声。扰码让送进调制的比特流在统计上与内容无关，功率谱形状恒定、能量摊平，既满足功率谱密度的监管要求，也让邻区受到的干扰呈现均匀的类噪声形态，而不是集中火力打在某个频点或某条信道上。维基百科 Scrambler 词条把这条归纳为“能量分散”：消除信号功率谱对实际传输数据的依赖。

**第二件事：喂饱接收机的自适应电路。**长连 0、长连 1 是定时恢复、AGC、均衡器的天敌，扰码把它们出现的概率压到统计最低。

**第三件事：身份区分。**这是蜂窝网络最优雅的应用。扰码序列的初始相位不由固定值决定，而是由一组公开参数推算——小区标识、用户临时标识、时隙编号共同决定“这一帧用序列的哪一段”。于是同一片频谱上，每个小区、每个用户、每个时隙都在用伪随机序列的不同“相位”说话。接收机用自己的相位解扰，匹配者还原成数据，不匹配者维持噪声样——**区分小区不靠频分也不靠时分，靠序列相位**。

这套思想一直顶到最外层。蜂窝系统的同步信号就是序列设计的教科书案例：以 NR 为例，主同步信号用 m 序列的三种循环移位表达 3 种组内身份，辅同步信号用 Gold 序列表达三百多种组间身份，两者相乘拼出 1008 个物理小区标识——m 序列的“锋利”负责让你快速找到信号，Gold 序列的“人多”负责让一千个小区彼此认得出。再往前追溯，GPS 用 1023 位 Gold 码区分卫星，是同一个数学在另一个领域的投影。

还有个容易忽略的细节：加法扰码器要求收发两端序列严格同步，初始相位一旦错位，解出来的就是一堆乱码。所以工程上用同步头或帧号定期重置初相——维基百科提到，把帧号编入序列还能让随机序列的有效长度突破帧长限制。蜂窝系统每个时隙重置扰码序列初相，用的正是这一招：时隙号参与序列初始化，错一个时隙就换一段序列。

## 扰码、加密、交织：别再混为一谈

初学者最容易把这三个“打乱”混为一谈，用一张表划清界限：

| 维度 | 扰码 | 加密 | 交织 |
| --- | --- | --- | --- |
| 所在环节 | 物理层，调制之前 | 高层协议栈 | 物理层编码内部 |
| 做什么 | 逐位异或，换值不换位 | 密钥控制的秘密变换 | 重排位置，换位不换值 |
| 参数 | 公开（小区ID、时隙号） | 保密密钥 | 固定规则 |
| 目的 | 干扰白化、频谱平坦、身份区分 | 防窃听 | 打散突发错误喂给纠错码 |
| 能防窃听吗 | 不能 | 能 | 不能 |

三者的分工用一句话概括：交织管“错怎么分布”，扰码管“信号长什么样”，加密管“谁能看懂”。 NR 的处理顺序也是先交织（藏在编码环节里）、后扰码、再调制，各司其职互不替代。

## 实战：这件事在现网的哪里出现

**PCI 规划。**既然序列相位由小区标识推算，小区标识选得不好就会让相邻小区的序列“撞车”。网优圈流传已久的取模口诀就是这么来的：LTE 时代有 PCI mod 3（避免主同步序列相同）、mod 6（参考信号频移错开）、mod 30（上行参考序列组错开）的规划经验；NR 时代广播信道的解调参考信号位置也随 PCI 取模 4 错开。这些口诀的本质都是一件事：**让地理上相邻的小区，用上互相关最差的序列组合**。两个 mod 值相同的小区哪怕隔着几个站，一旦传播条件异常（水面反射、高层窗边），也可能出现只在特定时段恶化的神秘干扰。

**仪表与实验室。**用信号源发固定码型做测试时，如果扰码没有使能或初相没对齐，频谱仪上会看到扎眼的梳状谱线，EVM 指标也会因数据结构而失真——这不是硬件坏了，是比特流里有规律。反过来，解扰端初相错一位，整帧数据全错且毫无提示，排查时要先核对扰码初始化参数（小区标识、无线网络临时标识、时隙号）是否与发射端一致。

**常见调试陷阱三条：**
1. **把扰码当加密排查。**发现“信号被扰乱”就怀疑安全问题，方向就错了——扰码参数是公开的，任何符合标准的接收机都能解。
2. **以为换扰码序列能省功率或提速率。**扰码不改变比特数、不改变发射能量，它只改变统计形态。
3. **忽略序列同步的连锁反应。**加法扰码器失步后不是丢几个比特，而是整段崩盘；实际排查中，小区标识识别错误会导致后续所有信道解调连环失败，根因却只有一个初相。

## 常见问题

**Q: 扰码和加密都是“把数据变乱”，本质区别是什么？**
A: 区别在密钥是否保密、目的是否防人。扰码的序列由小区标识、时隙号等公开参数生成，人人可算，目的是获得白化、区分等工程特性；加密由保密密钥驱动，目的是阻止未授权者读懂。扰码对窃听者的阻拦力约等于零。

**Q: 已经用了正交的 OFDM 调制，为什么还要扰码？**
A: 正交性解决的是子载波之间互不踩脚的问题，管的是“自己不干扰自己”；扰码解决的是比特流有规律的问题——谱线、周期性干扰、长连 0 连 1 对定时和 AGC 的伤害，以及多小区同频时干扰的形态。两者作用在不同的层面，缺一不可。

**Q: 为什么同步信号用 m 序列，小区区分却靠 Gold 序列？**
A: 同步只需要一把自相关最尖锐的“尺子”，m 序列的双值自相关是理论最优；而区分上千个小区需要一大族互相关有保证的序列，m 序列的优选对太稀缺，Gold 序列用 $2^n+1$ 的家族规模解决了“人多”的问题。一个管速度，一个管容量。

**Q: 解扰时序列初相错了一位会怎样？**
A: 全错。异或的自反性要求收发序列严格逐位对齐，错一位意味着每个比特都被错误翻转。所以系统必须靠同步头和帧号定期重置初相——这也解释了为什么小区标识检测错误会引发解调的连环失败。

**Q: 交织和扰码不都是“打乱”吗？**
A: 方向不同。交织换位置不换值，把时间上扎堆的突发错误摊开，方便纠错码逐个击破；扰码换值不换位置，把比特流的统计形态变成噪声样。一个是对错误的空间调度，一个是对信号的统计整形。

## 结语

扰码可能是通信系统里最“不求回报”的部件：不增加一比特冗余，不争取一丝速率，只是日复一日地把规律搅碎。但正是在这片人为制造的“噪声”里，定时电路有饭吃，频谱仪看到平的裙边，一千个小区在同一个频点上互不践踏。便步过桥的智慧，六十年来一直藏在每一台发射机里——最好的扰码，是让信号看起来什么都不是，从而让所有人都能好好说话。

## 参考来源

1. [Gold code - Wikipedia](https://en.wikipedia.org/wiki/Gold_code) — Gold 序列的构造方法、$2^n+1$ 族规模、互相关界与 GPS/CDMA 应用
2. [Maximum length sequence - Wikipedia](https://en.wikipedia.org/wiki/Maximum_length_sequence) — m 序列的 LFSR 生成、本原多项式条件与平衡性/游程/自相关三大特性
3. [Scrambler - Wikipedia](https://en.wikipedia.org/wiki/Scrambler) — 扰码的两大工程目的（定时恢复与能量分散）、与加密的区别及加法/自同步两类实现

延伸阅读：Golomb《Shift Register Sequences》、Proakis《Digital Communications》、樊昌信《通信原理》中伪随机序列与扰码章节。

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
