2. OFDM与波形设计:从原理到实战
各位好,我是老张。今天咱们聊聊OFDM——5G物理层最核心的波形技术。说实话,我刚入行那会儿,觉得OFDM就是个数学公式堆砌的东西。直到在项目中调试时,亲眼看到CP长度没配好导致小区边缘用户全掉线……嗯,从那以后我才真正理解,纸上得来终觉浅。
2.1 OFDM基本原理:为什么5G选它?
OFDM,全称正交频分复用。说白了,就是把一个高速数据流,拆成N个低速子数据流,分别调制到N个正交的子载波上发送。
为什么要这么干?两个核心原因:
- 对抗多径衰落:单载波系统里,多径时延扩展会导致严重的符号间干扰(ISI)。OFDM把符号周期拉长N倍,多径时延相对就变小了。我做过仿真,在典型城区信道下,OFDM的误码率比单载波低两个数量级。
- 频谱效率高:子载波之间正交,允许频谱重叠。你想想看,传统FDM要留保护带,OFDM不用,频谱利用率直接翻倍。
核心公式(记住这个):
s(t) = Σ X[k] · e^(j2πkΔf·t) (0 ≤ t < T)
其中Δf是子载波间隔,T是OFDM符号周期。X[k]是第k个子载波上的调制符号(QPSK、16QAM等)。
我个人习惯把OFDM调制看作一个IDFT过程。实际上,基带实现就是用IFFT完成的。举个例子,一个20MHz带宽的LTE系统,2048点IFFT,子载波间隔15kHz——这些数字你最好记在心里,面试常考。
2.2 CP-OFDM vs DFT-s-OFDM:两个流派
5G NR支持两种上行波形:CP-OFDM和DFT-s-OFDM。为什么搞两套?我来给你讲讲背后的故事。
2.2.1 CP-OFDM:正统继承者
CP-OFDM就是传统OFDM加了个循环前缀(CP)。CP的作用是什么?两个:
- 消除ISI:CP长度大于最大多径时延,前一个符号的拖尾就被CP吃掉了。
- 保持子载波正交性:CP把线性卷积变成循环卷积,FFT解调时正交性不受影响。
我在项目中遇到过一个问题:CP长度配短了,导致高速移动场景下子载波间干扰(ICI)飙升。后来查3GPP协议才发现,不同子载波间隔对应的CP长度有严格规定,不能随便改。
避坑指南:我曾经在某个基站调测中,把CP长度设成了协议规定值的一半,想着省点开销。结果上行吞吐量直接掉了30%。后来老老实实按协议来,问题解决。CP开销是必要的,别省。
2.2.2 DFT-s-OFDM:上行利器
DFT-s-OFDM,也叫SC-FDMA。它和CP-OFDM最大的区别是:在IFFT之前先做一次DFT(预编码)。
为什么要多此一举?因为峰均比(PAPR)更低。CP-OFDM的时域信号是多个子载波叠加,峰值功率很高,对功放线性度要求苛刻。DFT-s-OFDM本质上是单载波传输,PAPR低3-4dB。
你想想看,手机终端的功放就那么点功率,PAPR高了,回退就大,覆盖就差了。所以5G NR上行强制支持DFT-s-OFDM,就是为了照顾终端。
| 对比项 | CP-OFDM | DFT-s-OFDM |
|---|---|---|
| PAPR | 高(约11-12dB) | 低(约7-8dB) |
| 频谱效率 | 高(灵活调度) | 略低(频域资源连续) |
| 接收机复杂度 | 低(单点频域均衡) | 略高(需IDFT解预编码) |
| 典型应用 | 下行(基站发) | 上行(终端发) |
我的经验:在5G基站实现中,上行接收机要同时支持两种波形。我建议用统一的FFT引擎,通过配置切换模式。DFT-s-OFDM的接收端,先做FFT,再做IDFT解预编码——注意,这里的IDFT大小和DFT大小一致,别搞混了。
2.3 子载波间隔与Numerology:5G的灵活之道
5G NR和LTE最大的不同,就是支持多种子载波间隔。LTE只有15kHz一种,5G NR从15kHz到240kHz,共5种。
为什么需要多种子载波间隔?因为场景不同,需求不同:
- 15kHz:大覆盖、低频段(sub-6GHz),和LTE兼容
- 30kHz:中频段(C-band),典型5G部署
- 60kHz:高频段(毫米波),低时延场景
- 120kHz:超高频,用于V2X等极低时延场景
子载波间隔和符号长度是反比关系:Δf越大,符号周期越短。举个例子:
15kHz: 符号周期 = 1/15000 ≈ 66.7μs
30kHz: 符号周期 = 1/30000 ≈ 33.3μs
60kHz: 符号周期 = 1/60000 ≈ 16.7μs
符号周期短了,时延就低了。但代价是CP开销变大(CP长度固定为符号周期的约7%)。
Numerology参数速查表:
| μ | Δf (kHz) | 符号长度 (μs) | CP长度 (μs) | 典型场景 |
|---|---|---|---|---|
| 0 | 15 | 66.7 | 4.7 | LTE兼容、大覆盖 |
| 1 | 30 | 33.3 | 2.3 | 5G中频、eMBB |
| 2 | 60 | 16.7 | 1.2 | 高频、URLLC |
| 3 | 120 | 8.3 | 0.6 | 毫米波、V2X |
我记得在开发5G基站时,有个坑:不同numerology的符号边界要对齐。比如30kHz的2个符号,正好等于15kHz的1个符号。这样在频域上才能灵活复用。3GPP协议里叫"时域对齐",实现时要注意帧结构的整数倍关系。
注意:子载波间隔越大,对频偏越敏感。120kHz下,1ppm的频偏就会导致严重的ICI。我曾经在毫米波测试中,因为本地振荡器没锁好,整个带宽内的子载波都串扰了。后来加了频偏估计和补偿模块才搞定。
2.4 波形实现的实战要点
最后,分享几个我在基站物理层实现中的心得:
- IFFT/FFT引擎要可配置:支持不同点数(128到4096),对应不同带宽和numerology。
- CP插入要精确:CP长度是符号周期的1/14(常规CP)或1/8(扩展CP),别算错。
- DFT-s-OFDM的预编码矩阵:DFT大小等于分配的RB数×12,不是固定值。我建议用查表法实现DFT,比实时计算快得多。
- 波形切换:同一个时隙内,不同符号可以用不同波形。比如控制信道用CP-OFDM,数据信道用DFT-s-OFDM。实现时要注意流水线切换的时序。
好了,OFDM这部分就聊到这儿。下一章咱们讲信道编码——LDPC和Polar码,那可是5G的另一个重头戏。有什么问题,欢迎在评论区交流。