首页 › deep-tech › 把信号搅成噪声:扰码原理

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

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

扰码:一次不增不减的翻转

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

$$c_k = b_k \oplus p_k$$

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

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

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

$$b_k = c_k \oplus p_k$$

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

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

那么问题来了:能担此重任的伪随机序列,去哪里找?

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

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

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 序列族。

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$ 条
自相关 理想双值,最尖锐 多值,略钝但够用
互相关 不保证,多数配对较差 全族有界,可控
典型用途 同步捕获、单序列扰码 多小区、多卫星区分

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

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

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

延伸阅读: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学通信知识星球海报-扫码加入