三、时频资源结构:帧结构、资源网格与BWP设计
各位好,我是老张。今天咱们聊聊5G物理层最基础、也最绕不开的一个话题——时频资源结构。
说实话,我刚从4G转到5G那会儿,第一感觉就是:这资源结构怎么这么复杂?帧结构变了,子载波间距能调了,还多了个BWP的概念。但干久了你会发现,这些设计背后都有它的道理。说白了,5G要同时服务手机、工业传感器、自动驾驶,资源分配必须灵活。
3.1 帧结构:10ms的骨架
5G的帧结构,核心就是10ms一帧。这个和LTE一样,但内部拆法完全不同。
- 无线帧:10ms,系统里的时间大周期
- 子帧:1ms,一个子帧就是1ms,固定不变
- 时隙:这个就灵活了。常规CP下,一个时隙是14个OFDM符号
关键来了——子载波间距不同,时隙长度就不同。我列个表,大家一看就明白:
| 子载波间距 (kHz) | 时隙长度 (ms) | 每帧时隙数 | 每子帧时隙数 |
|---|---|---|---|
| 15 | 1 | 10 | 1 |
| 30 | 0.5 | 20 | 2 |
| 60 | 0.25 | 40 | 4 |
| 120 | 0.125 | 80 | 8 |
我个人习惯,在实现帧结构时,先确定子载波间距μ值。μ=0对应15kHz,μ=1对应30kHz,以此类推。时隙索引的计算公式是:
// 时隙索引计算
// n_slot 在帧内从0到(10 * 2^μ - 1)
int slotIndexInFrame = (SFN * 10 * (1 << mu)) + slotIndexInSubframe;
// 其中 slotIndexInSubframe 范围是 0 到 (2^μ - 1)
3.2 资源网格:RE、RB、RBG
资源网格,说白了就是一张二维表。横轴是OFDM符号,纵轴是子载波。每个格子就是一个RE(Resource Element)。
你想想看,一个RB(Resource Block)在频域上占12个子载波,时域上占一个时隙(14个符号)。所以一个RB包含12×14=168个RE。但注意,这里面有些RE被用作参考信号、控制信道,真正能传数据的没那么多。
RBG(Resource Block Group)是调度的基本单位。这个大小取决于BWP的带宽:
- BWP带宽 ≤ 36个RB时,RBG大小=2或4
- BWP带宽 37-72个RB时,RBG大小=4或8
- BWP带宽 73-144个RB时,RBG大小=8或16
- BWP带宽 > 144个RB时,RBG大小=16
3.3 BWP设计:带宽部分
BWP是5G引入的一个新概念。为什么要有BWP?原因很简单——省电。
你想,一个手机如果始终监听整个系统带宽(比如100MHz),那功耗得多大?所以5G允许给终端配置一个较小的BWP,只在需要时才切换到更大的BWP。
BWP有几个关键参数:
- 起始位置:在公共资源块CRB中的偏移
- 带宽:用RB数量表示,范围从24到275个RB
- 子载波间距:BWP可以有自己的μ值
- 循环前缀:常规CP或扩展CP
我记得在做一个多BWP切换的项目时,遇到一个坑:BWP切换有延迟,终端需要重新调谐射频。如果切换太频繁,反而影响性能。所以我的建议是:
代码实现上,BWP的配置通常长这样:
// BWP配置结构体示例
typedef struct {
uint16_t locationAndBandwidth; // 起始位置和带宽的联合编码
uint8_t subcarrierSpacing; // 0:15kHz, 1:30kHz, 2:60kHz, 3:120kHz
uint8_t cyclicPrefix; // 0:normal, 1:extended
} BWP_Config_t;
// 解析locationAndBandwidth
// 高N位表示起始位置,低M位表示带宽
uint16_t startRB = (config >> bandwidthBits) & ((1 << startBits) - 1);
uint16_t sizeRB = config & ((1 << bandwidthBits) - 1);
3.4 资源映射的实际流程
好了,我们把帧结构、资源网格、BWP串起来,看看实际怎么用。
假设一个场景:基站要给某个终端分配资源。流程是这样的:
- 确定终端的激活BWP,拿到它的起始位置和带宽
- 在BWP内,根据RBG大小分配资源
- 在分配的RBG内,确定具体的RE位置
- 排除参考信号占用的RE,剩下的就是数据RE
- 把数据映射到这些RE上,生成时域信号
嗯,这里要注意:资源分配时,频域上以RBG为单位,时域上以时隙为单位。调度器在每个时隙都要做一次资源分配决策。
我曾经在调试时发现,终端上报的CQI和实际信道质量对不上。查了半天,原来是BWP配置错了,终端监听的是另一个频段。从那以后,我每次配BWP都会double-check起始位置和带宽。
最后总结一句:帧结构是时间轴,资源网格是频域轴,BWP是终端的活动窗口。三者配合,才能实现5G灵活的资源调度。搞懂了这些,物理层协议栈的骨架你就抓住了。
公众号:蓝海资料掘金营,微信deep3321