在开车这件事上,有个朴素的经验:上高速挂六挡飙到120,进市区拥堵路段就降到二挡慢慢挪。没有哪个司机会用同一个挡位从北京开到上海——路况变了,挡位就得跟着变,否则要么熄火,要么费油。
蜂窝移动通信里的自适应调制编码(Adaptive Modulation and Coding,AMC),干的就是这件事。它让基站在每一次给手机发数据前,先"看一眼"当前的无线信道好不好,然后决定这一拍该用哪种调制(挡位的"高低")和多少冗余("省不省油")。信道好,就上高阶调制、少冗余,一个符号塞进8个比特猛冲;信道差,就退回低阶调制、多冗余,一个符号只塞2个比特,稳稳当当地把数据送达。
这篇文章就带你看透AMC背后的原理:为什么系统要在QPSK和256QAM之间动态切换、终端是怎么给信道"打分"的、那个神秘的"10%误块率工作点"是什么意思,以及工程师在现网调试时最容易踩的几个坑。
在理解AMC之前,必须先想清楚一个根本矛盾。任何一个无线传输系统,都在追求两个相互打架的目标:
问题是,高阶调制能提速,但代价是抗干扰能力下降。我们用QAM(正交幅度调制)的星座图来直观感受。QPSK有4个星座点,每符号携带2比特;16QAM有16个点,每符号4比特;64QAM是6比特;256QAM是8比特。
QPSK (4点) 16QAM (16点) 256QAM (256点)
★ ★ ★★★★★ 密密麻麻
★★★★★★★★ 几乎挤在一起
★ ★ ★★★★★
星座点越多,点与点之间的距离就越近。当噪声和干扰让接收端的判决点发生偏移时,低阶调制(点距大)还能容忍较大偏移而不判错;而256QAM的星座点挤得满满当当,稍微一抖,本来发的是A点,就被误判成隔壁的B点了。
这就是著名的香农容量公式揭示的真理——一个带宽为$B$、信噪比为$S/N$的信道,其无误传输的速率上限是:
$$C = B \log_2\left(1 + \frac{S}{N}\right)$$
这个公式告诉我们三件事:第一,信噪比越高,能传的速率上限越高;第二,没有任何调制方式能突破这个上限;第三,当信噪比给定时,存在一个"最优"的调制编码组合,能让你跑到接近香农极限、又不超过它。跑过头了,误码率飙升,反而要重传,实际吞吐量更糟;跑得太保守,浪费了信道潜力。
AMC的使命,就是让系统始终工作在当前信道下的那个"最优工作点"附近。下面这张图把这个权衡关系画了出来。
graph LR
A[当前信道 SINR] --> B{AMC决策}
B -->|SINR高| C[高阶调制<br/>256QAM + 高码率<br/>每符号8比特]
B -->|SINR中| D[中阶调制<br/>16/64QAM + 中码率]
B -->|SINR低| E[低阶调制<br/>QPSK + 低码率<br/>每符号2比特]
C --> F[吞吐量高]
D --> G[吞吐量中]
E --> H[吞吐量低但极可靠]
style C fill:#c8e6c9
style E fill:#ffcdd2
关键直觉是:AMC不是"越高阶越好",而是"恰好够用最好"。让误块率维持在一个系统设计好的小目标值(下面会讲为什么是10%左右),既不浪费信道,又不至于频繁重传。
AMC是一个典型的闭环控制系统。它需要四个环节配合运转,缺一环就"瞎"了。整个闭环的数据流向如下:
sequenceDiagram
participant UE as 终端(UE)
participant gNB as 基站(gNB)
Note over gNB: 1. 下行发送已知参考信号(CSI-RS)
gNB->>UE: 参考信号(已知的"标尺"信号)
Note over UE: 2. UE测量参考信号,估算SINR
Note over UE: 3. UE把SINR映射成CQI(0~15分)
UE->>gNB: 上报CQI(信道质量打分)
Note over gNB: 4. gNB根据CQI查MCS表,选定调制+码率
Note over gNB: 5. 用该MCS编码调制下行数据
gNB->>UE: 下行业务数据(采用适配后的MCS)
Note over UE: 6. UE解码,成功或失败
UE->>gNB: HARQ ACK(成功) / NACK(失败重传)
这六个步骤里,藏着几个精妙的设计。
第一步:基站发一把"标尺"。 基站在下行周期性地广播一个收发双方都提前知道内容的信号(LTE叫CRS,5G叫CSI-RS)。这个信号本身的比特内容是已知的"标准答案",终端拿到后,拿接收到的"考卷"和"标准答案"一对比,就能算出当前信道被糟蹋成什么样了——信号被衰减了多少、叠加了多少噪声和干扰,综合起来就是SINR(信干噪比)。
第二步:终端给信道"打分"。 终端不是把原始的SINR数值上报(那太占信令开销),而是先把SINR映射成一个4比特的整数——CQI(信道质量指示,Channel Quality Indicator),取值0到15。CQI就是终端给下行信道打的"分数",分越高代表信道越好。CQI=0是个特殊值,表示"信道太烂,我啥也收不到"。
第三步:基站查表定MCS。 基站拿到CQI后,在内部维护一张映射表,查出对应的MCS(调制编码方案)——也就是这次下行该用哪种调制、用多高的编码速率。然后据此对业务数据做信道编码和调制,发出去。
第四步:HARQ兜底。 万一这次还是解码失败了?没关系,系统还有HARQ(混合自动重传请求)机制做最后一道保险。终端回一个NACK,基站重传,并且把冗余版本和第一次组合起来一起译码,提高成功率。
注意一个关键点:这个闭环是有时延的。终端测的是"刚才"的信道,基站据此决定的是"现在"要发的内容,而真正发出去、被终端收到时,信道可能又变了。终端移动越快、信道变化越剧烈,这个反馈滞后就越严重。这是AMC在高速移动场景下面临的核心挑战,后面讲调试陷阱时还会提到。
CQI是整个AMC闭环里最关键的反馈量,值得单独拆开讲透。
CQI之所以不直接上报SINR,是出于两个考虑。其一,信令开销。一个0~15的整数,4比特就能传完,非常经济。其二,语义统一。不同终端的射频前端、天线能力千差万别,如果大家各报各的原始SINR,基站没法横向比较;而CQI是一个统一标定过的语义——它不是在说"我测到的信噪比是多少dB",而是在说"按我这个终端的能力,当前信道能支撑我以多大速率、多低误码率接收数据"。
那终端是怎么把SINR折算成CQI的呢?核心是一套目标BLER(误块率)准则。终端内部会跑一个仿真/查表过程:它假设"如果基站现在用某个CQI对应的MCS给我发数据,我解码成功的概率有多大?"然后挑出那个能让误块率刚好不高于10%(约)的最高CQI值上报。
为什么是10%?这是一个工程上的"甜蜜点"权衡。我们把不同目标BLER下的系统表现做个对比:
| 目标BLER设定 | 调制编码选择倾向 | 首次传输成功率 | 重传开销 | 综合吞吐量 |
|---|---|---|---|---|
| 太低(如1%) | 保守,倾向低阶MCS | 极高 | 极低 | 偏低(浪费信道) |
| 约10%(AMC设计点) | 激进与稳健平衡 | 约90% | 中等 | 最高 |
| 太高(如30%) | 激进,倾向高阶MCS | 较低 | 高(频繁重传) | 偏低(被重传拖累) |
这就是10%这个数字的来历。它不是拍脑袋定的,而是在"一次发成功的收益"和"重传的代价"之间求出的吞吐量最大点。设得太保守,明明信道能跑64QAM你却用QPSK,吞吐量上不去;设得太激进,每次都冲256QAM结果老出错,重传一轮相当于白忙活,实际有效吞吐反而更低。
一个容易混淆的点:CQI=15代表"我能用最高阶调制、最高码率接收",并不是说"信道完美无瑕"。它只是说"以我这台终端的本事,当前这点信道质量足够支撑我解出最高阶的码"。两台不同能力的终端站在同一个位置,测到同样的物理信道,可能报出不同的CQI。
基站拿到CQI后,要把它翻译成真正能用于编码调制的参数。这个翻译靠的是MCS表。MCS索引(5G里通常是0~31)不仅规定了调制方式,还规定了编码速率(Coding Rate),也就是"每K个编码比特里,有几个是真正有用的信息比特"。
编码速率$r$的含义是:如果你要传$k$个信息比特,编码器会输出$k/r$个编码比特(多出来的部分是纠错冗余)。码率越低,冗余越多,抗错能力越强,但有效信息占比越低。
我们用5G NR下行典型MCS表(Table 1,适用于大多数常规场景)的关键条目来说明调制阶数、码率与效率的关系:
| MCS索引 | 调制方式 | 调制阶数Q | 编码速率r | 频谱效率 Q×r (bit/符号) | 典型适用信道 |
|---|---|---|---|---|---|
| 0 | QPSK | 2 | ~0.12 | ~0.23 | 极差(小区边缘/深衰落) |
| 5 | QPSK | 2 | ~0.44 | ~0.88 | 较差 |
| 10 | 16QAM | 4 | ~0.48 | ~1.91 | 中等 |
| 17 | 64QAM | 6 | ~0.60 | ~3.59 | 较好 |
| 24 | 256QAM | 8 | ~0.69 | ~5.55 | 很好(近基站/视距) |
| 27 | 256QAM | 8 | ~0.93 | ~7.41 | 极好(实验室级) |
注:表中的码率为示意性典型值,精确值由规范定义,此处为原理说明。
这张表揭示了一个梯度:从MCS 0到MCS 27,每个符号携带的有效信息从0.23比特一路涨到7.41比特,相差30多倍。这就是AMC调速的"挡位范围"。同一个终端、同一段频谱,信道好时一秒能传的数据量是信道差时的几十倍——这正是蜂窝网边缘用户网速断崖式下跌的物理根源。
注意"频谱效率"这一列。它等于调制阶数乘以码率:
$$\eta = Q \times r \quad (\text{bit/符号})$$
这个$\eta$就是衡量"每传一个符号能搬走多少有效比特"的核心指标,也是香容量的实际逼近对象。系统追求的,就是让$\eta$尽量贴近、但不超过当前SINR对应的香农容量。调高MCS本质上是抬高$\eta$,调低MCS本质上是压低$\eta$,跟换挡完全一个道理。
现在把链路串起来:物理信道 → SINR → CQI → MCS → 调制编码。中间最微妙的一步,是SINR到CQI的映射。
终端测到一个SINR值(比如15dB)后,要做的是:在它内部的SINR-CQI映射表里,找到那个"在该SINR下、用对应MCS接收、误块率不超过10%的最高CQI"。换句话说,映射表的每一条边界SINR值,都对应着"刚好让某档MCS的BLER曲线穿越10%水平线"的那个信噪比。
我们可以把不同调制方式在AWGN(加性高斯白噪声)信道下的BLER-SINR曲线想象成一组向右下方倾斜的"S"形曲线,每条曲线对应一档MCS。10% BLER这条水平线,会和每条曲线交于一个SINR点,这些交点就是各档MCS的切换边界。SINR落在哪个区间,就用哪一档。
graph LR
subgraph 链路映射全流程
S1[物理信道<br/>衰减+噪声+干扰] --> S2[SINR<br/>信干噪比 dB]
S2 --> S3[CQI<br/>0~15打分<br/>准则:BLER≤10%的最高档]
S3 --> S4[MCS索引<br/>查调制+码率]
S4 --> S5[执行<br/>编码+调制+发射]
end
S5 -.HARQ反馈.-> S1
style S3 fill:#fff9c4
这里有个工程上很重要的细节:这条映射曲线是在AWGN信道(理想的平坦噪声)下标定出来的,但真实无线环境是频率选择性衰落信道——有的子载波好、有的差,还有多径、多普勒频移。所以终端在算CQI时,还要对整个带宽做平均(或分带宽子带CQI上报),用一个"等效SINR"去查表。这个等效过程本身就有近似误差,是AMC不可能100%精准的根本原因之一。
到这里,细心的读者可能发现一个漏洞:CQI是终端按"标称曲线"算出来的,但如果终端算偏了呢? 比如,某个终端的射频前端实际比标称差一截,它报了CQI=12,基站信了,结果发出去误块率高达25%——远超10%目标。
为了堵这个漏洞,基站在CQI闭环之上,又叠了一层外环链路自适应(Outer Loop Link Adaptation,OLLA)。它的逻辑很朴素:用HARQ的实际ACK/NACK统计,来反向修正CQI。
具体说,基站维护一个针对每个终端的"偏移量"。如果最近这个终端老是NACK(实际误块率高于10%),OLLA就把有效CQI往下压一点(相当于说"别听它的,它高估了自己,给降一挡");如果最近总是ACK(误块率低于10%,说明还能更激进),OLLA就把有效CQI往上抬一点。这样通过一个慢速的积分调节,把每个终端的实际误块率收敛回10%目标工作点。
flowchart TD
UE[终端上报 CQI] --> SUM(("+"))
OLLA[OLLA偏移量<br/>慢速积分调节] --> SUM
SUM --> EFF[有效CQI]
EFF --> MCS[选定MCS并发射]
MCS --> RX[终端解码]
RX --> ACK{ACK/NACK}
ACK -->|统计实际BLER| OLLA
OLLA -->|"BLER>10%→下调<br/>BLER<10%→上调"| OLLA
style OLLA fill:#ffe0b2
style SUM fill:#c8e6c9
内环(CQI)负责快速、粗粒度地跟随信道变化;外环(OLLA)负责慢速、细粒度地校准每个终端的个体偏差。 两环叠加,才能把误块率稳稳钉在10%附近。这是理解现网很多"为什么速率不达标"问题的关键——很多时候不是信道不好,而是OLLA还没收敛,或者被某些配置锁死了。
理解了单张MCS表,再看5G的一个进阶设计:5G NR其实准备了多张不同的MCS表(最常用的是两张,外加一张专为低信噪比场景)。为什么要搞多张表?这背后是5G"灵活帧结构"的设计哲学。
Table 1(常规表):覆盖QPSK→256QAM,最高频谱效率约5.5+ bit/符号,适用于绝大多数eMBB(增强移动宽带)场景,是默认配置。
Table 2(高阶表):专为极致高速率场景设计,支持256QAM并使用更高的码率,最高频谱效率可达约7.4 bit/符号。代价是它要求更高的SINR,适用于信道极好的场景(比如毫米波视距、终端静止近基站)。
Table 3(低阶表):专为URLLC(超可靠低时延通信)和恶劣信道设计,整张表几乎全是QPSK,码率也很低。为什么URLLC要用这张表?因为URLLC对可靠性的要求极高(目标误块率要降到1e-5级别),宁可大幅牺牲速率,也要保证一次发对。
| MCS表类型 | 调制范围 | 最高频谱效率 | 设计目标 | 典型场景 |
|---|---|---|---|---|
| Table 1(常规) | QPSK~256QAM | ~5.5 bit/符号 | 速率与可靠性平衡 | eMBB默认配置 |
| Table 2(高阶) | 16QAM~256QAM | ~7.4 bit/符号 | 极致峰值速率 | mmWave视距/高SINR |
| Table 3(低阶) | QPSK为主 | ~2.0 bit/符号 | 极致可靠性 | URLLC/恶劣信道 |
这个设计的精妙之处在于:同一套AMC机制,通过切换不同的"挡位表",就能适配从"追求极速"到"追求极稳"的迥异需求。基站在给终端配置时,会根据该业务是eMBB还是URLLC,通过高层信令告诉终端用哪张表——这是5G"服务差异化"在物理层的一个具体落点。
常见误解:以为5G手机"总是用256QAM,所以永远最快"。实际上256QAM只在高SINR(通常>20dB)时才会被选中,绝大多数城区普通位置的终端,日常工作的MCS往往落在16QAM~64QAM区间。256QAM更像是"信号好的时候偶尔冲刺一下"的顶挡。
讲完原理,我们落到工程师最关心的实战层面:这套机制在现网哪里能看到、调哪里。
1. 看CQI分布,判断覆盖健康度。 在网优平台或基站侧统计里,把某个小区下终端上报的CQI做成直方图。如果CQI普遍分布在10以下,说明这个小区整体覆盖偏弱(可能站高了、被遮挡了、或者下行功率不足),用户速率上不去的根因在覆盖而非容量。如果CQI分布很发散(既有15也有3),说明小区内信号起伏大,可能存在严重的物理遮挡或干扰。
2. 调度MCS vs 理论MCS对比,定位AMC是否生效。 基站日志能记录每个调度时刻"终端上报CQI→基站实际选用的MCS"。正常情况下两者应高度相关。如果发现终端报了高CQI、基站却选了低MCS,要查是不是OLLA在持续往下压(可能因为之前频繁NACK触发了保守偏移),或者有没有MCS上限被配置限死。
3. 用HARQ重传率反推AMC工作点。 一个健康的AMC系统,下行首次传输的BLER应该就在10%左右。如果你看到某小区首次传输BLER只有1%,说明AMC太保守了,信道潜力被浪费——可以适当放宽OLLA的收敛目标或检查CQI上报配置;如果首次BLER高达30%以上,说明AMC太激进或CQI虚高,会导致大量重传拖垮吞吐和时延。很多人误以为"重传率越低越好",其实AMC恰恰是故意让首次传输保留约10%重传率来换取最大吞吐的——这是一个反直觉但极其关键的调试认知。
4. 高速移动场景的特殊处理。 终端高速移动(如高铁350km/h)时,信道相干时间极短,CQI上报的滞后会导致基站总是用"过时"的信道信息选MCS。这时常见的工程对策是:人为降低CQI(加安全余量)、依赖HARQ重传兜底、或者开启更细的子带CQI上报提高时效。理解了反馈滞后这个原理,遇到高铁场景速率上不去就不会一头雾水。
5. 干扰识别。 AMC对"噪声"和"干扰"的反应不同。纯噪声场景(小区边缘、弱覆盖),CQI随距离平滑下降;而邻区干扰场景,CQI会剧烈跳变、时好时坏。通过观察CQI的时间序列方差,可以初步区分"覆盖问题"还是"干扰问题",指导后续是调功率/天线还是做干扰协调。
陷阱一:把CQI和RSRP混为一谈。 RSRP衡量的是"信号有多强"(参考信号接收功率),CQI衡量的是"这个信道能支撑多高的传输速率"。两者强相关但不等同。一个RSRP很高的点,如果干扰也很大,CQI照样低。定位覆盖问题看RSRP,定位速率问题看CQI,别用错了指标。
陷阱二:以为高阶调制一定更快。 当信道不足以支撑高阶调制时,强行用高阶会导致误码飙升、HARQ重传风暴,实际有效吞吐反而比降一阶还低。这就是为什么AMC要"恰好够用"而非"越高越好"——它的智慧在于克制。
陷阱三:忽略反馈时延。 很多新人调试时对着某一时刻的CQI和MCS做对比,发现对不上就觉得"系统坏了"。其实由于上报→决策→发射的闭环时延,你看到的MCS是对应"几个毫秒前"的CQI。在快速衰落信道下,做这种点对点对比意义不大,要看统计相关性。
陷阱四:忽视终端个体差异。 同一位置两台手机报不同CQI是正常的(射频能力、天线、基带算法都不同)。做覆盖对比测试时,务必用同一台终端,否则数据没有可比性。
AMC的本质,是一个让调制编码方案时刻紧跟信道变化的闭环伺服系统:终端用已知参考信号测出SINR、折算成0~15的CQI成绩单上报;基站据此从MCS表里挑出"恰好让误块率落在10%甜蜜点"的那一挡,用对应的调制阶数和编码速率发射;再由HARQ兜底、OLLA外环微调,把每个终端的实际误块率稳稳钉在工作点。它把香农公式从"一个理论上限"变成了"每时每刻都在逼近极限的动态策略",是现代蜂窝网能把频谱效率榨干的核心引擎。
理解了AMC,你就理解了为什么手机网速会在移动中忽快忽慢、为什么小区边缘永远慢、为什么两台手机在同一位置速率不同——这些日常现象背后,都是同一套"换挡逻辑"在起作用。
Q1:CQI和MCS到底是什么关系?是不是一一对应?
A:CQI是终端上报的、对下行信道质量的"打分"(0~15),反映"以我的能力,当前信道能支撑多高的接收速率"。MCS是基站据此(再结合OLLA偏移、调度策略)最终选定的调制+编码方案。两者通常强相关,但不是严格一一对应——基站会在CQI基础上做调整(外环修正、不同MCS表选择、上限限制等)。简言之:CQI是建议,MCS是决策。
Q2:为什么首次传输误块率非要设计在10%,而不是越低越好?
A:因为这是吞吐量的最大值所在点。把目标BLER压到1%,意味着每次都用更保守的MCS、传更少的有效比特,信道潜力被浪费;放任到30%,虽然单次传得多但频繁出错要重传,重传的代价超过了一次多发的那点比特。10%是在"一次成功带来的收益"和"重传付出的代价"之间求出的最优解,是工程上反复验证过的甜蜜点。
Q3:5G的256QAM和4G的256QAM有什么区别?为什么5G更快?
A:调制本身(把8个比特映射到256个星座点)原理是一样的。5G更快的根源不在某一档调制,而在三点:一是更细颗粒度的MCS表和更高的最高码率(Table 2),让好信道下能逼近更高频谱效率;二是更宽的带宽和更灵活的帧结构;三是配合大规模MIMO、更密的参考信号(CSI-RS)让AMC更精准。调制只是"挡位",整个传动系统的升级才是5G更快的根本。
Q4:高速移动(如高铁)时网速为什么变差,AMC能解决吗?
A:根因是信道相干时间极短,CQI反馈严重滞后——基站拿到的是几毫秒前的"旧"信道信息,用它给"现在"的传输选MCS,自然失准。AMC本身缓解不了这个物理限制(它依赖及时的反馈)。工程对策是:加CQI安全余量主动降挡求稳、依赖HARQ重传兜底、用更细的子带CQI提高时效,以及更高层的移动性优化(切换、双连接等)。所以高铁场景本质是"用可靠性换不了时效性"的妥协。
Q5:终端上报的CQI准不准?基站完全信任它吗?
A:不完全信任。CQI是终端根据标称的SINR-BLER曲线估算的,存在三类误差:一是真实衰落信道与标称AWGN曲线的偏差;二是不同终端射频能力的个体差异;三是闭环反馈时延。正因如此,基站才会叠加一层OLLA外环,用实际的HARQ ACK/NACK统计来反向修正CQI,把每个终端的误差慢慢收敛掉。内环(CQI)管快速跟随,外环(OLLA)管个体校准,两层配合才靠谱。
本文由「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 等场景全覆盖。
