1. 从频谱效率说起:OFDM为什么让人又爱又恨
做通信物理层的人,大概率都绕不开OFDM。从4G LTE、5G NR到WiFi 6/7,OFDM几乎是所有宽带无线系统的默认选择。原因倒也不复杂:它把宽带频率选择性信道拆成一组窄带平坦子信道,用循环前缀吸收多径时延扩展,均衡复杂度从时域抽头均衡降到了每个子载波上一次复数乘法。这个设计思路,让MIMO、自适应调制、频域调度全部变得可行。
但有一个问题,从OFDM被提出那天起就一直戳着系统设计者的肺管子——高峰均功率比,也就是PAPR。
OFDM信号是大量独立子载波在时域直接叠加的结果。当多个子载波同相或者接近同相时,时域包络的瞬时功率会远高于平均功率。这个峰值到底能高到什么程度?子载波数越多,被“叠加”出来的峰值越容易出现极端值,理论上最坏情况下峰值功率是平均功率的N倍(N是子载波数)。哪怕走统计规律,CCDF(互补累计分布函数)在1e-3量级上也能看到8到11dB的峰均比,随子载波数和过采样因子变化。一个10dB的PAPR意味着什么?发射机的功率放大器必须有足够大的回退来保证峰值不进入饱和区,回退10dB等于发射功率白白损失90%。这对基站端意味着功放成本急剧上升,对终端意味着续航和散热压力,对物联网这种对功耗极其敏感的场合更是近乎不可接受。
所以,如何在尽量不损失频谱效率和误码性能的前提下压低PAPR,是OFDM系统从仿真到落地绕不开的一道坎。这篇文章把我这段时间做PAPR抑制方案选型和仿真的完整思路整理出来,包括原理、仿真建模、参数权衡和工程实现里的坑,希望能给正在做类似工作的朋友一点参考。
2. 为什么多载波叠加会造出“高尖峰”:PAPR的数学本质
2.1 定义:PAPR到底在描述什么
先看最基础的表达式。OFDM时域复信号可以写成:
x(t) = (1/√N) · Σ X(k) · e^(j2πkΔf·t),k = 0, 1, ..., N-1
其中N是子载波数,X(k)是第k个子载波上的调制符号,Δf是子载波间隔。PAPR的定义是:
PAPR = 峰值功率 / 平均功率 = max|x(t)|² / E[|x(t)|²]
通常用dB来表示,也就是10·log10(PAPR)。需要注意一个细节:这里的x(t)是模拟连续信号,但仿真和数字实现里我们拿到的是采样点,如果直接用Nyquist速率采样,采样点未必落在真正的包络峰值上,测出来的PAPR会比真实的连续信号偏低。处理办法是用过采样——倍数一般取4,把IFFT尺寸也放大4倍,让采样点更接近模拟峰值。这个细节后面仿真章节还会展开。
举个直观的例子帮助理解:假设所有子载波上的符号都是完全相同的相位,那么在t=0附近所有分量同相叠加,包络的峰值就是N倍个子载波幅度的算术叠加,峰值功率可以高达N²倍单个子载波功率,而平均功率是N倍,于是PAPR=N倍,也就是10log10(N) dB。64个子载波就是18dB,254个子载波就是24dB。当然,真正调制数据是随机且独立分布的,所以实际出现的峰值不像最坏情况那么夸张,但偶尔来一次尖峰也够功放喝一壶了。
2.2 中心极限定理:OFDM信号为什么接近高斯分布
OFDM时域信号是大量独立同分布随机变量(频域的调制符号)经过IFFT变换得到的线性组合。根据中心极限定理,当子载波数足够大(比如超过64)时,时域实部x和虚部y都会趋近于高斯分布,幅度|x|趋近于瑞利分布,功率则接近指数分布。
这个高斯化趋势直接决定了PAPR的统计特性。如果时域信号是复高斯过程,那么功率服从均值为σ²的指数分布,瞬时功率超过某个门限P₀的概率是exp(-P₀/σ²)。这也就意味着极端高峰值出现的概率虽然不高,但绝不会消失,而且随着子载波数量增大,PAPR的CCDF曲线会越来越“稳定”,比如说CCDF=1e-4对应的PAPR值基本锁定在10.5dB附近,64子载波以后再加子载波也改善不了太多。这解释了为什么题设里说PAPR是系统固有挑战——只要用多载波调制,这事就躲不掉。
2.3 三个连锁影响:功放效率、星座畸变与带外辐射
PAPR高的直接恶果体现在三个层面。
第一,功放效率。线性功放在线性区输出时效率一般很低,通常只有20%到30%左右。为了容纳高峰值,我们不得不降低平均输出功率,即“功率回退”。回退量越大,功放平均工作效率越低,系统功耗越大,散热压力也越大。对基站来说多掏电费,对手机来说缩短续航,对上行物联网终端来说甚至直接决定了电池寿命。
第二,信号失真。如果回退不足、峰值进入功放饱和区,会产生三阶或更高阶的交调失真,星座点被压缩变形,接收端EVM(误差向量幅度)飙升,误码率随之劣化。
第三,带外辐射和邻道干扰。非线性失真会产生频谱扩展,发射信号在相邻信道产生泄漏,导致系统无法满足频谱模板(Spectral Emission Mask)要求。这个问题在OFDM系统里尤其麻烦,因为OFDM本身频谱边瓣衰减就慢。
所以,所有PAPR抑制方案本质上都是在回答同一个问题:怎么把信号从“高鲁棒但低效率”的边界拉回来,工程上我们真正要的不是把PAPR压到某个绝对数值,而是在系统效率、误码性能和实现复杂度三者之间找一个各方都能接受的平衡点。
3. 四类降低PAPR的主流思路:失真类、加扰类、预编码类与预留类
3.1 失真类:限幅滤波与压缩扩张
最直观的做法就是“削峰”。既然OFDM信号的峰值是叠加出来的,那直接把超过门限的时域幅度削掉不就行了?限幅(Clipping)操作如下:
x_clip(n) = x(n),当 |x(n)| ≤ A;否则 A · e^(j·arg(x(n)))
门限A通常结合目标的PAPR来设置,比如希望PAPR控制在7dB,门限幅度对应的功率就是平均功率乘以10^(7/10)。限幅的本质是把幅度高于门限的样本暴力拉回门限,幅度失真直接表现为噪声,这个噪声近似均匀地散布在带内和带外。这就是为什么限幅必须配合滤波:先用FFT把削峰后的信号变换到频域,把带外子载波清零,再IFFT回时域。但滤完波之后,原先被压下去的峰值可能又长回来一点,所以工程上通常做迭代限幅滤波,一般两三轮迭代后峰值回涨就明显收窄了。
限幅的一个麻烦是:它会把失真摊到所有子载波上。即便滤波只做带外清零,带内噪声依然是随机叠加在所有数据子载波上的,这直接抬高了整体的误码底噪。好在OFDM对这种均匀噪声还算宽容,只要限幅门限设置得当,带来的信噪比损失可以控制在零点几dB以内。
压缩扩张(Companding)是另一种失真类方案,它在发端对时域信号做非线性压缩,在收端做对应的扩张还原。经典的做法是μ律压扩,想法来自语音压缩:对小幅度信号保持相对增益高、对大幅度信号压低增益。这样整个信号的动态范围被压缩了,PAPR自然下降。但对称的问题是:压扩改变了信号统计分布,也会引入非线性失真,而且收端需要准确知道压扩参数,否则解调性能会劣化。
失真类方案的共同问题是:它们不保证PAPR被压到某个严格理论下限,且优化的是“统计意义上”的PAPR,个别极端峰值的出现概率可能仍然存在。优势则是实现简单、时延低、不占用额外频带,且对当前规范(比如3GPP物理层结构)完全透明,不需要改帧结构或者发端对收端的显式通知。
3.2 概率类:SLM与PTS,用随机相位打散峰值
概率类方案的核心思路是“不直接把峰值砍掉,而是让极端峰值尽量不出现”。
选择性映射(Selected Mapping,SLM)的做法很简单:发端用U组不同的随机相位序列对频域符号X(k)做逐子载波加扰,生成U组相位旋转后的候选频域序列X(u)(k) = X(k)·e^(jφ(u)(k)),对U组序列各自做IFFT,选择PAPR最低的那组送出发送。收端需要知道用的是哪一组相位序列才能正确解调,所以这个序号必须作为边带信息(Side Information, SI)发送。SLM能把PAPR的CCDF曲线显著左移,移多少取决于候选序列数U,U越大效果越好,但计算量线性增长——每一组候选都要做一次IFFT,发端复杂度就是U倍。
部分传输序列(Partial Transmit Sequence,PTS)思路稍有不同。把N个子载波分成V个子块(每个子块包含M=N/V个子载波,可以相邻分块也可以交织分块),对每个子块独立做IFFT得到时域子块序列x_v(n),然后对每个子块乘一个旋转因子b_v ∈ {±1, ±j}(常见四选一),加权求和得到候选信号:
x'(n) = Σ b_v · x_v(n),v = 0, ..., V-1
优化目标就是寻找一组b_v让x'(n)的PAPR最小。PTS的搜索复杂度是4^(V-1)(一般固定第一个子块的因子为1,减少搜索空间),V比较小时(比如4个子块)穷举搜索成本还可以接受,V变大后就要用智能搜索算法来逼近最优值了。PTS的好处是:直接以最小时域峰值为目标做优化,找到的解统计上比SLM更“紧”,同时旋转因子数量有限,边带信息开销比SLM小。坏处是计算量大,需要缓存V组时域子块信号,存储开销也不小。
概率类方案定位在“PAPR统计特性改善”,理论上不影响误码性能和频谱形状,因为所有候选信号都没有失真,只是被挑选的低PAPR信号有可能在星座映射上发生整体旋转而导致检测模糊——SLM对每根子载波独立旋转,收端必须知道精确的相位序列;PTS是整块旋转,只要块内相对相位不变,收端即使旋转模糊也只体现在整体载波相位上。两者都有边带传输需求,一旦边带信息传错,整个符号的数据就会全部解错,这是概率类方案一个非常现实的工程痛点。
3.3 预编码类:DFT扩频为什么能压峰
预编码方案是从根源上改变输入到IFFT的符号分布结构,最典型的是DFT扩频OFDM(DFT-s-OFDM),也是LTE上行选定波形。它的思路非常直接:先对M个QAM符号做一次M点的DFT,把原来均匀分布的星座符号变成频域样值,然后再映射到M个子载波上做常规IFFT。经过DFT扩频后,送入IFFT的“频域”数据不再是独立均匀的星座符号,而是有着类脉冲形状分布的样值序列,多个子载波的叠加相关性变强,时域信号的包络就不再遵循纯高斯统计,PAPR大幅下降。在LTE做上行单天线仿真时,DFT-s-OFDM的PAPR比CP-OFDM通常低3~6dB,具体取决于调制阶数和频域资源分配方式。
除了DFT扩频以外,还有基于离散余弦变换(DCT)和离散Hartley变换等正交变换的预编码方案。这些变换的共同点是把常规星座符号矩阵变换成一种能量分布更集中的“等效频域符号”,从而平滑IFFT输入。预编码类方案最大优势是无失真、无迭代、不需要边带信息、对收端完全透明(收端只需在解调前做对应的逆变换),非常适合上行链路和低功耗设备。但它有一个前提代价:频域上调度的灵活性受损。DFT扩频通常会强制连续频域资源分配,这对频选调度和MIMO的某些传输模式不那么友好——这也是为什么5G NR的下行依然坚定使用纯CP-OFDM,而上行在Cube-PreDFT之外仍保留DFT-s-OFDM供覆盖受限场景使用。
3.4 预留类(Tone Reservation):拿空子载波换头空域
预留载波法(Tone Reservation,TR)的思路也很独特:既然峰值是多个子载波同相叠加的结果,那我就拿出一部分子载波专门用于“发一个抵消信号”,用抵消信号的波形去对消数据的峰值。被预留出来的子载波不传数据,只传为削峰设计的信号,从而避免数据失真。
TR的数学模型是这样的:把N个子载波集合分为数据子载波集合D和预留子载波集合R(两者不相交),发端用R集合上的值生成一个时域“削峰信号”c(n),叠加到原始OFDM信号上得到x(n)+c(n)。目标是在峰值的时刻,c(n)的取值恰好与x(n)方向相反、幅度足够抵消超出门限的部分。因为c(n)只在R集合上有非零频域值,所以它不影响D集合的数据,收端正常解调时把R集合上的信号丢弃即可,完全不需要边带信息。
TR的主要开销是牺牲频带资源——预留的那部分子载波不传数据,频谱效率降低约|R|/N。此外,为了生成理想的抵消信号,一般需要迭代优化(比如伸缩投影算法、梯度投影GP算法),计算量随预留子载波数和迭代次数增长。优点是它保持了“无损”特性,适合对误码性能要求极高的场景,以及需要严格保证收发透明性的标准化链路。
TR方案在5G NR里还有实际应用的影子——NR里用来压低PAPR的“Peak Cancellation Crest Factor Reduction”(PC-CFR)思路其实和TR思想同源,只是不一定采用固定预留子载波结构,而是在频谱空余处注入抵消分量。
3.5 一个简单的对比视角
把上面各类方案放到天平上,大概可以这样归纳:
| 方案 | 原理类别 | PAPR改善 | 失真代价 | 复杂度 | 边带/开销 | 典型场景 |
|---|---|---|---|---|---|---|
| 限幅+滤波 | 失真 | 强(可迭代压低至目标) | 有(带内噪声+带外再辐射) | 低–中 | 无 | 要求极低复杂度、对EVM有容忍的场景 |
| 压扩(μ律等) | 失真 | 中 | 有(统计分布非线性) | 低 | 无 | 需求简单、对带外抑制不敏感时 |
| SLM | 概率 | 中–强 | 无失真 | 高(U次IFFT) | 有(相位序号) | 对误码敏感、兼顾PAPR时 |
| PTS | 概率 | 强(块数增多更优) | 无失真 | 高(子块IFFT+搜索) | 有(旋转因子) | 高指标要求、算力充足时 |
| DFT-s-OFDM | 预编码 | 中–强 | 无 | 低–中(多一次DFT) | 无 | 上行覆盖受限、低功耗链路 |
| TR | 预留 | 强 | 无 | 中–高(迭代优化) | 频带开销(无SI) | 需要严格透明性、频谱富余时 |
从这个表能看出来,PAPR压制是一个资源交换问题:要么牺牲一点频谱效率,要么牺牲一点计算复杂度,要么牺牲一点误码性能。工程方案选型本质上是根据系统约束在这些维度里做权衡。
4. MATLAB仿真:一次完整的PAPR抑制建模过程
4.1 仿真框架怎么搭
我建议仿真链路按如下顺序组织,这个框架既能做基准对比,也能扩展不同抑制算法:
- 生成随机数据比特,映射成QAM符号(16QAM或64QAM都行,注意阶数越高PAPR对幅度失真越敏感)。
- 做子载波映射:数据符号填入对应子载波,空子载波填零(包含直流和边缘保护带),这里要注意保护带占比会影响PAPR统计值。
- 做N_fft点的IFFT。这里特别提醒:为了精确评估PAPR,一定要把过采样因子L设成4。具体做法是,IFFT尺寸取N_fft = L × N_active(至少大于等于2^ceil(log2(L×N))),在频域把数据符号放在[1 : N/2]和[N-N/2+1 : N]的位置,中间补零。这样IFFT输出的采样间隔更密,能捕捉到真正接近模拟包络峰值的点。
- 对生成的时域符号块计算PAPR,多次Monte Carlo仿真(比如1e5个符号)后统计CCDF曲线。
- 分别接入目标抑制算法,重复统计,绘制CCDF对比图。
- 需要看误码率影响的话,再级联一个AWGN信道和标准OFDM解调链路,对比加了抑制算法前后的BER曲线。
4.2 关键仿真参数一例
以一个常见配置为例,把这些参数直接写在表里,方便复现:
| 参数 | 取值 | 说明 |
|---|---|---|
| 子载波总数 N | 1024 | 其中数据子载波 768,导频和空子载波 256 |
| 调制方式 | 16QAM | 星座功率归一化为1 |
| IFFT尺寸 N_fft | 4096 | 过采样率 L=4 |
| 符号数(CCDF统计) | 1e5 | 保证CCDF到1e-4量级平滑 |
| 限幅门限 A | 按目标PAPR反推 | 幅度门限 = sqrt(10^(CL_dB/10) × P_avg) |
| PTS子块数 V | 4 | 相位因子集合 {±1, ±j} |
| PTS搜索 | 穷举4^(V-1)=64次 | 固定第一个子块因子为1 |
先跑一个没有任何抑制的基准:CCDF曲线在1e-3位置给出PAPR大约在10.8dB左右(16QAM、1024子载波、过采样4倍),这和理论预期基本一致。然后分别看三种方案的改善情况。
4.3 限幅方案的MATLAB核心代码
限幅的实现很简单,但有几个小细节容易踩坑。第一个是门限的归一化——必须先把IFFT输出按平均功率归一化(即乘以1/sqrt(mean(abs(x).^2))),才能直接用幅度门限做比较;第二个是限幅后滤波,要保留带内信号,把带外置零,再把IFFT回来;第三个是迭代——一般做两轮就够,用户可自行调节。
function [x_clipped, papr] = clip_and_filter(x, CL_dB, N_fft, active_idx) % x: 时域OFDM符号块 (向量,长度N_fft) % CL_dB: 目标限幅门限(dB) % active_idx: 活动子载波频域索引(保护带之外的索引) P_avg = mean(abs(x).^2); A = sqrt(10^(CL_dB/10) * P_avg); % 归一化幅度限幅 amp = abs(x); x_clipped = x; peak_mask = amp > A; x_clipped(peak_mask) = A * exp(1i * angle(x(peak_mask))); % 频域滤波,清理带外 X_f = fft(x_clipped, N_fft); X_f(setdiff(1:N_fft, active_idx)) = 0; x_clipped = ifft(X_f, N_fft); % 重新计算实际PAPR papr = 10*log10(max(abs(x_clipped).^2) / mean(abs(x_clipped).^2)); end这段代码的坑在于:滤波后峰值会回涨,所以单次限幅滤波的最终PAPR往往比目标门限高1~2dB。最稳妥的做法是包一层迭代循环,每次把滤波后的信号作为输入再次限幅滤波,通常三轮内部迭代能把实际PAPR拉回到目标门限附近,代价是带内失真噪声会随迭代次数增加而缓慢增长。
4.4 PTS方案的MATLAB核心代码
PTS的实现分三步:分块、子块IFFT、穷举搜索。这里的关键是子块划分的索引映射要正确,否则频谱会错乱。
function [x_pts, idx_best] = pts_optimize(X_freq, V, N_fft, phase_set) % X_freq: 频域符号向量(长度 N_fft,IFFT输入) % V: 子块数 % phase_set: 候选相位集合,如 [1, -1, 1i, -1i] M = length(X_freq) / V; % 每个子块包含的子载波数 x_blocks = zeros(N_fft, V); for v = 1:V % 取第v子块频域数据(相邻分块) mask = zeros(size(X_freq)); idx_v = (v-1)*M + 1 : v*M; mask(idx_v) = X_freq(idx_v); x_blocks(:, v) = ifft(mask, N_fft); end % 遍历所有相位组合(固定第一个为1,避免整体旋转模糊) combs = phase_set(2:end); % 这里假设phase_set第一个是1 search_space = length(phase_set) ^ (V-1); papr_best = inf; idx_best = []; for k = 0 : search_space-1 b = zeros(1, V); b(1) = 1; tmp = k; for v = 2:V b(v) = phase_set(mod(tmp, length(phase_set)) + 1); tmp = floor(tmp / length(phase_set)); end x_cand = sum(x_blocks .* b, 2); papr_cand = 10*log10(max(abs(x_cand).^2) / mean(abs(x_cand).^2)); if papr_cand < papr_best papr_best = papr_cand; idx_best = b; end end x_pts = sum(x_blocks .* idx_best, 2); end要注意PTS的PAPR统计基准是“未旋转的原始信号PAPR分布分布”,因为每个子块都乘了单位模相位,平均功率不变,所以可以直接以最小化峰值功率为目标。实测4个子块、相位集合{±1,±j}的配置在16QAM下能把1e-3概率处的PAPR从10.5dB压到7.2dB左右,效果非常明显。
4.5 仿真结果解读:CCDF曲线怎么看
CCDF曲线是PAPR评估的标准工具。横轴是PAPR门限值(dB),纵轴是“PAPR超过横轴门限的概率”,一般用对数坐标。举个例子:基准OFDM在CCDF=1e-3处PAPR=10.8dB,意思是每1000个OFDM符号里大约有1个符号的PAPR会超过10.8dB。
加限幅门限CL=7dB后,CCDF曲线会明显左移,1e-3处大约落在7.5dB左右,而且曲线会出现一个“弯折”,弯折位置大约就在门限附近——因为超过门限的部分被强制按门限削了,统计上超过该门限的概率会急剧下降,但滤波后回涨又让曲线无法完全贴合门限。PTS的曲线整体左移,形态和基准确曲线比较相似,没有弯折痕迹,说明它没有破坏信号的统计分布。DFT-s-OFDM的曲线则整体左移6dB左右,曲线形态更“陡”,说明大峰值出现概率更小。
建议做仿真时把三种方案画在同一张图上,纵轴取10^0到10^-4,横轴取0到14dB,这样对比一目了然。严格意义上讲,如果只报告一个数字(比如“PAPR降低了5dB”),必须说明是哪个概率点上的对比,因为不同方案可能在不同概率区间表现差异很大。我自己习惯同时对比CCDF=1e-3和CCDF=1e-4两个点,这样更稳妥。
5. 工程落地:从MATLAB到真实发射链路必须面对的现实
5.1 功放的非线性模型与回退的再确认
仿真里PAPR抑制算法效果好,接入真实功放链路后效果可能打折扣。真实功放不是简单的“削顶”,它的AM-AM和AM-PM特性很复杂,饱和区附近不仅幅度被压缩,相位也会被推移。常见建模有Rapp模型(只模拟AM-AM)和记忆多项式模型(带记忆效应),做系统级验证时至少用Rapp模型跑一遍,确认算法在功放非线性下的增益依然存在,否则容易犯“仿真很完美、实机翻车”的毛病。
最直接的方法是:先测无抑制时功放的ACLR(邻道泄漏比)和EVM,再分别接入限幅和PTS方案,看同样的指标。我踩过的一个坑是:限幅方案在仿真里PAPR压得很好,但接入功放后ACLR反而变差了——原因在于限幅产生的失真噪声与功放非线性失真叠加,产生了比单纯功放失真更严重的频谱再生。这种情况下需要重新调整限幅门限或增加迭代滤波,找到EVM和ACLR的平衡点。
5.2 带外泄漏与频谱模板:失真类方案必须补的课
失真类方案引入的噪声不只在带内,带外也会有频谱扩展。3GPP对发射频谱模板有严格定义,比如在载波边缘偏移10MHz处,带外泄漏必须低于某个阈值。限幅滤波虽然做了带外清零,但因为滤波后被削的峰值“回涨”,迭代限幅后带外辐射依然可能超出模板。工程上常用做法是加一个时域的脉冲窗函数,在时域上对削峰后的残余峰值做平滑整形,可以有效把带外辐射再压低一些,代价是波形在小范围内有轻微畸变。
这部分经验是传统教科书不会展开写的。仿真里我们往往只关注PAPR和BER,但在真实系统中,频谱模板是否满足、对邻道的干扰是否可接受,才是算法能否被接受的前提。
5.3 边带信息的传输与保护:概率类方案的阿喀琉斯之踵
SLM和PTS在仿真里是理想信道传边带信息的,可真实系统中边带信息本身也要占用比特资源并可能传错。边带传错意味着收端用了错误的相位序列/旋转因子去解调,整包数据直接废掉。PTS的旋转因子信息量不大(V=4、4个相位集合时只有4比特),一般做法是加CRC保护或者做信道编码,这会额外占用控制信道资源。
更隐蔽的问题是:PTS的旋转因子集合在设计时若不注意,会产生星座整体旋转模糊。比如旋转因子中包含j(90度旋转)时,QAM符号会被按90度旋转,收端如果不做差分处理或不知道确切旋转量,判决就会整体错掉。所以实用化时通常把第一个子块因子固定为1,剩余的相位搜索范围也尽量局限在保证整体星座不发生旋转模糊的集合内,或者用导频辅助做相位估计,在接收端把整体旋转恢复出来。
5.4 DFT-s-OFDM的上行适配:频域资源分配限制
DFT-s-OFDM的PAPR优势非常吸引人,但引入预设的频域资源分配方案后,它的调度灵活性确实受限。5G NR里DFT-s-OFDM有两种映射方式:集中式映射要求分配的PRB必须是连续的,交织式映射虽然支持离散PRB,却需要引入额外的频谱成形,PAPR还会略微回升。在做上行链路设计时,如果既想用DFT-s-OFDM的PAPR增益,又想保留频选调度的灵活性,通常需要在系统仿真中做联合优化——把调度器、功放回退和PAPR抑制一起纳入端到端评估,而不是单独比较各波形的PAPR曲线。
终端侧的感受会更直接:采用DFT-s-OFDM波形后,同样的发射功率可以选更小回退的功放,功放效率从20%提到30%以上,待机电流明显下降。如果做的是低功耗物联网或卫星终端这类对功耗极其敏感的产品,DFT-s-OFDM几乎是标配选择。
5.5 从浮点到定点:硬件实现的量化与精度
MATLAB仿真全是浮点运算,而FPGA或ASIC实现要转定点。PAPR抑制算法对量化误差特别敏感,尤其是限幅门限和PTS旋转因子的量化——门限量化偏差0.1dB都会让CCDF曲线产生可见偏移。我做定点化时发现,IFFT输出的信号动态范围如果按16bit定标,限幅门限至少要保留3bit小数精度,否则同一门限条件下PAPR会恶化0.3dB以上。PTS的相位因子本身在{±1,±j}里是精确的,量化误差主要来自子块IFFT的中间结果截位,建议在IFFT前先将子块数据做块浮点或满幅定标,降低固定点溢出风险。
6. 仿真与实测中的高频Bug排查记录
6.1 CCDF曲线在低概率区域抖动
跑1e5个符号时,CCDF曲线在1e-4附近往往毛刺很多,不够平滑。这是正常的统计涨落——1e-5概率的事件在1e5样本里平均只出现1次,根本测不准。解决方法是扩大符号数量到1e6,或者用分段平均/批处理的方式做平滑估计。另一点要注意的是,如果信号的过采样因子不一致,对比曲线没有意义——过采样率为1时测出的PAPR会明显低于4倍过采样,这一点最容易踩。
6.2 限幅滤波后峰值回涨超出预期
限幅滤波是单次操作时,回涨幅度通常在1~2dB之间。如果回涨超过3dB,多半是门限计算出了问题——比如平均功率P_avg用了限幅前的信号算,但限幅后平均功率其实下降了,导致相对PAPR偏高;或者滤波时把不该清零的子载波也清了(保护带索引没配对)。还有个容易被忽略的点:滤波本身会引入一定时间扩展,让时域波形“变胖”,这也会让峰值位置移动。建议每次迭代后都重新计算P_avg,并以最新P_avg为基准设置门限。
6.3 PTS搜索空间爆炸
V=8个子块、四相位集合时,穷举指数是4^7=16384次,每次都要做V次IFFT和一次候选叠加,跑起来非常慢。工程上常用两种近似方法:一种是迭代PTS(IPTS),一次优化一个子块的相位因子,固定其他子块,轮流扫描几轮后收敛;另一种是用遗传算法或粒子群在相位组合空间里做快速搜索。实测下来,迭代PTS在V=8时大约用1/4的穷举计算量就能达到接近穷举的性能,适合实时性要求高的场景。
6.4 方案对比时误码率反而变差
做了抑制方案但BER比基准差,要分情况判断:限幅和压扩引入失真,BER劣化是预期中的;SLM、PTS、DFT-s-OFDM和TR理论上不应产生BER劣化。如果这些“无损”方案BER也变差了,十有八九是边带信息实现错误,或者PTS旋转因子导致星座旋转没被收端修正。排查建议是先关掉信道,直通测试解调星座图,确认星座点是否与发送端一致;再加噪声信道测试,逐级定位问题。
7. 方案选型的一些个人体会
做了几轮PAPR抑制方案的仿真和实测对比之后,我自己的判断是:不存在一个“所有场景都最优”的方案,但选型有一条比较稳的路径可以走。
第一,如果你做的是功耗敏感的终端或上行链路,优先考虑DFT-s-OFDM或类预编码方案。它在无失真、无边带的条件下把PAPR压得非常扎实,代价仅是频域调度灵活性的牺牲,而这个牺牲在上行覆盖受限场景里往往是值得的。
第二,如果系统对误码性能极其敏感、又不允许边带开销,TR值得认真考虑。预留子载波造成的频谱效率损失通常能控制在5%以内,换来的是完全透明的收发链路和无失真叠加。
第三,如果系统算力充足、允许边带开销,并且需要留出一定余量应对功放老化和温度漂移,PTS是综合性能最好的选择之一。它的PAPR压制效果好、无失真、灵活度大(子块数和相位集合都能调),代价是搜索复杂度和边带保护都要花钱。
第四,限幅类方案虽然“粗暴”,但在很多商业基站的CFR模块里其实依然在用。差别在于,实际产品里几乎没人做“先限幅再IFFT”这种幼稚操作,而是做自适应门限跟踪和多级限幅整形,用复杂度换性能。如果工程周期紧、系统对EVM容忍度高,限幅类方案仍然是快速落地的首选。
最后想说的是,PAPR这个指标本身不该是唯一目标。一个信号处理方案好不好的最终判据,是它在真实功放面前、在真实信道条件下,能不能让系统在满足EVMs、ACLR和省电指标三者同时达标的区间里可靠工作。仿真的价值在于把选择空间看清楚,真正的答案永远在自己的链路实测数据里。