ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OFDM峰均比问题根源与降PAPR方案工程实践对比

OFDM峰均比问题根源与降PAPR方案工程实践对比 做OFDM系统的人几乎都被PAPR这个指标教育过。无论是实验室里用信号分析仪抓OFDM时域波形还是在芯片验证阶段盯着功放电流找原因最后都会回到同一个问题多载波叠加出来的时域包络怎么就这么不平坦。拿一段很普通的16QAM-OFDM信号实时功率相对平均值高出10dB以上的符号并不稀罕这对功放设计、ADC动态范围、射频前端线性度全是压力。这篇文章我想顺着OFDM的IFFT结构把PAPR问题的根源拆清楚再把常用的处理手段分成两类讲明白一类是削波、压扩、星座扩展这些确定性方法另一类是SLM、PTS这些概率性方法。最后结合5G NR上行常用的DFT-s-OFDM以及最近讨论度很高的OFDM ISAC一体化波形聊聊工程上到底该怎么选。适合正在做物理层算法、或者需要评估OFDM波形方案的人当作一份实践参考。1. 高PAPR从哪里来时域叠加的峰值陷阱1.1 从IFFT看OFDM的时间信号构造OFDM的发送信号在数学上并不复杂。频域数据符号 (X[k]) 经过N点IFFT得到时域序列[ x[n] \frac{1}{\sqrt{N}} \sum_{k0}^{N-1} X[k] e^{j2\pi kn/N} ]翻译成人话就是每个子载波都是一个复正弦带着各自的幅度和相位在时间轴上叠加。数据的随机性决定这些复正弦的相位是杂乱分布的某个时刻如果一大堆子载波的相位恰好一致它们的实部或虚部就会同时往一个方向顶瞬时幅度立刻被抬高。我经常用这个类比一群人本来各说各话周围声压很均衡但突然所有人冲着同一个方向喊同一句话那一瞬间的声压就会爆掉。OFDM的峰值就是这些子载波偶尔“齐喊”的结果。QAM调制阶数越高星座点分布的相位和幅度越多样这种“齐喊”的偶然性越大包络波动就越剧烈。PAPR的定义本身很简单就是符号内峰值功率对平均功率的比值[ PAPR 10\log_{10} \frac{\max|x[n]|^2}{E\left[|x[n]|^2\right]} \quad \text{(dB)} ]但简单归简单真正用的时候坑很多后面我会专门讲。1.2 什么时候最容易“撞峰”子载波数量与调制阶数的影响很多人以为子载波越多PAPR一定越高这话不能说错但要分怎么看。从统计角度看子载波数N越大时域信号的实部和虚部越接近高斯分布中心极限定理幅度近似服从瑞利分布。也就是说出现大幅度的概率尾巴是存在的而且随着N增大CCDF曲线尾部的收敛速度会变慢。实测对比256点有效子载波和1024点有效子载波在CCDF的0.1%概率点上PAPR大约会差0.5~1dB并不是线性暴涨。更需要注意的其实是调制阶数。QPSK的星座点和16QAM、64QAM比峰值出现概率是有差别的。高阶QAM里外圈星座点的功率本来就比平均功率高不少一旦这些点叠加出同相情形峰就会更夸张。不过坦白说调制阶数对PAPR的影响远没有很多人想象的那么大主要推手仍然是子载波叠加数量。还有一点容易忽略上面讨论的都是基带复信号。到了射频端经过IQ调制、上变频、滤波器之后包络形状会发生细微变化DAC的非理想特性也可能让峰值重新“长”出来。所以基带仿真结果只能当作参考真正做功放回退评估时一定要预留余量。2. 衡量PAPR的正确姿势CCDF曲线与过采样细节2.1 只报最大PAPR会被随机性骗到我见过不少初做OFDM的人写个仿真脚本循环几百个符号算完最大PAPR是多少dB就当作系统指标报上去。这是典型的被随机性骗到。OFDM符号之间的PAPR差异非常大。同一个系统里有些符号可能只有7dB有些符号能到12dB。如果你只跑了几百个符号抓到最大值可能是11dB换一组随机种子再跑最大值变成11.8dB也不奇怪。这个“最大PAPR”本身就是一个随机变量拿来当设计指标结果必然不稳定。工程上更合理的做法是用CCDF曲线描述。横轴是PAPR门限 (PAPR_0)纵轴是PAPR超过该门限的概率 (P(PAPR PAPR_0))。比如一个无线帧里有几万个符号要求平均每个帧最多出现一次超过门限的峰值那就要看10^-4甚至10^-5概率点上的PAPR值。这比单个最大PAPR可靠得多。2.2 4倍过采样才是仿真基准仿真中漏掉峰值是另一个高频问题。如果IFFT点数刚好等于有效子载波数采样点全是符号的等间隔采样点峰值完全可能落在两个采样点之间直接漏检。文献里通用做法是至少4倍过采样也就是IFFT点数取 (4N)数据只放在中间的N个子载波上其余补零。我用同一个信号做过对比不过采样时统计出来的CCDF比4倍过采样低0.5~1dB。这个误差相当可观足以让“这个方案到底够不够好”的判断反转。以前有人拿着不过采样的结果去定功放回退量样机ACLR始终超标查了很久才发现是峰值漏检问题。所以在这件事上我从不讲条件跑PAPR过采样倍率至少4倍。想看到更真实的射频包络行为可以上8倍但计算量会成倍增加一般4倍足够。2.3 别忘了EVM、ACLR和立方度量做PAPR优化不能只看PAPR自己降下来没有还要同时看EVM和ACLR。削波削多了EVM直接变差峰压下去了但频谱长胖了带外辐射就会超模板。这些指标之间存在强耦合任何PAPR方案最终都要放到“EVM-ACLR-复杂度”三方框里综合评估。另外多说一句如果终端或基站侧关心的是功放非线性带来的互调失真那比PAPR更贴近实际工程的是CM立方度量Cubic Metric。CM是3GPP里面评估波形对功放效率影响时常用的指标它和三阶交调失真的相关性比PAPR更强。设计低PAPR波形时我会同时算PAPR和CM不能PAPR好看但CM反而更差。3. 确定性削峰技术削波、压扩与星座扩展的代价边界3.1 削波加迭代滤波工程里用得最多的路子削波是最直观的方法。时域信号幅度超过某个门限直接掰平到门限值相位保持不变。门限的选择通常围绕目标PAPR来比如想让CCDF的0.1%概率点从11dB降到8dB可以把削波门限设在平均功率加8~9dB的位置具体要看信号的统计分布。但直接削波有个大问题削掉的波形边缘是硬截断频域里会生成大量带外分量。OFDM本来就对频谱模板敏感不处理的话ACLR基本必超。所以工程实践中都是削波配合滤波一起用削完一波低通滤波把带外打回去滤波又会把时域峰值顶起来一点于是再削、再滤。迭代三次左右峰均比能收敛到接近目标频谱也能压住。迭代次数不建议太多。我实测五六次以上峰均比几乎没有进一步改善EVM反而开始明显恶化。削波门限和迭代次数的组合一定要结合EVM指标一起扫一遍不能只盯着PAPR曲线。典型经验值16QAM下削波门限设在7dB附近三次迭代滤波PAPR 0.1%概率点能到8~9dBEVM大约损失3%~5%这个代价在很多下行场景可以接受。务实的算法工程师会给削波加一个窗口比如用升余弦窗对超过门限的波形做平滑过渡而不是生硬截断。这样带外频谱特性更好代价是等效削波门限要高零点几dB得自己在频谱和峰均比之间找平衡。3.2 压扩变换用非线性交换峰均比压扩的思路很巧妙做过音频的人一听就懂。压缩大信号、放大弱信号把信号的动态范围整体收紧峰均比随之下降。收端做逆运算恢复原始信号。具体实现里常用μ律压扩。发端把信号的幅度按对数曲线压一遍让原本小的幅度变大原本大的幅度变小。这样有两个好处一是PAPR下降二是小信号被放大后整个信号的平均功率利用率更高功放的工作点可以抬得更高。代价同样明显。非线性压扩会引入接收端不可完全抵消的噪声尤其在64QAM这种对幅度敏感的调制方式下误码率损失明显。我在高调制阶数信号上试过μ律压扩PAPR确实能降很多但BER损失有时候大到不能接受。它更适合QPSK等低阶调制或者对误码性能余量比较大的场景。后来也有不少改进设计比如分段压扩、指数压扩、根号压扩本质都是在压扩曲线的陡峭程度和失真之间找折中。如果你决定用压扩我建议别直接套经典μ律参数先仿真画出“压扩系数-PAPR-BER”的曲线选工作点。3.3 星座扩展不动判决域就能削峰的思路星座扩展Active Constellation ExtensionACE是很优雅的确定性方法。核心思想QAM星座外圈的点本来就有一定冗余功率可以把它们朝远离原点的方向推出去。只要不越过判决边界理论误码性能几乎不受影响。用这些小范围的星座“外推”去对冲时域上某几个最大的峰值。实际操作并不简单。要把“哪些子载波的星座点往哪个方向推、推多少”变成一个优化问题每一轮削峰都需要遍历峰值采样点找最优的星座扩展量。复杂度比直接削波高不少但好处是信号根本上是无失真的接收机不需要精确知道扩展量只需要在软解调时把扩展区域纳入考虑。ACE在低阶QAM上效果很有限因为内圈点没有扩展空间只有外圈点能动。在64QAM、256QAM这种星座点数量多、外圈点占比高的场景效果才比较明显。如果你做的是广播信道或者对误码率极为敏感的场景ACE值得认真评估。4. 概率性方案SLM、PTS与迭代搜索的复杂度博弈4.1 SLM生成多个候选再挑一个“温顺”的SLMSelected Mapping的思路直白每个OFDM符号我生成U个不同相位旋转版本分别IFFT选PAPR最小的那个发出去。接收端只要知道用的是哪一组相位序列乘上共轭就能还原数据。相位序列的生产可以很简单。用随机数生成U组长度等于有效子载波数的相位序列每组每个子载波乘上一个 (e^{j\phi})(\phi) 可以从 {0, π/2, π, 3π/2} 里随机取。也可以用Walsh-Hadamard矩阵生成正交性更好的序列减少“候选之间过于相似”导致的选择增益下降。U取多大合适我一般从8开始试。U8时CCDF 0.1%概率点的PAPR通常能降2dB左右U增加到16进一步收益可能只有0.5dB再往上倍增长收益曲线迅速饱和。SLM最大的短板是计算量每个符号要做U次IFFTU16就相当于模块整体计算量翻了16倍很多时候这不可接受。4.2 PTS子块旋转和迭代下降搜索PTSPartial Transmit Sequence换了一种玩法。频域数据先分成V个子块每个子块单独IFFT得到V段时域序列然后给每段乘上旋转因子 (b_v e^{j\varphi_v}) 再叠加。目标是找一组最优的 ({\varphi_v})让叠加后的合成信号PAPR最小。直接穷举所有旋转因子组合复杂度是 (4^{V-1}) 量级V稍微大一点就爆掉。实际工程中用迭代下降搜索先全部设为1算出合成信号PAPR然后轮流固定其他V-1个块不变只调整当前块的旋转因子比如四个候选相位都试一遍留下PAPR最小的一种一轮扫完V个块再重复几轮直到不再改善。这个近似搜索和全局最优会有点差距但实践下来差距很小复杂度却从指数级降到 (4V) 次左右的计算量。PTS比SLM更灵活的地方在于它不是整符号级别的候选而是子块级别的组合细调空间更大。代价是整个发送链路要做V次IFFT和SLM一样吃计算资源。4.3 边带信息的脆弱性比EVM更需要注意的风险SLM和PTS都绕不开边带信息。接收端必须知道用了哪组相位序列或哪组旋转因子否则数据还原不出来。边带信息一旦错误整个OFDM符号的数据全错这个破坏力比削波多损失几个点EVM严重得多。所以实用化的SLM/PTS方案里边带信息会用强信道编码保护或者用独立的参考序列承载。有些廉价实现会把索引信息调制在预设的几个导频子载波上接收端做相关检测。但相关检测也有风险信道恶劣时索引误判概率并不为零。如果误码率指标卡得很严我更愿意把索引做信道编码多花几个比特的冗余去换鲁棒性而不是裸发索引。也因为边带信息这个包袱很多系统在初期评估时就直接把SLM/PTS划掉了。这时TR和DFT-s-OFDM就成了更稳妥的候选。5. 工程选型视野DFT-s-OFDM、TR与ISAC中的新要求5.1 DFT-s-OFDM为什么终端上行都爱它5G NR上行最常用的低PAPR方案不是那些花哨的削峰算法而是DFT-s-OFDM。它先对M个数据符号做一次M点DFT再把DFT输出映射到给定子载波上最后做IFFT。从频域看它是“先扩展再调制”从时域看它本质上是带有频域均衡机制的单载波波形包络远没有多载波叠加那么暴力。实测同配置下DFT-s-OFDM的CCDF 0.1%概率点通常比OFDM低2~3dB这个收益是结构性的不需要任何削波也不引入失真。代价是什么呢频域调度灵活性下降了。纯OFDM可以任意分配不连续的资源块DFT-s-OFDM为了保持DFT结构和低PAPR特性只能用集中式或交织式映射调度自由度和MIMO预编码灵活性都要打折。对终端来说PA效率直接关系到发热和续航上行用低PAPR波形带来的收益远大于调度灵活性的损失。所以从LTE到NR上行链路始终保留DFT-s-OFDM这个选项。做终端物理层的人如果被PAPR问题困扰优先想想能不能把波形切到DFT-s-OFDM这条路上这往往是最省心的一步。5.2 TR预留子载波接收端可以不关心的削峰手段TRTone Reservation是另一种我在工程里很看好的方案。思路是在频域预留少量子载波不放数据专门让它们合成抵消信号去时域里消掉那些大峰值。接收端把这些预留子载波直接扔掉就行完全不需要知道发送端具体做了什么天然躲开了边带信息问题。实现的朴素版本并不复杂。先找到时域波形里最大的几个峰值每个峰值对应一个削峰核信号——通常是用升余弦窗或者汉明窗做成的窄脉冲把它移相到峰值位置乘以适当的幅度和相位叠加进原始信号。每处理完一个峰PAPR就降一点迭代几次就能压到门限以下。预留子载波数量通常占总子载波的3%~5%削峰能力已经可观。TR没有带内失真对EVM几乎没有影响代价是频域损失了3%~5%的谱效率以及发送端多出一路信号叠加的计算。在DVB-T2这类广播系统里TR被用来配合功放效率优化效果非常实际。5.3 ISAC与OFDM感知对波形包络提出的新要求最近“OFDM ISAC”这个方向热度很高也就是让同一个OFDM波形同时干通信和感知两件事。感知在这里的主要任务是发大功率无线信号然后接收目标的回波测距、测速、成像。这里有个矛盾被很多人忽略了感知最希望的是把平均功率推到极致来提升回波SNR而OFDM那高高隆起的峰值要求功放必须大幅回退才能正常工作。回退一多平均功率就上不去感知距离直接打折。这个矛盾让低PAPR波形设计在ISAC里变得比纯通信系统更关键。我看到的不少联合设计里TR思路被重新捡起来既然感知本来就需要在某些子载波上发专用的感知波形这些子载波完全可以兼任“削峰预留资源”数据子载波负责通信感知子载波在完成感知任务的同时偷偷把峰值削掉。一石二鸟既保了感知功率又稳了通信波形包络。另外ISAC需要的宽带信号往往对应更大的IFFT点数PAPR统计尾巴反而更重波形设计时不能只看通信侧的EVM还要看感知链路的峰均比承受能力。这已经超出了单纯“降低PAPR”的范畴变成波形联合优化的问题。6. 一套可复现的PAPR仿真流程与我的测试数据6.1 仿真参数设定与核心代码我自己常跑的一套对比平台参数固定在这样有效子载波数M256IFFT点数Nfft10244倍过采样调制方式16QAM统计符号数50000个。循环前缀长短对PAPR统计几乎没影响所以这里不刻意加。核心脚本用MATLAB写大概长这样% papr_ccdf_sim.m M 256; % 有效子载波数 OSR 4; % 过采样倍数 Nfft M * OSR; % IFFT点数 Nsim 50000; % 统计符号数 papr_dB zeros(1, Nsim); for n 1:Nsim data randi([0 1], M*4, 1); % 16QAM每个符号4bit syms qammod(data, 16, gray, InputType, bit); fx zeros(Nfft, 1); fx(Nfft/2-M/21 : Nfft/2M/2) syms; % 数据映射到中间 tx ifft(fx) * sqrt(Nfft); papr_dB(n) 10*log10(max(abs(tx).^2) / mean(abs(tx).^2)); end % 绘制CCDF th 0:0.1:15; ccdf arrayfun((t) mean(papr_dB t), th); semilogy(th, ccdf); grid on; xlabel(PAPR0 (dB)); ylabel(P(PAPR PAPR0));削波处理的函数写起来也短function tx_clipped clip_signal(tx, papr_target_dB, avg_power) A sqrt(10^(papr_target_dB/10) * avg_power); tx_clipped tx; idx abs(tx) A; tx_clipped(idx) A * exp(1i*angle(tx(idx))); endSLM的仿真也不复杂关键是生成U组相位序列后做U次IFFT并记录最小PAPR对应的索引发送端多两行代码接收端多一步解相位。整套脚本跑下来50000个符号在普通PC上大概几十秒到几分钟足够支撑方案选型。6.2 我的实测CCDF数据以下数据是在上面这套配置下跑50000个16QAM符号统计出来的0.1%概率点上的PAPR数值供参考方案CCDF1e-3 (dB)是否有失真额外复杂度接收端要求原始OFDM11.2无无无削波(7dB)3次迭代滤波8.6有(EVM约3%~5%)低无SLM, U89.1无8次IFFT边带信息PTS, V4, 迭代下降8.9无4次IFFT搜索边带信息DFT-s-OFDM7.8无增加M点DFT无注意这个表是我的个人测试数据具体数值跟过采样倍数、有效子载波位置、调制方式都有关不要把某个数字当成普适结论。比如DFT-s-OFDM在不同子载波分配方式下CCDF的0.1%点能在7dB到8.5dB之间浮动。但它比OFDM低2~3dB这个结论是结构性的很稳。6.3 选型心得和一次ACLR超标的教训如果给一个选型口诀我通常会这么说终端上行优先想DFT-s-OFDM这是零成本结构性收益广播/控制信道对误码率敏感TR或者削波滤波优先因为不要边带信息数据信道有足够计算余量再考虑SLM或PTS但边带信息一定做好保护ISAC或者雷达感知类波形把TR和感知子载波结合是更值得投入的方向。最后分享一个具体教训。以前做一套广播发射链路削波加滤波方案仿真阶段一切正常CCDF、EVM都达标定稿时用的三次迭代。结果整机联调时ACLR总是超了2dB左右怎么调功放都压不下去。后来一步步排查发现是发射链路最后一级滤波器的群时延波动把削波处理掉的峰值又重新“拱”了回来。解决方法是把滤波器带宽稍微放宽同时增加一次削波滤波迭代最终ACLR压下来了代价是EVM多损失了大约0.5%。从那以后我养成了两个习惯一是基带仿真必须把发射端的滤波器响应和群时延波动建模进去只看理想低通滤波不保险二是任何PAPR方案在定稿前至少要在CCDF、EVM、ACLR三张曲线上同时看结果缺哪一项都可能让后续整机联调吃苦头。PAPR问题说到底不是“能不能降”的问题而是“用什么代价降”的问题。每个方案都有自己的甜点位希望这些实践记录能帮你少走一点弯路。
返回列表