你有没有想过一个问题:当手机信号变差、接收机把一个星座点认成了旁边那个点时,到底会错几个比特?
直觉上,"认错一个符号"就该"错掉这个符号里的所有比特"。可现实恰恰相反——在 4G/5G、Wi-Fi 里,认错一个邻居符号,通常只错 1 个比特。这不是巧合,而是一项被精心设计的编码技巧:格雷映射(Gray Mapping)。它让星座图上任意相邻的两个点,比特标注永远只差 1 位。
这项技术的根,扎在 1947 年贝尔实验室的一台旋转圆盘上。今天我们就从那台圆盘讲起,把 QAM 星座映射从直觉一路拆到公式。
1947 年,贝尔实验室的工程师 Frank Gray 在为一个机械难题发愁:怎么用一个旋转的圆盘精确测量轴的转角?
他的方案是"光电编码盘"——圆盘上有若干圈同心环,每圈按黑/白分段(黑代表 0、白代表 1)。每个角度位置,用一排光电传感器读出对应的多位二进制数。最朴素的做法,是让每圈按自然二进制排布:000、001、010、011、100……
问题来了。圆盘从"011"转到下一个角度"100"时,3 个位要同时翻转。可机械上,那排传感器不可能绝对对齐——只要差一点点,读数就会在过渡瞬间出现 000、001、010……等任何中间垃圾值,角度直接"大跳变",产生巨大误差。
Gray 的天才之处在于:重新设计每圈的分段,使得任意相邻两个角度,只有 1 个位翻转。这样即使传感器错位,最多也只读成"隔壁那个角度",误差被锁死在 1 个最小步进内。这种编码后来以他命名,叫格雷码(Gray Code),又叫反射二进制码(Reflected Binary Code)。
flowchart TB
P["共同根因: 两个相邻的状态,<br/>二进制标注却差了很多位"]
P --> R["旋转编码盘 1947<br/>Frank Gray · 贝尔实验室"]
P --> Q["QAM 星座映射<br/>现代数字通信"]
R --> R1["传感器错位<br/>→ 读数大跳变"]
Q --> Q1["噪声把点推到邻居<br/>→ 多个比特出错"]
S["共同解法: 格雷码<br/>任意相邻状态恒差 1 位"]
R1 --> S
Q1 --> S
75 年后,QAM 星座图面对的是一模一样的问题:圆盘换成了星座图,机械错位换成了电波噪声,但"相邻状态多位翻转会导致大错"的本质完全相同。于是格雷码顺理成章地成了高阶 QAM 的标配标注法。
QAM(正交幅度调制)的本质,是用一个复平面上的点来携带若干比特。复平面的横轴叫 I(同相),纵轴叫 Q(正交)。每个星座点是一对坐标 $(I, Q)$,对应一个复数 $s = I + jQ$。
$M$-QAM 的星座图上有 $M$ 个点,每个点携带 $m = \log_2 M$ 个比特:
所谓"映射",就是规定哪一组比特对应哪一个点。比如 16-QAM 有 16 个点、每组 4 个比特,从 0000 到 1111。你可以随意把这 16 组比特摆到 16 个点上——但摆法不同,抗噪声能力天差地别。格雷映射,就是经过优化后、让相邻点只差 1 位的那一种摆法。
flowchart LR
B["待发送比特流<br/>b0 b1 b2 b3 ..."] --> G["按每 m 位分组<br/>+ 格雷映射"]
G --> S["星座点 (I,Q)<br/>= 1 个复符号 s"]
S --> N["功率归一化<br/>除以 √Es"]
N --> TX["上变频 → 发射"]
RX["接收 r = s + n"] --> DD["最大似然判决<br/>找最近的星座点"]
DD --> DM["格雷反映射<br/>恢复比特"]
为什么"相邻点"这么关键?因为接收机最常犯的错,就是把一个点认成它紧挨着的邻居。
接收信号 $r = s_k + n$,其中 $s_k$ 是发出的符号,$n$ 是加性高斯噪声。接收机用最近邻判决:在星座图上找离 $r$ 最近的那个点,作为判决结果 $\hat{s}$。
高斯噪声的特点是"小幅扰动概率大、大幅扰动概率小"。所以当 $n$ 大到足以引起误判时,$r$ 几乎总是被推到紧邻 $s_k$ 的那个点,而不是跨越大半个星座图跑到对面去。
flowchart TD
T["发送符号 s_k"] --> N["+ 高斯噪声 n"]
N --> R["接收: r = s_k + n"]
R --> D["判决: 找离 r 最近的点"]
D --> E{"判对了吗?"}
E -->|"是"| OK["0 比特错"]
E -->|"否, 推到邻居"| NG["符号错"]
NG --> K["错几个比特?<br/>由标注方式决定"]
这就把问题转化成了:一次"邻居误判"会带来几个比特错误?
这就是格雷映射的全部精髓:它把"最常见的错误"造成的损失,压到了理论最小值。
格雷码的构造有一条极简的规则。给定自然二进制数 $b_{m-1}b_{m-2}\cdots b_1b_0$,对应的格雷码 $g_{m-1}\cdots g_1g_0$ 为:
$$g_i = b_i \oplus b_{i+1} \quad (\text{最高位 } g_{m-1} = b_{m-1})$$
其中 $\oplus$ 是异或。用程序员的写法更直接:g = b ^ (b >> 1)。
以 2 位(4 个电平)为例,对比一下两种标注:
flowchart TB
subgraph NAT["❌ 自然二进制 (相邻最多差 2 位)"]
direction LR
A0["00"] --- A1["01"] --- A2["10"] --- A3["11"]
end
subgraph GRAY["✅ 格雷码 (相邻恒差 1 位)"]
direction LR
B0["00"] --- B1["01"] --- B2["11"] --- B3["10"]
end
看格雷码那一行:00 → 01 → 11 → 10,每跨一步只翻转 1 个位。而自然二进制的 01 → 10,两位同时翻转——这正是 Frank Gray 当年最怕的"大跳变"。
16-QAM 怎么用? 方形 16-QAM 的 I 轴和 Q 轴各有 4 个电平,每个电平用 2 位格雷码标注(00, 01, 11, 10)。一个星座点的 4 位比特 =(I 轴 2 位)(Q 轴 2 位)。因为 I、Q 两轴各自满足格雷性,所以任意水平或垂直相邻的两个点,都只差 1 位。把这套二维格雷标注画出来,就是教科书里那张经典的 16-QAM 标注图。
我们来量化格雷映射的收益。定义两个量:
对方形 $M$-QAM 在 AWGN 信道下,符号错误率有一个经典近似:
$$P_s \approx 4\left(1 - \frac{1}{\sqrt{M}}\right) Q!\left(\sqrt{\frac{3\,E_s}{(M-1)N_0}}\right)$$
其中 $E_s/N_0$ 是符号信噪比,$Q(\cdot)$ 是 Q 函数。
关键的一步来了:当误判几乎全是"邻居误判"(高信噪比下的主流事件)时,每个符号错误平均只对应 1 个比特错误,于是比特错误率被"摊薄":
$$\boxed{\;P_b \approx \frac{P_s}{\log_2 M} = \frac{P_s}{m}\;}$$
这才是格雷映射的数学灵魂。以 64-QAM($m=6$)为例:一次符号错误只贡献约 1 个比特错,而一个符号携带 6 个比特,所以 $P_b \approx P_s/6$。
如果没有格雷映射呢? 用自然二进制标注时,一次邻居误判平均会错约 2 个比特,于是 $P_b$ 会逼近 $P_s/2$ 量级。对比之下:
| 比较项 | 格雷映射 | 自然二进制标注 |
|---|---|---|
| 邻居误判的比特错误数 | 恒为 1 | 平均约 2 |
| 64-QAM 的 $P_b$ 与 $P_s$ 关系 | $P_b \approx P_s/6$ | $P_b \approx P_s/2$(量级) |
| 同一 SNR 下的 BER | 较低 | 高出近一倍 |
| 等效增益 | 基准 | 格雷约"省一半错误" |
换句话说,格雷映射在同样信噪比下,大致能把比特错误率砍掉一半——这在很多教材里被宽松地表述为"约 3 dB"的增益(具体数值依 SNR 和阶数而定)。对一个每秒吞吐几十 Gbit 的 5G 系统而言,"错误减半"意味着重传更少、有效吞吐更高、覆盖更稳,是实打实的工程价值。
如果你去看 16-QAM 的标准星座,会发现点的坐标不是 $(\pm1,\pm3)$,而是 $(\pm1/\sqrt{10},\ \pm3/\sqrt{10})$。这串奇怪的 $\sqrt{10}$ 从哪来?
答案是功率归一化(Power Normalization)。通信系统要求"无论用什么调制阶数,发射的平均符号能量 $E_s$ 都相等"——否则切换调制方式时发射功率会忽大忽小,功放和非线性都会出问题。
方形 $M$-QAM(点分布在 $\pm d, \pm 3d, \dots$)的平均能量为:
$$E_s = \frac{2}{3}(M-1)\,d^2$$
若取最小间距 $2d = 2$(即 $d=1$),则 $E_s = \tfrac{2}{3}(M-1)$。把所有点除以 $\sqrt{E_s}$ 归一化后,平均能量就变成 1:
| 调制方式 | 比特/符号 $m$ | 归一化因子 $\sqrt{E_s}$ | 归一化后最小点距 | 相对 QPSK 抗噪 |
|---|---|---|---|---|
| QPSK (4-QAM) | 2 | $\sqrt{2}\approx1.414$ | 1.414 | 基准 |
| 16-QAM | 4 | $\sqrt{10}\approx3.162$ | 0.632 | ↓ |
| 64-QAM | 6 | $\sqrt{42}\approx6.481$ | 0.309 | ↓↓ |
| 256-QAM | 8 | $\sqrt{170}\approx13.04$ | 0.153 | ↓↓↓ |
| 1024-QAM | 10 | $\sqrt{682}\approx26.12$ | 0.077 | ↓↓↓↓ |
这张表揭示了一个残酷的物理事实:调制阶数越高,归一化后相邻点越挤,最小点距越小。256-QAM 的点距只有 QPSK 的约 1/9,1024-QAM 更是约 1/18。点挤在一起,噪声稍微一推就越界——这就是为什么高阶 QAM 需要高得多的 SNR,也解释了"为什么小区中心用 256-QAM、边缘只能退回 QPSK"。
1. 调 EVM(发射质量)时,要先确认"用的哪套标注"。 EVM 测量的是"实测星座点偏离理想点"的距离。如果你的仪表/芯片用了自然二进制标注去解一个实际用格雷映射的信号,星座图会"看起来很乱、EVM 暴涨"——但硬件其实没坏。排查 EVM 异常时,先核对标注规则是基本功。
2. 看 MCS / CQI 表时,理解"阶数越高越脆弱"。 调制编码方案(MCS)把信道质量(CQI)映射到调制阶数。信道好→用 256-QAM(每符号 8 比特,吞吐高);信道差→退回 QPSK(每符号 2 比特,但点距大、扛得住噪声)。理解了归一化最小点距,你就明白这套自适应机制不是为了"炫技",而是在吞吐和抗噪之间找平衡——格雷映射 + 自适应阶数,是这套平衡术的两大支柱。
3. 调试"误码率比理论值高"时,查标注和归一化。 仿真 BER 偏高,最常见两个坑:(a) 映射/反映射没用同一套格雷码;(b) 忘了功率归一化,导致 SNR 算错。先核对这两点,再去怀疑信道模型。
4. 常见误解:以为"格雷映射能提升 SNR"。 不能。格雷映射不改变符号错误率(星座图几何没变),它只改变"符号错→错几个比特"的转换关系,压低的是 BER,对 SER 毫无影响。它是"止损",不是"增益"。
值得强调:格雷映射不是唯一答案,也不总是最优。星座标注其实有三大流派,各有用武之地:
| 标注方式 | 相邻符号比特差 | BER 特性 | 典型场景 |
|---|---|---|---|
| 自然二进制 | 1~$m$ 位 | BER 偏高 | 不推荐用于未编码高阶调制 |
| 格雷码(BRGC) | 恒为 1 位 | $P_b \approx P_s/m$ | BICM、未编码 QAM(4G/5G/Wi-Fi 主流) |
| 集分割(Set Partitioning) | 子集内点距大、子集间分层 | 配合编码获额外增益 | TCM 网格编码调制 |
格雷码是"没有信道编码、或编码与调制分离(BICM)"时的最优标注。但如果用了 TCM(Ungerboeck 提出的网格编码调制),会把星座点分成若干子集,让"子集内点距尽可能大"——这时用的是集分割标注,相邻点的比特差反而被刻意设计得更大,靠卷积码来纠错。也就是说,格雷码和集分割各有主场,看你是否"编码与调制联合优化"。现代 4G/5G 用的是 LDPC/Polar + 比特交织(BICM 思路),所以格雷映射稳坐主流。
Q1:既然格雷映射把错误减半,为什么还需要 LDPC/Polar 信道编码? A:格雷映射只是"认错邻居时少错几个比特",无法消除符号错误本身。当 SNR 较低、点距又小(如 256-QAM),符号错误率本身就很高,光靠格雷"止损"远远不够。信道编码(LDPC/Polar)才是把 BER 从 $10^{-2}$ 压到 $10^{-6}$ 的主力,二者是互补关系:格雷负责"少错",编码负责"纠错"。
Q2:256-QAM、1024-QAM 还能用格雷映射吗? A:能,而且照样成立。方形 QAM 的 I/Q 两轴各自独立做格雷标注,无论多少阶,相邻点都恒差 1 位。阶数越高,格雷映射"省一半错误"的相对收益越明显(因为 $m$ 更大,$P_s/m$ 的摊薄效应越强)。难点不在标注,而在高阶对 SNR 和 EVM 的苛刻要求——1024-QAM 要求 EVM 低至约 1%~2%。
Q3:格雷映射能提升信噪比或符号错误率吗? A:不能。星座图的几何(点距、能量)没变,所以 SER 不变。格雷映射改变的是"符号错↔比特错"的转换系数,压低的是 BER。它是"误判止损术",不是"信噪增强术"。
Q4:工程上怎么确认我的星座图用的是格雷映射?
A:最直接的办法——看相邻两个点的比特标注的汉明距离。沿 I 轴或 Q 轴取任意一对相邻点,若比特串恒定只差 1 位,就是格雷映射。也可以查芯片/仪表的"星座标注表(labeling map)",或用 MATLAB qammod(...,'gray') 与实测星座比对。
Q5:QPSK 也需要格雷映射吗?
A:QPSK 只有 4 个点(2 比特),它的标准标注 00, 01, 11, 10 本身就满足相邻差 1 位——也就是说 QPSK 的常规标注天然就是格雷码,所以一般不特别强调。格雷映射的价值在高阶 QAM(16 及以上)才凸显。
本文由「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 等场景全覆盖。
