4、资源映射:RE映射规则、DMRS配置、PTRS配置、CORESET与搜索空间
好,咱们接着往下聊。上一章我们把OFDM符号怎么生成的讲清楚了,这一章要解决一个更实际的问题:这些数据比特,到底怎么塞进时频资源格子里?
说白了,资源映射就是给每个数据找到它在时频网格里的“座位”。5G的调度粒度很细,不像4G那么粗犷。我个人习惯把RE映射看作是“填格子游戏”,但规则比俄罗斯方块复杂多了。
4.1 RE映射规则:从码字到物理资源
先看整体流程。数据从MAC层下来,经过编码、加扰、调制,变成了一堆复数符号。这些符号要映射到RE上。映射的顺序是:先频域,后时域。
具体来说,在一个PRB内,从最低的子载波开始,依次往上填。填完一个OFDM符号的所有子载波,再跳到下一个符号。嗯,这里要注意:DMRS占用的RE是优先预留的,数据符号只能填剩下的位置。
核心原则:每个RE只能承载一个复数符号。PDSCH/PUSCH的数据、DMRS、PTRS、CSI-RS等,都在争抢这些RE。谁先谁后,协议有严格规定。
我在项目中遇到过一个问题:有个同事把DMRS的RE位置算错了,结果数据把DMRS给覆盖了。解调出来的星座图完全散开,怎么调都调不好。后来查了半天,就是映射顺序搞反了。
映射的公式其实不复杂,但参数多。我习惯这样记:
# 伪代码示意
for symbol in 时域符号:
for k in 频域子载波:
if (k, symbol) 被DMRS占用:
放DMRS
elif (k, symbol) 被PTRS占用:
放PTRS
else:
放数据符号
你想想看,这个循环在基站侧是硬件并行处理的,但理解逻辑时用软件思维更清晰。
4.2 DMRS配置:解调的“眼睛”
DMRS,全称解调参考信号。它的作用就是让接收端知道信道长什么样。没有DMRS,数据就是一堆乱码。
5G的DMRS比4G灵活得多。我刚开始学的时候也被各种配置项搞晕了。后来总结出几个关键参数:
- DMRS类型(Type A / Type B):Type A的起始符号固定,Type B更灵活。说白了,Type A适合广播场景,Type B适合低时延场景。
- DMRS长度(单符号/双符号):单符号省资源,双符号抗多普勒频移好。高速场景我建议用双符号。
- DMRS位置(ld):协议里用表格查,比如ld=2表示DMRS在符号2和符号11上。
| 参数 | 选项 | 我的建议 |
|---|---|---|
| dmrs-Type | typeA / typeB | 普通场景用typeA,URLLC用typeB |
| dmrs-Length | 1 / 2 | 低速用1,高速用2 |
| dmrs-AdditionalPosition | pos0 / pos1 / pos2 / pos3 | 信道变化快就多加几个位置 |
避坑指南:我曾经在配置DMRS时,把dmrs-AdditionalPosition设成了pos3,结果一个时隙里DMRS占了太多RE,数据速率掉了一半。后来才意识到,DMRS密度不是越高越好,够用就行。
DMRS的序列生成也值得一说。用的是Gold序列,初始化参数跟小区ID、时隙号、符号号都有关。公式我就不列了,协议38.211里写得很清楚。我一般直接调库函数,但理解原理有助于排查问题。
4.3 PTRS配置:相位噪声的“克星”
PTRS,相位跟踪参考信号。这东西在4G里没有,是5G新加的。为什么?因为5G用了更高阶的调制(256QAM甚至1024QAM),对相位噪声特别敏感。
相位噪声说白了就是振荡器不完美,导致星座图旋转。PTRS的作用就是跟踪这个旋转,然后补偿掉。
PTRS的配置有几个要点:
- 时域密度(L_ptrs):每几个OFDM符号放一个PTRS。L_ptrs=1表示每个符号都放,L_ptrs=2表示隔一个放一个。
- 频域密度(K_ptrs):每几个子载波放一个PTRS。K_ptrs=2表示每两个子载波放一个。
- RE偏移:PTRS在频域的位置跟DMRS的端口有关,不能冲突。
注意:PTRS只在PDSCH/PUSCH的带宽内存在。而且,如果调制阶数低于64QAM,PTRS可以不用配。我见过有人给QPSK也配了PTRS,纯属浪费资源。
我记得有一次外场测试,终端在高频段(28GHz)上报的EVM很差。查来查去,发现是PTRS的时域密度配得太稀了。相位噪声变化快,PTRS跟不上。把L_ptrs从2改成1,EVM立马降下来了。
4.4 CORESET与搜索空间:控制信道的“地图”
CORESET,全称控制资源集。它是PDCCH(物理下行控制信道)的“地盘”。搜索空间,则是告诉终端在这个地盘里怎么找自己的控制信息。
这两个概念容易混淆。我打个比方:CORESET是足球场,搜索空间是球门的位置。终端知道球场在哪,但还得知道球门在哪才能射门。
CORESET的配置参数:
- 频域资源(frequencyDomainResources):一个位图,指示哪些RB被占用。
- 时域长度(duration):1到3个OFDM符号。
- CCE到REG的映射:交织或非交织。非交织简单,交织能获得频率分集增益。
搜索空间的配置参数:
- 监测周期和偏移:比如每5个时隙监测一次,从时隙0开始。
- 监测符号:在一个时隙内,从哪个符号开始监测。
- 聚合等级(AL):1, 2, 4, 8, 16。AL越大,占用的CCE越多,可靠性越高。
| 聚合等级 | CCE数量 | 适用场景 |
|---|---|---|
| AL=1 | 1 | 信道条件好,小区中心用户 |
| AL=4 | 4 | 中等信道条件 |
| AL=8 | 8 | 信道差,小区边缘用户 |
| AL=16 | 16 | 极端情况,比如深覆盖 |
关键点:一个CORESET可以关联多个搜索空间,一个搜索空间只能关联一个CORESET。终端在搜索空间里盲检PDCCH,直到找到自己的DCI。
我曾经在配置搜索空间时,把监测周期设得太长(比如每20个时隙一次)。结果终端要等很久才能收到调度信息,时延超标。后来改成每2个时隙一次,问题解决。但代价是终端功耗增加了,因为要更频繁地唤醒。
嗯,这里要提醒一下:CORESET和搜索空间的配置,直接影响控制信道的容量和时延。配得太少,调度不过来;配得太多,资源浪费。这个平衡需要根据实际业务场景来调。
好了,资源映射这块就讲这么多。下一章我们聊聊波束管理,那又是另一个有意思的话题。