ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

5G PDCCH深度解析:从CORESET、搜索空间到盲检排障

5G PDCCH深度解析:从CORESET、搜索空间到盲检排障 搞5G优化最怕什么不是数据速率上不去而是用户明明站在信号表现尚可的位置却频繁出现下行漏检、上行调度异常、时延上不去。查到最后问题常常落在一个地方——5G PDCCH。作为5G NR物理层的下行控制信道PDCCH承载着所有下行控制信息DCI它什么时候给终端发指令怎样发、让谁收全都由这一条链路决定。以前跟同事排查一个模拟组网里的异常案例PDSCH调度正常得很但MCS始终拉不高后来把modem日志拉出来一看才发现是PDCCH盲检成功率掉到了谷底。这篇文章我从协议机制、资源映射、盲检开销到现场排障思路把5G PDCCH拆开来聊一遍适合刚入门的协议测试、网优和做基站/终端联调的朋友参考。1. 先看清PDCCH在NR物理层里的位置1.1 PDCCH和PDSCH一对“命令”与“货物”的关系可以把下行传输简单理解成快递流程。PDSCH是那辆装满货的卡车真正运输用户数据PDCCH则是贴在车上的运单告诉终端“这车货从哪来、到哪去、该不该接”。要是运单看不清车上的货再好终端也不知道该不该收。基站侧每次给终端分配PDSCH资源都必须先在PDCCH上发送对应的DCI终端在PDCCH上正确解码出DCI之后才知道接下来要用哪些RB、什么MCS、采用哪种天线端口去接收数据。所以PDCCH的性能直接限制了整个下行链路的能力。协议设计上NR把控制信令从“大而全”改成“灵活精确”的路线用CORESET定义频域范围用搜索空间定义时域监听时机加上聚合级别和CCE映射方式来匹配不同信道质量。相比LTE那种几乎占据整个系统带宽前半部分的固定结构NR的PDCCH更节省资源但也对网络配置和终端盲检能力提出了更高要求。1.2 一个标准调度流程里PDCCH要出现多少回很多人觉得PDCCH只在初始接入时出现实际上UE工作过程中几乎每次数据行为都绕不开它。终端开机做小区搜索读完SSB和MIB之后要在CORESET 0对应的搜索空间里盲检SIB1相关的DCI完成系统消息读取随机接入时要通过携带RA-RNTI加扰的DCI拿到RAR窗口的调度信息寻呼来了要用P-RNTI加扰的DCI去指示PDSCH上的寻呼消息进入到连接状态后上行授权和下行分配分别对应用C-RNTI加扰的DCI 0_x和DCI 1_x连PUCCH的功率控制都靠DCI 2_x来执行。这么说吧如果PDCCH这条链路出了稳定性问题表面上看到的只是某个指标不好实际上背后是整个控制面的通讯失灵。我在定位外场慢速用户投诉时习惯先查两样东西一个是PDSCH的信道质量另一个就是PDCCH的解调门限。很多时候问题都不在数据信道上。1.3 NR PDCCH相对LTE的关键变化NR对PDCCH做了几处明显改动。第一LTE的PDCCH占满前几个OFDM符号NR则用CORESET把控制区域进一步网格化频域上以6个RB为最小步长配置时域上最多连续3个符号灵活性高很多。第二LTE靠PCFICH指示控制区域大小NR取消了PCFICHUE通过RRC/MIB中的配置直接知道听哪里、听多大。第三NR引入PDCCH专用的DMRS位置固定在每个REG上不再需要像LTE那样靠CRS做解调参考。第四NR支持把CCE到REG做交织映射利用频率分集对抗干扰这在LTE里也没有。对比项LTE PDCCHNR PDCCH控制区域固定占系统带宽前若干符号CORESET灵活配置时域最多3符号资源粒度CCE36个RE基本固定CCE6个REG72个RE支持聚合参考信号依赖CRS独立DMRS频选调度全带映射相对简单可配置交织/非交织支持频率分集或波束成形盲检结构CSSUSS级别固定较少搜索空间集灵活聚合级别最多到16对做优化的人来说这些变化意味着PDCCH的排查逻辑完全变了。以前LTE控制信道出问题基本绕着PCFICH和PHICH转就行现在NR首先要确认CORESET选没选对、搜索空间配没配齐、DCI格式和RNTI有没有对齐链路预算算不算得过来。2. 一条DCI从协议栈到空口经历了什么2.1 DCI格式那么多实际碰到的就这几类DCI格式的选择不是随机的协议把格式分成了回退fallback和非回退两类。回退格式信息少、结构固定、盲检简单适合链路差时兜底非回退格式可以带上各种灵活字段如波束指示、多TRP指示、CSI请求等但开销也大。实际组网里最常见的几个格式DCI格式用途常用RNTI0_0 / 1_0回退调度格式简洁可用的PUSCH/PDSCH配置固定C-RNTI、TC-RNTI、CS-RNTI等0_1 / 1_1非回退调度支持大量调度参数C-RNTI、CS-RNTI、MCS-C-RNTI等0_2 / 1_2紧凑非回退调度适合低时延场景C-RNTI等2_0时隙格式指示SFI-RNTI2_1下行抢占指示INT-RNTI2_2 / 2_3PUCCH/PUSCH/SRS功率控制TPC-PUCCH-RNTI、TPC-SRS-RNTI3_0 / 3_1侧链路调度SL-RNTI等判断一个DCI属于谁核心不是格式本身而是加扰在CRC上的RNTI。RNTI就像一把钥匙UE只有拿对钥匙打开门才会相信这条消息是给自己的。比如C-RNTI是连接态下专属的SI-RNTI用来读系统消息P-RNTI用来听寻呼。同一个DCI格式配上不同RNTI含义完全不同这也是终端盲检时必须逐个尝试的原因。2.2 RNTI加扰CRC让指令只给该收的人协议里对DCI生成过程的定义很清晰。基站在payload bit周围加上一段CRC然后拿RNTI与CRC做异或加扰。终端盲检时先用自己的RNTI去解扰CRC再校验CRC是否通过通过了就认为这条DCI属于自己。这种做法的好处是终端不必在每个子帧都层2解一遍所有数据只靠物理层就能丢掉大量不属于自己的候选。RNTI的加扰还起着“资格认定”的作用。拿寻呼来说多个UE可以共享同一条P-RNTI加扰的DCI具体谁来响应还要看DCI里携带的寻呼记录和UE ID匹配情况。随机接入过程则用RA-RNTI加扰RA-RNTI的值跟PRACH时频位置绑定所以终端只要知道自己发了PRACH就知道该用哪把钥匙去开箱。TC-RNTI则在竞争解决成功后升级成C-RNTI。2.3 Polar编码和速率匹配控制信道的专属编码方式5G控制信道没有继续沿用LTE的卷积码而是选了Polar码。原因很简单DCI的信息比特普遍较短Polar码在短码场景下性能优势更明显。协议里Polar编码前要先把CRC带上编码后再按CORESET承载能力做速率匹配。速率匹配说白了就是编码产生的比特太多而PDCCH能装下的RE有限那就按特定顺序打孔或者重复把输出比特长度压到刚好装满一个CCE聚合块。这里要注意DCI真正映射到的物理资源数量由聚合级别决定并不是由DCI内部字段个数决定。一个CCE在QPSK调制下最多能塞多少比特取决于该REG上的DMRS占用。这个“能装多少”和“实际DCI有多大”之间的gap就是聚合级别发挥作用的空间。信噪比差的用户把级别调高等于把同样一份消息多复制几份虽然费资源但可靠性上来了。2.4 从编码比特到空口信号中间并不简单编码和速率匹配之后还要过加扰、调制、层映射、预编码、RE映射这几道工序。CRS时代的加扰比较简单NR里加扰序列按小区ID和时隙号生成能有效把邻区同频干扰随机化。调制固定用QPSK控制信道不追求高阶调制因为控制信道必须比数据信道更鲁棒。调制之后按照CORESET里的CCE位置做RE映射把归属于某个PDCCH候选的REG全部对应到物理资源上同时在该RE网格里放好DMRS让终端能完成相干解调。如果配置了交织映射CCE到REG的对应关系会被打散REG绑定REG bundle在频域均匀铺开适合在大带宽下获得频率分集。如果配成非交织那么一个CCE的所有REG尽量落在连续频率上更适合波束成形和时域聚焦。选择哪种映射一定要结合信道环境和发射模式不能只图配置简单。3. CORESET与搜索空间一套决定盲检成本的规则3.1 CORESET参数一次说明白CORESET定义的是PDCCH在频域和时域上“允许出现的区域”。频域用RB集合表示实际配置时按6个RB为一个粒度这是为了和CCE的REG构成保持对应关系时域上最多连续3个符号由参数monitoringSymbolsWithinSlot指出起始符号位置和数量此外还有CCE到REG的映射方式、REG bundle大小、预编码粒度、DMRS加扰ID等参数。一个小区可以给UE配多个CORESET但它们承担的任务不同。有的用来做公共搜索空间有的专供某UE的专用搜索空间。BWP切换时CORESET也要跟着适配否则终端在换到新BWP后就不知道去哪找控制信令。我见过一些配置问题就是CORESET的带宽小于SSB所在带宽或者CORESET和SSB重叠导致冲突结果终端始终解不到SIB1卡在小区选择这一步。3.2 盲检为什么这么耗资源UE拿到CORESET和搜索空间配置后仍然不知道基站到底把DCI塞在哪个位置。它只知道自己该在某个时隙的某个符号上到某个聚合级别下的一组PDCCH候选里去找。候选集就是搜索空间里预先定义好的一组CCE组合终端要从AL1、AL2、AL4、AL8甚至AL16逐级别去试每试一次就要做一次Polar解码、CRC解扰和校验。这个过程的成本非常高协议里因此加了硬约束UE每个时隙能够盲检的PDCCH候选数量有限且能够在这上面做信道估计的CCE总数也有限。网络侧配置出来的候选数量如果超过终端能力终端不会全部去试而是按优先级挑选一部分剩下那些没试到的DCI就会被漏掉。优化时如果把所有搜索空间都打开很可能换来的是大量漏检而不是更高可靠性。3.3 USS和CSS不是一回事别混着调公共搜索空间CSS和UE专用搜索空间USS承担的角色完全不同。CSS里主要放的是回退DCI、寻呼、随机接入响应、系统消息SIB1调度等通常要和CORESET 0绑定覆盖所有用户USS则放针对特定用户的DCI可以通过C-RNTI加扰精确送达。为了控制盲检总开销协议还提出了一种格式对齐机制DCI 0_0和1_0、0_1和1_1等在尺寸上尽量对齐这样终端可以用更少的候选处理更多DCI变体。终端为了减少盲检还会跳过与已知尺寸不匹配的候选、或者只在实际有数据可调度的时候才去监听。UE省电和PDCCH的监控周期强相关DRX开启的时候如果网络侧在UE休眠期把下行小包调度过来PDCCH盲检再准也没用——UE根本不监听。4. 从小区搜索到波束管理CORESET 0和TCI状态不能忽略4.1 CORESET 0是“头一公里”的咽喉终端刚完成小区搜索时除了SSB它还不知道任何下行资源配置靠的是MIB里的pdcch-ConfigSIB1字段找到CORESET 0和对应的搜索空间0然后才有机会读SIB1。CORESET 0的配置不是任意选的而是从有限表项里查出来的协议用索引把CORESET 0的时频资源、符号位置和复用模式全部约定好。SSB与CORESET 0可以时分复用、频分复用或者两者结合选择不好就会互相碰撞导致终端解析不了SIB1。做基站侧参数规划时CORESET 0配置直接决定了覆盖和接入成功率。把CORESET 0放在系统带宽偏边上虽然能避开SSB但会影响频率分集放在中间偏又可能与SSB重叠。通常建议根据子载波间隔和小区带宽选择一个既能与SSB错开又不会离控制信道资源太远的表项并在路测中统计SIB1解码成功率来验证。4.2 PDCCH也有自己的“波束指向”PDCCH在NR里不只是转发信令它还能被配置成不同波束。基站通过TCI状态告诉终端某个CORESET上的DMRS跟哪个SSB或CSI-RS在空间上是准并址QCL的这样终端可以用对应参考信号的信道估计结果来解调PDCCH。一个CORESET可以配置多个TCI状态DCI里还可以动态指示切换这也是NR波束管理的一个重要入口。工程中常见的奇怪现象是终端上报的SSB RSRP非常高但PDCCH BLER却压不下来。这时候要看CORESET用的TCI状态是不是对应了弱波束。我遇到过一个外场问题终端跟基站间明明有很强的主波束但公共搜索空间固定挂在宽波束上覆盖够了SINR不够只要把CSS的CORESET关联到占空比更大的辅助波束上问题就解决了。PDCCH的资源映射和波束选择永远要一起看。5. 外场与实验室结合PDCCH指标异常时的定位思路5.1 先看盲检成功率再看调度侧资源利用率排查PDCCH问题的第一步永远是分“终端侧没解出来”还是“基站侧没调度出去”。终端modem日志里能看到每个候选上的盲检结果和DCI正确率如果UE盲检次数已经触顶说明配置的搜索空间太多太密要把一些低优搜索空间合并或拉大监控周期。如果盲检没问题但调度成功率低那要往基站调度器查是不是PDCCH资源被占满是不是聚合级别放大后CCE不够分又或者DCI format size没有对齐导致调度器把一部分候选放在了UE盲检范围之外。我曾在外场抓过一组数据UE在某个时间点收不到任何下行业务后台看PDSCH PRB利用率很低后来翻完整条信令流程才发现PDCCH的CCE利用率很高但大部分给了寻呼和公共信令留给专用调度的CCE已经耗尽。这种资源挤占问题在基站配置比较复杂的小区尤其容易发生。5.2 从SINR和RSRP的差值找干扰特征PDCCH对SINR的敏感度远高于PDSCH。PDSCH可以用高阶MCS和HARQ重传扛住较差信道PDCCH一旦解错整个TTI的调度就白费还没有那么多重传机会。所以控制信道通常要求SINR保持在某个门槛以上比如低于某个值时盲检错误率会迅速抬升。排查时不能只看RSRP要把PDCCH所在符号的SINR单独取出来看很多弱覆盖区RSRP并不低但控制信道SINR已经被邻区干扰打穿。干扰的另一个来源是符号级干扰如果邻区SSB或CORESET恰好安排在同一符号上即便频域错开也可能造成符号级功率抬升和AGC抖动。比如某次排查发现PDCCH BLER持续偏高而PDSCH却正常最后定位到是同频邻区把CORESET配置到了与本小区完全相同的符号位置导致终端在盲检窗口里收到的干扰远大于数据信道。这种问题纯粹看平均SINR指标是发现不了的。5.3 调聚合级别之前先想想能不能改搜索空间聚合级别从AL1调到AL2甚至AL4本质上就是用更多CCE换可靠性。调高之后能显著降低漏检但代价是整个小区控制信道容量下降阻塞率上升。所以在决定调高聚合级别之前先看看当前搜索空间的监控周期是不是过密、持续时间是不是过长。把一些不太重要的DCI合并到更长的周期里或把持续时间缩短到只覆盖一个实际数据调度窗口比盲目提高聚合级别更划算。另一个常用手段是打开交织映射让一个PDCCH的REG在频域上尽量散开。这样做适合大带宽、频率选择性衰落明显的场景但在小带宽或集中式波束场景下反而会损失波束成形增益。参数之间是联动关系不能只动一个维度。5.4 实际项目中容易踩的几个暗坑DCI大小没有对齐。网络侧给不同搜索空间配了携带不同字段的DCI但没有做尺寸对齐终端只能把较多候选全部盲检一遍结果漏检和功耗一起恶化。SSB功率明显高于PDCCH时很多现场测试员会因为RSRP好看而低估控制信道风险实际上PDCCH的覆盖经常比想象中差。载波聚合场景里各个小区搜索空间的监控时机重叠超过终端能力后只能靠优先级挑那么优先级配低的DCI可能整周期都收不到。这类问题在联合调度时很隐蔽采集日志时要把每个小区的监听时机和DCI类型都列出来才能看清。6. 给不同背景的人一份PDCCH学习路径建议如果是刚转5G的网优工程师最不合适的学习方式是直接抄配置模板。建议先下载协议文档中关于PDCCH的章节把CORESET、搜索空间、聚合级别、RNTI这几个概念用一张草图画清楚谁配了谁、谁监听谁、谁真正发送。然后找一个首呼失败的日志从空口消息一路跟到RRC配置里的ControlResourceSet和SearchSpace字段把两个字段做逐条对应差不多就能形成肌肉记忆。做协议栈或测试工具开发的人则应当把重点放在DCI payload的结构解析上。不同DCI格式的字段顺序和比特宽度各不一样解析器写错一个字段后面全是乱的。建议先拿回退格式练手再延展到非回退格式最后再处理DCI尺寸对齐和RNTI解扰那一步。控制信道解析比数据信道解析要难因为你不先知道调度结果根本不知道比特流里哪些字段该按什么含义解。我自己带的几个新人我一般让他们先回答三个问题终端盲检一次PDCCH候选大概要经过哪些处理步骤把一个聚合级别从AL2调到AL8RRU侧发射功率变了没有在同一个CORESET上为什么CSS和USS都能存在这三个问题能回答清楚PDCCH的架构基本就通了。我的体会是控制信道问题的排查思路比数据信道更需要系统思维不要一上来就调功率、调波束先把配置和盲检链路捋清楚往往问题就露出来了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进