想象一个巨大的货运码头,每天有上万辆卡车进出。调度中心要给某辆特定的卡车派发一张"装货指令"(几号门、几点装、装多少)。问题是:调度中心该把指令写在哪里?如果直接在指令上写车牌号,卡车又怎么知道自己被点名了?
5G 基站(gNB)每毫秒就在面对这个问题——它要给成百上千个终端(UE)下发调度指令,告诉每个终端:"你的数据在第几个时隙、哪段频率资源上发送或接收"。这条指令就叫 DCI(Downlink Control Information,下行控制信息),而承载 DCI 的物理信道,就是本文的主角——PDCCH(Physical Downlink Control Channel,物理下行控制信道)。
关键难点在于:基站把 DCI 放在某个位置,但终端事先并不知道自己的指令在哪儿。终端必须"自己去找",这个寻找并尝试解码的过程,就是著名的盲检(Blind Decoding)。
理解了盲检,你就理解了 5G 控制面最精巧的一层设计——它用极低的信令开销,撑起了整个空口调度体系。
很多人第一次接触盲检都会问:基站为什么不直接发一条消息告诉终端"你的 DCI 在 X 位置"?
答案是——鸡生蛋的死循环。基站要通知终端,本身就需要一条"控制消息";而这条控制消息又该放在哪、又该如何被找到?那就又回到了原点。换句话说,传递"位置信息"这件事,本身就需要一个不依赖位置信息的机制。
5G 的解法是"约定 + 搜索": - 基站和终端事先约定好一组候选位置(搜索空间 Search Space); - 基站把 DCI 放进其中某一个候选位置; - 终端在每个候选位置逐个尝试解码,用 CRC 校验是否命中,命中即拿到属于自己的指令。
这就好比快递员和收件人约定好:"你的包裹只会出现在 A、B、C、D 四个柜子之一,挨个试就行"。基站不需要额外开销通知位置,终端靠"试 + 校验"自己定位。
要理解盲检"在哪搜",先要搞懂控制信道的资源结构。这是一个层层嵌套的"套娃":
flowchart TB
RE["RE 资源粒子<br/>(1 子载波 × 1 OFDM 符号)"]
REG["REG 资源单元组<br/>= 1 PRB × 1 符号 = 12 RE"]
CCE["CCE 控制信道单元<br/>= 6 REG = 72 RE"]
PDCCH["一条 PDCCH<br/>= L 个 CCE (聚合等级)"]
CORESET["CORESET 控制资源集<br/>(频域若干 PRB × 1~3 符号)"]
SS["搜索空间 Search Space<br/>(规定何时、检哪些候选)"]
RE --> REG
REG --> CCE
CCE --> PDCCH
CORESET -.包含.-> CCE
SS -.指向.-> CORESET
style CORESET fill:#e3f2fd
style SS fill:#fff3e0
style CCE fill:#e8f5e9
逐层解释:
一个关键设计取舍是 CCE 到 REG 的映射分为非交织与交织两种:非交织时,一个 CCE 的 6 个 REG 集中在一起;交织时则被打散到整个 CORESET 带宽上,从而获得频率分集——即使局部频段被深衰落击中,CCE 的能量仍分散在其他子载波上,提高解码成功率。边缘用户或低聚合等级场景下,交织映射是提升鲁棒性的利器。
一条 PDCCH 占用 1、2、4、8 或 16 个 CCE,这就是聚合等级。为什么要有这么多个档次?
flowchart LR
subgraph 近点["中心用户(信号强)"]
A1["AL=1<br/>1 CCE<br/>最省资源"]
end
subgraph 中["普通用户"]
A2["AL=4<br/>4 CCE<br/>平衡"]
end
subgraph 远["边缘用户(信号弱)"]
A3["AL=8/16<br/>多 CCE 叠加能量<br/>最可靠"]
end
近点 --> 中 --> 远
style A3 fill:#ffebee
style A1 fill:#e8f5e9
直觉上:信道越差,就得多花点 CCE 来"叠能量",把同样的 DCI 重复编码到更多资源上,提升抗干扰能力。这和覆盖、链路自适应的思想一脉相承。聚合等级表如下:
| 聚合等级 AL | CCE 数量 | REG 数量 | RE 数量 | 鲁棒性 | 典型场景 |
|---|---|---|---|---|---|
| 1 | 1 | 6 | 72 | 低 | 中心用户、高聚合预算 |
| 2 | 2 | 12 | 144 | 中低 | 近中点用户 |
| 4 | 4 | 24 | 288 | 中 | 常用等级、公共搜索空间 |
| 8 | 8 | 48 | 576 | 高 | 边缘用户、关键信令 |
| 16 | 16 | 96 | 1152 | 最高 | 极弱信道、特定专用场景 |
工程意义:聚合等级是网络优化中"PDCCH 阻塞/CCE 容量"问题的核心旋钮。CCE 是稀缺资源,一个 CORESET 的 CCE 总数有限,若边缘用户长期占用高 AL,会挤压其他用户,导致 PDCCH 容量瓶颈(表现为下行掉线、调度失败)。网优中常说的"PDCCH 受限"往往就源于此。
CORESET 只画出了"地盘",但终端还得知道什么时候去地盘里找、找几号柜子。这部分信息由搜索空间(Search Space)补充定义。搜索空间会绑定一个 CORESET,并配置:监测周期、时隙偏移、时域符号位置、各聚合等级的候选数量等。
搜索空间分两大类,这是盲检体系最关键的"二分法":
flowchart TB
SS["搜索空间 Search Space"]
SS --> CSS["公共搜索空间 CSS<br/>所有终端都监听"]
SS --> USS["终端专用搜索空间 USS<br/>仅特定终端监听"]
CSS --> CSS1["广播消息 SIB1<br/>(SI-RNTI, AL 4/8)"]
CSS --> CSS2["寻呼<br/>(P-RNTI)"]
CSS --> CSS3["随机接入响应<br/>(RA-RNTI)"]
USS --> USS1["该用户的专用调度<br/>(C-RNTI, AL 1/2/4/8/16)"]
USS --> USS2["配置授权调度<br/>(CS-RNTI)"]
style CSS fill:#e3f2fd
style USS fill:#fff3e0
两类搜索空间的对比:
| 维度 | 公共搜索空间 CSS | 终端专用搜索空间 USS |
|---|---|---|
| 监听者 | 小区内所有(或一组)终端 | 单个特定终端 |
| 支持聚合等级 | 通常 | {1, 2, 4, 8, 16} |
| 典型承载 | 系统消息、寻呼、随机接入响应 | 专用上/下行调度、配置授权 |
| 标识加扰 RNTI | SI-RNTI / P-RNTI / RA-RNTI 等 | C-RNTI / CS-RNTI / 等 |
| 资源占用 | 共享、开销敏感 | 专用、可精修 |
设计取舍:公共消息用 CSS,是因为它要被许多人"广播式"接收,必须放在大家公知的固定位置;专用调度用 USS,则可以按需为每个用户裁剪监听时机,降低终端一直醒着检 PDCCH 的功耗。这与 DRX 省电机制(终端的省电呼吸术)紧密联动。
终端在某个 CORESET 里、某个聚合等级下,到底要从哪几个 CCE 起始位置开始试?这是盲检的数学核心。起始 CCE 索引由一个哈希函数确定,核心思想是:用终端的 RNTI 作为种子,让不同终端的候选位置在 CORESET 里"散开",尽量减少碰撞。
简化后的计算逻辑如下:
$$ Y_{p,n} = (A \cdot Y_{p,n-1}) \bmod D $$
$$ n_{CCE} = L \cdot \left{ \left( Y_{p,n} + \left\lfloor m \cdot \frac{N_{CCE,p}}{L \cdot M^{(L)}{s,\max}} \right\rfloor \right) \bmod \left\lfloor \frac{N \right\rfloor \right} $$}}{L
其中: - $A = 39827,\ D = 65537$,初值 $Y_{p,-1} = n_{RNTI}$(即用户的 RNTI); - $L$ 为聚合等级,$m$ 为候选序号($m = 0, 1, \dots, M^{(L)}{s,\max}-1$); - $N$ 为 CORESET $p$ 的 CCE 总数; - $n$ 为时隙号。
flowchart LR
RNTI["终端 RNTI<br/>(身份种子)"] --> HASH["哈希函数<br/>Y = A·Y mod D"]
SLOT["时隙号 n"] --> HASH
HASH --> POS["起始 CCE 索引<br/>候选位置集合"]
POS --> TRY1["候选 0 (AL=4)"]
POS --> TRY2["候选 1 (AL=4)"]
POS --> TRY3["候选 2 (AL=4)"]
TRY1 --> DEC["逐个极化解码<br/>+RNTI 解扰+CRC"]
TRY2 --> DEC
TRY3 --> DEC
style HASH fill:#fff3e0
style DEC fill:#e8f5e9
为什么用哈希?因为基站和终端共享同一套规则与同一个 RNTI,双方算出的候选位置天然一致——基站知道该把 DCI 放进哪个候选,终端也知道该去哪个候选试。哈希的"散列"特性又让大量用户的候选位置均匀分布,降低不同用户 PDCCH 撞在同一批 CCE 上的概率。这是一种无信令协调的分布式资源对齐,设计非常优雅。
把前面的零件串起来,一个时隙里终端的盲检过程如下:
sequenceDiagram
participant gNB as 基站 gNB
participant UE as 终端 UE
Note over gNB: 1. 选择目标 UE 的 RNTI<br/>2. 选定 CORESET+搜索空间<br/>3. 按哈希确定候选位置
gNB->>UE: 在某个 CCE 候选位置<br/>放置 DCI(Polar编码+RNTI加扰+CRC)
Note over UE: 唤醒后到 CORESET 监听
loop 遍历各聚合等级/各候选
UE->>UE: 取候选 CCE → 解映射REG<br/>→ Polar 解码 → 用 RNTI 解扰 CRC
alt CRC 校验通过
Note over UE: 命中!这是给我的
UE->>UE: 解析 DCI 字段<br/>(频域位置/MCS/时隙等)
else CRC 失败
Note over UE: 不是我的,继续试下一个
end
end
UE->>gNB: 按DCI去PDSCH收数据<br/>或PUSCH发数据
PDCCH 的信道编码用的是极化码(Polar Code)(这正是控制信道的"魔法"——详见极化码原理),并附加 24 比特 CRC。最关键的一步是:CRC 比特在发送前会被用户的 RNTI 加扰。于是终端在解出 CRC 后,用自己的 RNTI 再解扰,若校验通过,就说明"这条指令确实是发给我的"。RNTI 在这里既是身份标识,也是匹配钥匙。
常见 RNTI 及其用途:
| RNTI 类型 | 用途 | 出现场景 |
|---|---|---|
| C-RNTI | 小区级临时标识,专用调度 | 连接态主调度 |
| TC-RNTI | 临时标识 | 随机接入后、冲突解决阶段 |
| SI-RNTI | 系统信息调度 | SIB1 等广播消息 |
| RA-RNTI | 随机接入响应 | MSG2 调度(详见随机接入原理) |
| P-RNTI | 寻呼 | 寻呼消息调度(详见寻呼/DRX) |
| CS-RNTI | 配置授权 | 半静态调度 |
| INT-RNTI | 抢占指示 | 通知 URLLC 抢占了某用户资源 |
逐个候选去试,听上去很费算力。事实上终端每时隙能尝试的解码次数是有上限的——这就是盲检预算(Blind Decode Budget)。标准对单载波单子载波间隔场景规定了典型上限:每时隙最多约 44 次盲检、最多 56 个非重叠 CCE(具体随子载波间隔成倍放大)。
这个上限的存在有两个原因: 1. 限制终端芯片复杂度与功耗——否则终端每时隙要穷举海量组合,电池和算力吃不消; 2. 间接限制基站的 CCE 调度密度——基站不能把一个时隙的资源塞满给一个用户,否则终端解不过来。
因此基站的调度器在做"CCE 分配"时,必须同时兼顾CCE 容量(物理资源)和盲检预算(终端能力)两个约束。
了解 LTE 的工程师会注意到,NR 把 LTE 里的 PCFICH、PHICH 两个控制信道砍掉了:
| 对比项 | LTE | 5G NR |
|---|---|---|
| 控制区域指示 | PCFICH 显式指示占几个符号 | CORESET 显式配置时频区域,无需 PCFICH |
| HARQ ACK 反馈 | PHICH 专用信道 | 复用到 PUCCH,无 PHICH |
| 控制区粒度 | 全小区、固定带宽前几个符号 | 按 UE/按 BWP 灵活配置 CORESET |
| 聚合等级 | {1,2,4,8} | {1,2,4,8,16} |
| 波束支持 | 弱 | CORESET 可关联 TCI 状态,支持波束赋形 |
LTE 的控制区是全小区广播式、固定占满带宽前几个符号;NR 改成可按用户、按带宽部分(BWP)灵活裁剪,甚至能跟随波束指向不同的方向。这种"去中心化、可配置"的设计,是 NR 灵活性与前传/回传资源效率的关键来源。
这个原理在现网和日常工作中如何体现?
常见调试陷阱: - 误以为 DCI 位置固定:实际位置每时隙由哈希变化(依赖时隙号),不能靠"固定偏移"去找; - 混淆 CSS 与 USS 的聚合等级:CSS 不支持 AL=1/2,调试时若期望低 AL 而配置在 CSS 上,会扑空; - 忽视 RNTI 解扰:CRC 通过但 RNTI 不匹配,仍不是本终端的指令,需用对的 RNTI 才能确认归属。
Q1: 既然叫"盲检",终端是不是完全随机乱试? A: 不是。终端在"约定好的候选位置"集合内试,位置由 CORESET、搜索空间、聚合等级和哈希函数精确确定,是有规律、有边界的搜索,并非无序穷举。
Q2: 聚合等级是终端选的还是基站选的? A: 由基站决定。基站根据该用户的信道质量、CCE 余量、鲁棒性需求选择 AL,并放进对应的候选位置。终端只是被动地在所有可能 AL 的候选上尝试解码。
Q3: 盲检会不会解到"别人"的 DCI? A: 不会命中。即使解到了他人的位置,CRC 用自己 RNTI 解扰后校验必然失败,终端会跳过。RNTI 是天然的"身份过滤器"。
Q4: 一个时隙终端最多能解几次?为什么不能更多? A: 受盲检预算约束(典型单载波约 44 次/时隙)。这是为了限制终端芯片算力与功耗,同时约束基站调度密度。
Q5: CORESET 为什么不占满整个带宽? A: 控制区只占一小部分时频资源,把大部分留给业务数据(PDSCH/PUSCH);且 NR 支持按 BWP/按波束灵活配置 CORESET,便于在覆盖、容量、波束间权衡,而非 LTE 那种全带宽固定占用。
本文由「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 等场景全覆盖。
