3. 时频资源结构:OFDM基本原理、参数集(Numerology)、帧结构与时隙格式、资源网格(Resource Grid)
各位同学,咱们今天聊聊5G NR里最基础、也最绕不开的一块——时频资源结构。说白了,就是数据在时间和频率这两个维度上到底是怎么摆放的。我刚开始接触5G的时候,看着那一堆参数集、帧结构,说实话也有点懵。但后来做项目多了,发现这东西其实有很强的内在逻辑。你只要把OFDM这根主线抓住了,后面的一切都顺理成章。
3.1 OFDM基本原理:为什么5G还用它?
OFDM,正交频分复用。这个名字听起来挺唬人,其实原理很简单:把高速数据流拆成很多路低速数据流,分别调制到相互正交的子载波上发送。为什么这么做?因为无线信道有多径效应,高速传输时符号间干扰(ISI)特别严重。你想想看,一个符号还没发完,另一个符号的延迟副本就来了,这不就打架了吗?
OFDM通过插入循环前缀(CP),把多径延迟的影响控制在CP长度内,这样接收端就能轻松地把信号恢复出来。我在项目中遇到过一个问题:CP长度选短了,小区半径一大,远距离用户的信号延迟超过了CP,结果解调性能急剧恶化。嗯,这里要注意,CP长度不是随便选的,它直接决定了系统能抵抗多大的时延扩展。
核心要点:OFDM的子载波之间是正交的,这意味着它们虽然在频谱上重叠,但不会相互干扰。这比传统的频分复用(FDM)要高效得多。5G NR之所以继续沿用OFDM,就是看中了它的高频谱效率和灵活的资源调度能力。
OFDM的数学基础是IFFT/FFT。发送端用IFFT把频域数据变成时域波形,接收端用FFT再变回来。这个过程我建议你亲手写一遍代码,哪怕是用Python模拟一下,也能加深理解。我记得第一次在MATLAB里跑通OFDM链路时,那种感觉——嗯,就像打通了任督二脉。
3.2 参数集(Numerology):5G的灵活之道
4G LTE只有一种子载波间隔:15 kHz。5G NR不一样,它支持多种子载波间隔,这就是参数集(Numerology)的概念。为什么需要多种间隔?因为5G要覆盖的场景太广了:从低频的广覆盖到高频的毫米波,从低速的IoT到高速的URLLC,一种参数怎么可能搞定所有?
5G NR定义的参数集用μ表示,子载波间隔 Δf = 15 × 2^μ kHz。μ可以取0、1、2、3、4,对应的子载波间隔分别是15、30、60、120、240 kHz。你可能会问:间隔越大有什么好处?好处是符号长度变短,适合低时延场景;但代价是CP长度也变短,抗多径能力下降。所以,高频段用大间隔,低频段用小间隔,这是基本规律。
| μ | 子载波间隔 (kHz) | CP类型 | 典型频段 |
|---|---|---|---|
| 0 | 15 | Normal/Extended | Sub-1 GHz |
| 1 | 30 | Normal | 1-2.6 GHz |
| 2 | 60 | Normal/Extended | 2.6-6 GHz |
| 3 | 120 | Normal | mmWave (24-52 GHz) |
| 4 | 240 | Normal | mmWave (52-71 GHz) |
避坑指南:我曾经在配置参数集时,忽略了不同参数集之间的时域对齐问题。不同μ值的时隙长度不同,但帧边界必须对齐。这涉及到基带处理时的采样率转换,处理不好就会出现符号错位。建议你在设计算法时,先把帧结构的时间轴画清楚。
3.3 帧结构与时隙格式:时间轴上的安排
5G NR的帧结构,说白了就是时间怎么划分。一个无线帧长10 ms,分成10个子帧,每个子帧1 ms。子帧再分成时隙,时隙的长度取决于参数集μ。对于μ=0,一个时隙有14个OFDM符号,时长1 ms;对于μ=1,一个时隙还是14个符号,但时长变成0.5 ms。你看,时隙长度随着μ增大而缩短。
时隙格式(Slot Format)定义了每个OFDM符号是下行、上行还是灵活(Flexible)。5G NR支持动态的时隙格式指示(SFI),基站可以通过DCI告诉UE当前时隙里哪些符号是下行,哪些是上行。这种灵活性对TDD系统特别重要,可以根据业务需求动态调整上下行比例。
我个人习惯在开发物理层算法时,先把时隙格式表列出来。比如一个典型的TDD配置:前几个符号是下行控制,中间是下行数据,然后一个GP(保护间隔),最后是上行。GP的长度要足够覆盖传播延迟和UE的收发切换时间。我在项目中遇到过GP设置过短导致上下行干扰的问题,排查了好久才发现是GP不够用。
注意:时隙格式的配置不是随意的。3GPP TS 38.213里定义了多种标准时隙格式,从格式0到格式55+。实际开发中,我建议你优先使用标准格式,除非有特殊需求才自定义。自定义格式需要额外的信令开销,而且兼容性不好。
3.4 资源网格(Resource Grid):数据怎么放?
资源网格,就是把时间和频率画成一个二维表格。横轴是时间,以OFDM符号为单位;纵轴是频率,以子载波为单位。每个格子就是一个资源元素(RE),它是5G NR中最小的物理资源单位。一个RE可以承载一个调制符号,比如QPSK、16QAM、64QAM或者256QAM。
资源块(RB)是资源调度的基本单位,由12个连续的子载波组成,持续一个时隙(14个符号)。所以一个RB包含12×14=168个RE。但注意,不是所有RE都能用来传数据,有些RE要留给参考信号(如DMRS、PTRS)、控制信道(PDCCH)和同步信号(SSB)。
我画了一张资源网格的结构图,你可以直观地看到数据是怎么分布的:
从这张图你可以看到,资源网格不是所有位置都能随便用。控制信道占前几个符号,参考信号按一定模式插入,数据信道填充剩余位置。上行和下行之间还要留保护间隔。实际开发中,资源映射的算法要严格按照3GPP协议来,一个比特都不能错。
实战建议:在实现资源映射时,我建议你先把资源网格定义成一个三维数组:[时隙号][符号号][子载波号]。然后根据协议规定的映射规则,逐个位置填充数据、参考信号和控制信息。这样做的好处是逻辑清晰,调试方便。我曾经用这种方法,半天就定位了一个资源映射的bug——原来是DMRS的位置算错了偏移量。
3.5 资源分配类型:怎么告诉UE用哪些资源?
基站给UE分配资源时,不能直接说「你用第3到第5个RB」,那样信令开销太大了。5G NR定义了两种资源分配类型:Type 0和Type 1。
- Type 0(位图方式):用一组比特位表示哪些RBG(资源块组)被分配。每个RBG包含多个连续的RB,RBG大小取决于BWP的带宽。这种方式灵活,但位图长度随带宽增大而增大。
- Type 1(起始+长度方式):用起始RB位置和分配长度来表示一段连续的RB。这种方式信令开销小,但只能分配连续的资源。
我个人在实际项目中更常用Type 1,因为它简单、开销小。但如果你做的是URLLC业务,需要频繁地分配非连续资源,那Type 0可能更合适。具体用哪种,基站调度器会根据业务类型和信道条件动态选择。
小技巧:在实现资源分配解析时,注意Type 0的RBG大小不是固定的。协议规定,当BWP带宽小于等于36个RB时,RBG大小为2或4;带宽更大时,RBG大小可以到8或16。这个细节很容易被忽略,我见过有人直接用固定RBG大小,结果在带宽切换时解析出错。
好了,关于时频资源结构,咱们就聊到这儿。OFDM是基础,参数集给了灵活性,帧结构定义了时间轴,资源网格把一切落实到具体位置。这些东西看起来琐碎,但每一个参数、每一条规则背后都有物理层设计的考量。做算法开发,不能只知其然,还要知其所以然。下次遇到资源映射的问题,你试着从物理信道的需求出发去理解,很多疑惑自然就解开了。
公众号:蓝海资料掘金营,微信deep3321