CFR信号削峰技术详解:从PAPR到ACPR,提升功放效率的关键
搞通信系统的人迟早都要跟CFR打交道。CFR这三个字母全称是Crest Factor Reduction中文叫信号削峰或者叫峰值因子降低。从名字就能看出来这活儿干的就是把信号的高峰值给“削”下去。我在做基站发射链路调试的时候第一次看到频谱仪上那根高耸的谱线和邻道泄漏的杂散才真正明白为什么每一代通信系统都绕不开这个模块。这篇算是基础篇先把CFR是什么、解决什么问题、核心指标有哪些、以及最常见的几种实现思路讲清楚。1. CFR到底是什么为什么每个基站发射链路都需要它1.1 从功放效率说起信号质量与功耗的死结任何一台发射机最关键的器件就是末端的功率放大器PA。PA要同时干两件事第一把信号放大到足够的发射功率第二尽量不把信号“整坏”也就是保证线性度。但这两件事天然矛盾PA在线性区工作时效率低得可怜一大半的直流功率都变成了热量散发热量只有一小部分变成射频输出功率而一旦你把输入功率推高让PA接近饱和区效率倒是上来了可放大出来的信号就开始出现严重的非线性失真邻道泄漏猛增信号误差向量幅度EVM急剧恶化。那这个矛盾跟信号峰值有什么关系关系大了。现代通信信号尤其是OFDM体制的4G LTE和5G NR信号都是由大量子载波叠加而成的。多个子载波在某一个瞬间相位对齐叠加就会形成一个很高的瞬时峰值。这个峰值的功率比信号的平均功率高出很多。我们用峰均比描述这种现象英文是PAPR。拿一个20MHz带宽的LTE信号举例99.9%概率处的PAPR通常在10到11dB左右也就是说信号峰值功率可以达到平均功率的10倍以上。问题就在这为了保证峰值不被“削平”失真功放必须工作在一个很大的回退状态下也就是把工作点压低留出足够的峰值余量。回退越大功放效率越低。为了放大一个效率很高的信号结果功放本身工作在低效率状态这本身就是巨大的浪费。基站里的功放是大功率器件一个扇区的射频功耗可能高达几十瓦到上百瓦如果效率提升10%整站功耗能省下一大截。CFR就是来解决这个矛盾的在信号进入功放之前先把信号的高峰值压下来降低PAPR缩小峰均比让功放可以更从容地工作在靠近饱和区的位置同时又不至于因为峰值太大而过早失真。我刚接触这个点的时候直观类比就是信号像一辆满载货物的卡车货物顶端有几根特别高的柱子CFR就是把这几个柱子的尖尖锯掉一点让货物整体高度更平均这样卡车功放就能用更小的“余量”稳定跑起来。1.2 CFR在发射链路中的位置和作用在典型的数字发射链路里CFR模块通常放在信源编码和DAC之间具体点说是在基带信号成型滤波之后、数字预失真DPD之前。它的输入是IQ两路数字基带信号输出也是IQ两路数字基带信号核心工作就是把信号的PAPR降下来。之所以放在DPD之前原因是DPD负责对功放的非线性做反向补偿它需要看到的是一个“好处理”的信号。如果信号峰值过高DPD本身的迭代稳定性和收敛精度都会受影响而且CFR削峰产生的误差信号也会跟着DPD一起被放大如果DPD处理不好削峰省的那么一点功率反而会在DPD这一环损失掉。所以CFR和DPD是配合关系CFR先降低信号的峰均比DPD再把功放的线性区“延长”两者一前一后共同保证“高效率低失真”两个目标都能满足。在4G/5G基站里CFR一般有两种形态一种是用专用芯片实现比如很多射频收发芯片或DPD芯片里集成了硬件CFR模块另一种是放在FPGA里用逻辑资源和DSP算法实现软件化CFR。做算法或者做系统集成的工程师接触后者会更多一些。无论哪种形态基本原理都是相通的。我先把这个基本功打牢后面看芯片手册里的寄存器配置、看FPGA里的IP核配置才能知其然也知其所以然。2. CFR要关注的几个核心指标别只看PAPR降了多少2.1 峰均比和CCDF曲线评估信号“峰值特性”的标尺CFR最直接的成效就是信号峰均比的变化。但实际工程里我们很少只说一个简单的PAPR数值而是用CCDF曲线互补累积分布函数来完整描述信号的峰值统计特性。横轴是某个门限相对平均功率的dB数纵轴是“信号功率超过这个门限的概率”。为什么不能只看单个PAPR值因为信号峰值是随机出现的不同概率下的“最大峰值”完全不是一回事。比如某个信号99%概率处的PAPR是8dB而99.999%概率处的PAPR可能是11dB这就意味着每十万个采样点里会有一个瞬时功率比平均功率高11dB的样本。这个高概率尾巴上的峰值才是真正考验后级功放的东西。所以看CFR效果标准动作就是看CCDF曲线。削峰前后对比曲线会明显向左边“塌陷”——同一概率处的PAPR更低了尤其那个高概率处的长尾巴会被压住。曲线压得越低越平坦说明信号峰值被管理得越彻底。同时要注意CCDF曲线在极低概率处的“回弹”也就是高概率处压下去了但极端概率处又冒出来了这种现象往往意味着削峰过程中又产生了新的峰值需要警惕。2.2 频谱模板和ACPR不能让削峰把邻道干扰搞大了削峰的本质是一种非线性操作它对信号做的处理不可避免地会产生额外失真。最直接的后果之一就是频谱再生。因为削峰把信号的瞬时包络强行压缩相当于在时域上对幅度做了非线性处理频域上自然会扩展出新的频率分量。如果这些分量落到相邻信道里就会形成邻道泄漏对应的指标就是ACPR邻信道功率比。ACPR这个指标是发射机硬性要求3GPP规范里对LTE和NR都有明确限值。CFR做得不好最典型的表现就是ACPR恶化。一个写得不讲究的硬削波可以让原本-45dBc以下的ACPR直接恶化成-35甚至-30dBc这在无线接入网里是绝对不能接受的因为相邻信道的用户会被你干扰到。所以在设计和调CFR时削峰门限也好削峰滤波器也好都必须同时考虑频谱约束。基本原理是让削峰生成的误差信号尽量被限制在信号本身带宽内或者按预先设计的频谱模板整形把误差信号的带外分量尽可能地抑制掉。一句话CFR不是光看PAPR降了多少而是要在“PAPR降低幅度”和“ACPR恶化程度”之间取得一个可用的平衡点。这个平衡点说穿了就是系统指标允许你牺牲多少带外性能来换效率。2.3 EVM削峰削得狠了信号质量就毁了除了带外指标CFR对带内信号质量的影响同样致命。EVM误差矢量幅度衡量的是实际信号与理想信号之间的误差大小直接反映解调端能不能正确解码。LTE和NR对EVM的要求相当严格比如64QAM一般是8%256QAM则要控制在3.5%左右5G NR里高阶调制的要求更苛刻。为什么CFR会影响EVM因为削峰不可能只削“峰值”它也会同时给带内信号本身引入失真。你的削峰门限设得越低使劲压峰值信号被“修理”的幅度就越大带内误差自然就大。这是一个绕不开的物理约束任何非线性处理都是对信号的损害CFR只是把这损害控制在系统可容忍的EVM余量之内。因此CFR的本质就是一场精细的权衡游戏。你要在三个约束之间找到交集允许的PAPR降低关乎效率、允许的ACPR恶化关乎合规和干扰、允许的EVM恶化关乎解调质量。这三个约束围出来的区域就是CFR可调参数的有效范围。实际调的时候你会发现门限往下压一点点EVM和ACPR可能就崩了只能慢慢往前试探一点一点找那个临界点。2.4 算法时延和硬件资源CFR不是一个简单的时域限幅它牵涉检测、滤波、迭代、补偿等多个环节这些环节都会引入处理时延。在基站发射链路里时延是全局参数。DPD需要同步对齐输入和反馈信号CFR引入的额外时延如果处理不当会影响DPD的训练和对齐。而且CFR处理多载波聚合信号时还要考虑不同载波之间的时延一致性不能让某个载波比其他载波晚了几十个采样点。硬件资源方面FPGA实现CFR要消耗DSP slice和Block RAM处理多通道信号时资源占用还会成倍上涨。不同CFR算法的资源开销差异很大硬削波几乎不占什么资源但性能很差带限削波算法复杂需要多个滤波器组资源消耗一下子上来。做系统方案选型的时候这是必须考虑的实际因素。3. 主流的CFR实现方法从简单粗暴到精细加工3.1 硬削波Hard Clipping最朴素但副作用也最明显硬削波的做法非常直接设定一个门限电平信号包络超过门限的部分直接砍掉。等效于在时域上对信号乘以一个时变增益函数超过门限的采样点被压缩回门限没超过的采样点原样保留。这个操作在数字域实现简单到令人发指一个比较器加一个乘法器就能跑。但它的代价是削波产生的失真遍布整个频带因为时域的“一刀切”等效于在频域引入了很宽的误差谱带外噪声急剧上升。硬削波对信号包络的瞬间“切硬”也会造成频谱效率的严重下降。所以硬削波很少作为独立的CFR方案在基站里用它更多是作为其他CFR算法的基线参考或者在指标很宽松的场合做个保底方案。3.2 峰值对消法Peak Cancellation工程中应用最广的方案峰值对消法是工程实践中用得最普遍的方法也就是常见Pulse Cancellation方案。它的思路很聪明先检测出信号中超过门限的各个峰值位置和幅度然后为每一个峰值生成一个对应的、经过成形的“削峰脉冲”把这个脉冲从原信号里减掉。由于减掉的这个脉冲的形状和谱特性是预先设计好的所以削峰过程对信号频谱的影响可以有效控制。关键就在那个削峰脉冲的波形上。脉冲必须跟信号本身的频谱特性匹配才能把削峰导致的带外泄漏控制住。最常见的做法是用一个与发射信号同带宽的带限脉冲理想的削峰脉冲形状是sinc函数形式。实际工程里要加窗函数做截断不然无限长的sinc没法实现所以峰值对消法里的滤波器设计是个技术活。实现流程大致是先对信号求模值检测超出预设门限的峰值对每个峰值点计算超出门限的差值根据每个峰值的幅度和位置缩放一个预先设计好的削峰脉冲并把缩放后的脉冲从原信号中减去。这样处理后原峰值的尖尖被脉冲“抵消”掉了。理想情况下只需要减一次峰值就被压到门限以下了。但真实信号中可能有密集出现的峰值前一个峰值削完脉冲的“旁瓣”又会在邻近位置叠出一个新峰值所以实际实现里通常要迭代多次或者用多级级联的结构。关于迭代的细节我放到后面实操部分细讲。3.3 峰值加窗Peak Windowing另一种折中思路峰值加窗法是对硬削波的优化。硬削波是一旦超过门限就一刀切加窗法则是用一条平滑的窗函数曲线去乘信号的包络让包络“柔和地”降到门限附近而不是生硬地切断。这样可以显著减少频谱再生代价是削峰的精度会差一些因为窗函数的下降沿有一定坡度会在门限附近产生一些过冲或回落不彻底的现象。算法上峰值加窗需要计算一个比例因子对于超过门限的采样点用门限除以实际包络值得到该点需要的缩放比例然后把这个比例序列用窗函数平滑一下再把平滑后的缩放系数乘到信号上。这里的“平滑”就是窗函数的作用窗函数形状选得好带外频谱就好选不好效果又退回硬削波。常用窗函数有汉宁窗、高斯窗等窗长决定了平滑的范围和时域失真程度是一个可调参数。峰值加窗的优点是实现复杂度低、时延小、功耗低适合一些对资源敏感的场景缺点是削峰后的PAPR通常比峰值对消法偏高一些。3.4 噪声成形Noise Shaping与更高级的迭代方案噪声成形法是更精细的一类方法。它的核心思想是把削峰造成的误差信号看成“噪声”然后设计一个噪声传递函数把这部分误差“推向”不敏感的区域比如带外或者带内允许的方向。具体做法一般是在峰值对消的基础上增加噪声成形滤波器。先把削峰产生的误差信号分离出来然后让误差信号通过一个滤波器做整形再叠加回信号。这个滤波器的频率响应根据频谱模板设计能够将误差信号集中到指定频段从而规避EVM和ACPR最敏感的频段。在一些CFR IP核里看到的“频谱整形削峰”实质上就是这种原理的实现。高级方案还有基于多次迭代优化的方法每次迭代在时域修正峰值在频域约束频谱模板交替投影。这类算法迭代收敛后能逼近理论最优的CCDF曲线在同等EVM和ACPR约束下能达到更低的PAPR。通常软硬件联合仿真阶段用这类算法做性能评估实际硬件实时处理时受限于时延和资源多数还是采用加窗或峰值对消的优化版本。下面是三种常见方法的一个快速对比方便直观感受差异实现方法核心思路PAPR抑制能力频谱/ACPR影响实现复杂度适用场景硬削波超门限直接限幅很高频谱严重再生极低指标宽松/基线参考峰值加窗平滑系数乘包络中等频谱再生较小低资源敏感/对EVM要求不苛刻峰值对消/噪声成形设计脉冲抵消误差整形高可控按模板整形较高基站等高性能发射机4. 搞CFR必须知道的几个重要细节和工程坑4.1 削峰门限不是越低越好削峰的门限设多少直接决定了功放能拿到多大峰值余量。很多刚接触CFR的工程师容易产生执念拼命想把PAPR压到最低。压到5dB甚至4dB听起来很有成就感但一看EVM3%没了。如果系统要求EVM不超过3.5%余量几乎被吃光了这还没算上DPD误差、射频链路误差、时钟抖动那些预算整个链路稍微有点波动EVM就直接爆表。所以工程上设置门限的首要依据是给后续环节留足余量。比如后级功放允许的输入峰值回退是7dB那么CFR把PAPR压到7.5dB左右就够了没必要为了多压那0.5dB而牺牲EVM和ACPR。每一分“多余的削峰”都是在白白浪费信号质量而它换来的效率提升可能微乎其微。这个观念理顺了再去调参数就不会误入歧途。4.2 削峰后的再增长现象削峰是在基带数字域做的但信号最终要经过DAC、射频调制、功放等一系列环节这些环节都不是理想的无失真链路。DAC的零阶保持效应、抗混叠滤波器的群延迟波动、功放的相位失真都会导致信号包络在某些时刻出现“再增长”也就是削峰压下去的峰值又长回来了。CFR压到7dB经过DAC和射频链路送到功放输入端实际峰值可能在7.5甚至8dB。如果这块余量没预留够功放照样会失真等于削了个寂寞。做系统设计时要么在CFR的门限设置上留出再增长的余量要么在链路里加上针对性的峰均比补偿环节。具体留多少取决于DAC的过采样率、链路的滤波特性、功放的非线性程度。我见过有的系统直接预留1dB左右的余量这是一种稳妥但不那么精细的办法。4.3 多载波和多通道场景下的特殊问题现代基站几乎都是多载波和多通道。如果CFR处理的是多个载波聚合的信号削峰脉冲的带宽必须覆盖所有载波的合成带宽否则某些子载波上的峰值会漏掉。载波之间的相对时延对削峰效果也有影响不同载波数据通过不同路径到达CFR模块时如果时延不一致会导致合成信号包络严重失真。多通道比如Massive MIMO的32通道、64通道发射机里每个通道都有独立的发射链路如果每个通道各自独立做CFR各通道的削峰噪声是互不相关的在波束赋形方向上不会叠加但通道间的一致性要求就更难保证。如果各通道共用同一个CFR参数或者共享削峰误差信号可以改善一致性但对硬件同步设计提出了很高要求。这一块在4G时代还没那么凸显到了5G大规模天线系统里就变成必须仔细考量的关键点了。4.4 与DPD的配合关系CFR和DPD是一前一后的搭档。CFR先削峰DPD再矫正功放非线性。CFR造成的带内失真DPD理论上也能矫正一部分但DPD主要针对的是功放的非线性特性不是信号的任意失真。如果CFR把EVM吃掉了2%剩下的EVM预算给DPD不切实际DPD能修正的EVM通常也是有限的。所以做整机联调时CFR和DPD要放在一起调看联合效果而不是各自单测都优秀就万事大吉。实际操作中一个比较常见的坑是DPD对削峰后信号的适应性问题。有些DPD算法对信号的幅度统计特性比较敏感CFR把信号的PAPR压得很低之后DPD的建模效果反而会变差因为它见过的训练信号“峰值多样性”不够了。这时候要反过来适当放宽CFR的削峰强度用牺牲一点效率来换取DPD的收敛和稳定。这种CFR和DPD之间的相互牵制在联合调试时几乎必然遇到。4.5 标准合规ACPR、PAPR、时延指标要一起过最后提醒一点任何CFR方案单独说性能多好都没意义必须把整套发射机拉到协议标准的框架下去验证。3GPP对不同带宽配置、不同调制阶数、不同频段都有明确的ACPR限值EVM限值也有严格表格。CFR的设计和调试从一开始就要把标准指标当成硬约束在满足这些硬约束的前提下再追求提高效率、降低功耗。否则方案做得再漂亮指标过不了标准也是白费。比如5G NR里不同子载波间隔、不同信道带宽下的ACPR测量带宽和偏移位置不一样CFR的频谱整形设计需要针对实际的频谱模板来做不能拿一个模板打天下。这也是为什么那些用FPGA做CFR的团队经常需要预留一些滤波器的可配置参数方便适配不同运营商、不同频段、不同带宽的场景。5. 一次CFR联调的真实体验从指标崩溃到收敛的调试过程5.1 我遇到的一次典型EVM和ACPR双恶化讲一个我实际调试中遇到的例子。某一次项目联调设备在实验室单测时各项指标都还行一旦接到真实负载环境ACPR突然从-48dBc恶化到-38dBcEVM也从2.5%飙到5.5%双双不达标。第一反应是怀疑功放有问题但换了功放后结果依旧。后来测试锁定在CFR环节把CFR功能关掉后ACPR恢复到-46dBcEVM回到2.2%基本排除功放问题。问题果然出在CFR跟其他模块的交互上。我当时的排查思路是先确认CFR的削峰量到底有多狠再看看削峰误差信号有没有被后面链路异常放大。最后定位到是CFR模块里的削峰脉冲滤波器系数跟整条链路的群延迟特性不匹配削峰脉冲的旁瓣刚好落在信号带外的敏感频段和射频链路的非线性相互作用把带外杂散放大了。后来重新设计了削峰脉冲的频谱整形滤波器把旁瓣抑制再压低了一截ACPR和EVM才双双回到指标以内。5.2 调试顺序和工具建议CFR调试必须有一个清晰的顺序否则面对一堆耦合的关联参数容易越调越乱。我一般按这个顺序来第一步先在纯数字仿真环境里验证CFR算法的频谱模板是否达标。用Matlab或Python生成标准测试激励跑CFR模型看CCDF曲线、ACPR和EVM确认算法层面没有问题。第二步上FPGA或芯片接信号发生器产生标准信号经过CFR后直接看输出的频谱和EVM。这一步先把CFR单独隔离开来验证不接功放和射频链路。第三步接上射频链路但不开启DPD确认CFR射频链路联合工作正常确认再增长现象是否被控制在预期范围内必要时调整门限余量。第四步开启DPD做CFRDPD功放的联合调测。这一阶段通常需要来回调整CFR门限和DPD系数把ACPR和EVM调到最优平衡。工具方面频谱仪看ACPR矢量信号分析仪看EVM和CCDFFPGA里的在线逻辑分析仪抓削峰前后的IQ数据做离线对比。这三样是最基本的“三件套”。如果调试中遇到削峰脉冲滤波器系数问题每次改完都要重新抓数据回放一遍确认时域波形和频域谱都干净。5.3 几个可以抄的“避坑”经验关于CFR的调试我踩过不少坑在这里总结几个特别有代表性的第一个CCDF曲线看概率时要看准位置99.9%和99.99%处的表现可能差异很大。有些CFR方案会把99.9%处做得很好但99.99%处出现明显的上翘尾巴在功放的深度饱和区造成偶发失真。调的时候要保证目标概率点都要达标不能只看某一个点。第二个按削峰门限上留出来的余量不要在理想条件下卡得刚刚好。理想环境里一切正常但温度变化、驻波变化、功放老化后再增长量和非线性都会偏移门限的余量就是你应对这些偏移的安全垫。宁可让PAPR稍微高一点也要保住EVM和ACPR的可靠性。第三个CFR的增益补偿要小心。削峰操作本质上是在“降低”信号的平均功率或峰值功率如果不做增益补偿削峰前后信号功率会不一致导致后级功放的激励电平变化发射功率不准。补偿增益的计算要用信号有效值来算不是简单地用峰值差去补。如果补偿增益设得过大又可能造成新的数字削顶形成“补偿后重新超门限”的怪圈。第四个做多通道系统时CFR模块的复位和启动时序要同步。如果不同通道在不同时刻开始削峰会在起始瞬间产生很大的通道间相位差造成波束指向错误或杂散。这一块虽然不起眼但在大规模天线系统里出现概率极高。最后分享一点心得CFR这个东西说简单可以很简单不就是限幅和滤波嘛说复杂也真的复杂牵涉信号统计特性、系统指标预算、数字滤波设计、射频链路非线性、多通道一致性、协议合规要求哪一个环节考虑不到位都会在实际指标上还账。我个人做下来最大的体会是CFR从来不是孤立优化的它不是把一个信号PAPR压得越低越好而是要放到完整发射链路里去寻找平衡点。每一次调CFR参数本质上都是在系统预算的各个项之间做权衡这比单看某一个指标有意义得多。如果你刚开始接触这个方向建议先把本文里的基础概念吃透然后找一个信号仿真工具自己生成一个OFDM信号分别用硬削波和峰值对消处理一下亲眼看看时域波形和频域谱的变化很快就能建立起直观感觉。下一篇我们找时间展开讲峰值对消法的滤波器设计和参数计算以及多级CFR的具体实现细节。