第9章:OFDM 减小PAPR

今天来讲OFDM的PAPR问题,也是《陈老湿·通信MATLAB仿真》系列文章中关于OFDM的最后一个问题了。PAPR的全称是Peak to Average Power Ratio,峰值-平均功率比。

本文主要参考材料与代码来源是《MIMO-OFDM无线通信技术及MATLAB实现》,我也会结合在网上看的其他关于OFDM PAPR的资料整理在一起。

我一直提到的《MIMO-OFDM无线通信技术及MATLAB实现》下载地址是:https://github.com/LyricYang/MIMO_OFDM,该书有的代码版本可能老旧,因此需要偶尔改改代码适应新的MATLAB版本才可以正常运行。

因此,我讲上面需要修改的代码上传到github上了,下载地址:123kevin456/OFDM-PAPR

若你在运行过程中,发现我上传的代码缺少子函数,可在《MIMO-OFDM无线通信技术及MATLAB实现》的下载地址中找到相应子函数即可。

一、PAPR问题来源与定义

在OFDM系统中,不同子载波信号经过IFFT运算后,有比较高的峰值。和单载波系统相比,多载波系统有很高的PAPR。

在通信系统中,由于功率放大器的饱和特性,即放大器只有在某一段输入区间内才线性放大,超过了这个输入区间,就进入放大器的非线性放大区间。

功率放大器的非线性会带来带外辐射和带内失真,带外辐射会影响相邻频带内的信号,带内失真会使得接收信号产生旋转、衰减和位移。

关于放大器的这部分知识,在本科的《模拟电子线路》和《高频电子线路》中均会讲解。虽然我已经忘得差不多了,哈哈哈哈哈哈哈。

img

图1 功率放大器的输入-输出特性

当我们在理解一个问题时,首先一定要弄清楚问题的描述与定义。

那么PAPR的定义是什么呢?

img

img

从上面两张图来看,PAPR是在通频带定义的

在一开始提到“和单载波系统相比,多载波系统有很高的峰值-平均功率比(Peak to Average Power Ratio,PAPR)。”

这句话对不对呢?那下面通过程序来仿真一下,单载波的基带信号与通频带信号的PAPR。

%%%%%%%%%%%%%%%%%%%%%  计算单载波基带/通频带信号的PAPR   %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%   single_carrier_PAPR_sim1.m    %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%% date:2020年12月22日  author:飞蓬大将军   %%%%%%%%%%

%%%%%%%%%%%%%%%%%程序说明
%%%%分析单载波下的PAPR,可画出图

%%%%%%    仿真环境
%软件版本:MATLAB R2019a

clear
Ts = 1;
L = 8;
Nos = 8;

Fc = 1; 
b = 2;
M = 2^b;
[X,Mod] = mapper_sim1(b);
L_ = L*4;
i_b = 1;
[xt_pass_,time_] = modulation(X,Ts,L_,Fc); %%连续时间
[xt_pass,time] = modulation(X,Ts,L,Fc); %%%L倍过采样

for i_s = 1:M
     xt_base(L*(i_s-1)+1 : L*i_s) = X(i_s)*ones(1,L);
end
PAPR_dB_base = PAPR(xt_base);
figure(1);  
% clf;
subplot(311);
stem(time,real(xt_base),'k.'); 
hold on;  
ylabel('S_{I}(n)');
%title([Mod ', ' num2str(M) ' symbols, Ts=' num2str(Ts) 's, Fs=' num2str(1/Ts*2*Nos) 'Hz, Nos=' num2str(Nos) ', baseband, g(n)=u(n)-u(n-Ts)']);
subplot(312);
stem(time,imag(xt_base),'k.'); 
hold on; 
ylabel('S_{Q}(n)');
subplot(313);
stem(time,abs(xt_base).^2,'k.'); 
hold on;
title(['PAPR = ' num2str(round(PAPR_dB_base(i_b)*100)/100) 'dB']);
xlabel ('samples'); 
ylabel('|S_{I}(n)|^{2}+|S_{Q}(n)|^{2}');    
figure(2);
clf;   
PAPR_dB_pass(i_b) = PAPR(xt_pass);
subplot(211);
stem(time,xt_pass,'k.'); 
hold on; 
plot(time_,xt_pass_,'k:');
title([Mod ', ' num2str(M) ' symbols, Ts=' num2str(Ts) 's, Fs=' num2str(1/Ts*2*Nos) 'Hz, Nos=' num2str(Nos) ', Fc=' num2str(Fc) 'Hz, g(n)=u(n)-u(n-Ts)']);
ylabel('S(n)');
subplot(212)
stem(time,xt_pass.*xt_pass,'r.'); 
hold on;
plot(time_,xt_pass_.*xt_pass_,'k:');
title(['PAPR = ' num2str(round(PAPR_dB_pass(i_b)*100)/100) 'dB']);
xlabel('samples');
ylabel('|S(n)|^{2}');    
%bb_I = zeros(1,M*Nos*2); bb_Q = zeros(1,M*Nos*2);
disp('PAPRs of baseband/passband signals'); 
PAPRs_of_baseband_passband_signals=[PAPR_dB_base; PAPR_dB_pass]

运行上面的代码,可以得到下面两图:

img

图2 单载波基带信号

img

图3 单载波频带信号

在上面的代码没有使用脉冲成型滤波器将符号进行成型,过采样因子的作用仅仅是使得信号看上去更像是连续信号。

由图2可知,单载波基带信号的平均功率和峰值功率相同。由图3可知,单载波频带信号峰值功率与平均功率之比是3.01dB。

在上面的代码中,改变载波频率fc会影响单载波信号的PAPR。 因此,若想要准确知道单载波系统的PAPR,必须考虑通频带信号的载波频率

二、OFDM时域信号的分布

在OFDM系统中,对于已调的PSK或者QAM数据符号序列 X [ k ] X\left[ k \right] X[k] ,进过IFFT后,得到离散时间信号 x [ n ] x\left[ n \right] x[n] ,可表示为

x [ n ] = 1 N ∑ k = 0 N − 1 X [ k ] e j 2 π N k n = 1 N { X [ 0 ] + X [ 1 ] e j 2 π N 1 n ⋯ + X [ k ] e j 2 π N k n } x\left[ n \right] = \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {X\left[ k \right]{e^{j\frac{{2\pi }}{N}kn}}} = \frac{1}{N}\left\{ {X\left[ 0 \right] + X\left[ 1 \right]{e^{j\frac{{2\pi }}{N}1n}} \cdots + X\left[ k \right]{e^{j\frac{{2\pi }}{N}kn}}} \right\} x[n]=N1k=0N1X[k]ejN2πkn=N1{X[0]+X[1]ejN2π1n+X[k]ejN2πkn}

上面表达式中,每一个信号对应不同的子载波,第k个子载波数据符号被X[k]调制。

为了近似时间连续信号 x ( t ) x\left( t \right) x(t) ,过采样因子选择L =16,以直观看到每一个子载波上的时域信号 X [ k ] e j 2 π N k n {X\left[ k \right]{e^{j\frac{{2\pi }}{N}kn}}} X[k]ejN2πkn

%%%%%%%%%%%%%%%%%%%%%     时域OFDM信号和PDF    %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%   OFDM_signal_sim1.m    %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%% date:2020年12月22日  author:飞蓬大将军   %%%%%%%%%%

%%%%%%%%%%%%%%%%%程序功能说明
%%%%%

%%%%%%    仿真环境
%软件版本:MATLAB R2019a
clear
N=8; 
b=2; 
M=2^b; 
Nos=16; %%过采样倍数
NNos=N*Nos; 
T=1/NNos;
time = 0:T:1-T;
%if b==1, Mod='BPSK'; mod_object = modem.pskmod('M',M); A=1;
% elseif b==2, Mod='QPSK';  mod_object = modem.pskmod('M',M); A=1;
% else Mod=[num2str(2^b) 'QAM']; mod_object = modem.qammod('M',M); 
%      Es=1; A=sqrt(3/2/(M-1)*Es); 
%end
%[inI,inQ,Mod,Nsym] = mapper(b,N,'Y');
%msgint=randint(1,N,M); X=A*modulate(mod_object,msgint);
[X,Mod] = mapper_sim1(b,N);
% X(1)=0+j*0; % A block of 16 QPSK symbols with no DC-subcarrier 
for i = 1:N
   if i<=N/2 
       x = ifft([zeros(1,i-1) X(i) zeros(1,NNos-i+1)],NNos);
   else
       x = ifft([zeros(1,NNos-N+i-1) X(i) zeros(1,N-i)],NNos);
   end
   xI(i,:) = real(x); 
   xQ(i,:) = imag(x);
end
sum_xI = sum(xI); 
sum_xQ = sum(xQ);
figure(1), clf;
subplot(311)
plot(time,xI,'k:','linewidth',1), hold on;
plot(time,sum_xI,'b','linewidth',2);
title([Mod ', N=' num2str(N)]); ylabel('x_{I}(t)'); axis([0 1 min(sum_xI) max(sum_xI)]);
subplot(312)
plot(time,xQ,'k:','linewidth',1); hold on;
plot(time,sum_xQ,'b','linewidth',2);
ylabel('x_{Q}(t)'); axis([0 1 min(sum_xQ) max(sum_xQ)]);
subplot(313), plot(time,abs(sum_xI+j*sum_xQ),'b','linewidth',2); hold on;
ylabel('|x(t)|'); xlabel('t');
clear('xI'), clear('xQ')
N=2^4; 
NNos=N*Nos; 
T=1/NNos; 
time = 0:T:1-T; 
Nhist=1e3;
for k = 1:Nhist
   [X,Mod] = mapper_sim1(b,N);
   X(1)=0+j*0; % A block of 16 QPSK symbols with no DC-subcarrier 
   for i = 1:N
      if (i<= N/2)  
          x = ifft([zeros(1,i-1) X(i) zeros(1,NNos-i+1)],NNos);
      else
          x = ifft([zeros(1,NNos-N/2+i-N/2-1) X(i) zeros(1,N-i)],NNos);
      end
      xI(i,:) = real(x); 
      xQ(i,:) = imag(x);
   end
   HistI(NNos*(k-1)+1:NNos*k) = sum(xI); 
   HistQ(NNos*(k-1)+1:NNos*k) = sum(xQ);
end
N_bin = 30;
figure(2), clf;
subplot(311)
[xI_dist,bins] = hist(HistI,N_bin);  
bar(bins,xI_dist/sum(xI_dist),'k');
title([Mod ', N=' num2str(N)]);  
ylabel('pdf of x_{I}(t)');
subplot(312)
[xQ_dist,bins] = hist(HistQ,N_bin);  
bar(bins,xQ_dist/sum(xQ_dist),'k');
ylabel('pdf of x_{Q}(t)');
subplot(313)
[xabs_dist,bins] = hist(abs(HistI+j*HistI),N_bin);  
bar(bins,xabs_dist/sum(xabs_dist),'k');
ylabel('pdf of |x(t)|');  xlabel('x_{0}');

img

图5 时域OFDM符号

img

图6 OFDM信号的幅度分布

从图5中,虚线表示的是每一个子载波时域信号,也可以清晰看出OFDM信号的PAPR的特点。

当N增大时,OFDM的PAPR变得更加明显,但其出现最大PAPR的可能性会降低。这是因为当N增大时,要使得不同子载波信号在同一时刻出现同相叠加的可能性便减小了。

从图6中可看出,对于x[n]来说,虚部和实部是服从高斯分布, ∣ x [ n ] ∣ \left| {x\left[ n \right]} \right| x[n] 服从的是瑞利分布,为什么呢?

这里顺便提一个问题,高斯分布、卡方分布、瑞利分布之间的关系?(吓得你赶紧翻出自己的《概率论与数理统计》课本,哈哈哈哈哈。)

img

图7 OFDM系统框图

三、PAPR和过采样

在《陈老湿:第1章:BPSK调制解调器仿真》中发送端脉冲成型前,先进行上采样。上采样便是当过采样倍数为N时,对符号进行插入N-1个0

在一开始的PAPR定义,是针对连续时间的通频带信号来定义的。

img

上面这段话中,有许多小知识,我就当做结论来记了,没有去弄懂里面对应参考文献的证明过程。

对x[n]之间插入L-1个0,得到输出w[m],也即有:

img

img

img

运行PAPR_of_Chu_sim1.m,便可在时域观察Chu序列的PAPR,得到下图。

img

图8 Chu序列经过IFFT之后的幅度

从图8中可看出,对于Chu序列来说,有过采样和没有过采样的PAPR分别是0dB和4.2714dB,这说明不同的采样速率会导致PAPR明显的差异。对于chu序列来说,采样速率的不同通常导致PAPR明显变化。

而当我改变L= 8,16时,得到相应的PAPR分别是4.2714dB,4.2714dB,即没有导致PAPR有什么大的变化。

所以我还没想清楚书上为什么说“对于chu序列来说,采样速率的不同通常导致PAPR明显变化”。

运行PAPR_of_preamble.m,观察IEEE 802.16e前导的PAPR,得到下图。

img

图9 IEEE 802.16e前导的PAPR,L=4

从图9可看出,对于IEEE 802.16e前导的PAPR来说,有过采样的PAPR比没有过采样的PAPR大0.4dB左右。

由于前导码存在放大功率的问题,最初设计前导码时,便要求其具有较低的PAPR,这也是为什么不同的采样速率并没有使这些序列的PAPR有明显不同。

我将L=8、16时,确实发现不同的采样速率并没有使这些序列的PAPR有明显不同。

img

图10 IEEE 802.16e前导的PAPR,L=8

在这里插入图片描述

图11 IEEE 802.16e前导的PAPR,L=16

四、PAPR减小技术——以DFT-s-OFDM为例

在《MIMO-OFDM无线通信技术及MATLAB实现》第7章PAPR减小技术,介绍了以下几种:限幅技术、编码技术、加扰技术、自适应预失真技术和DFT扩频技术。

本文将集中在DFT扩频技术上,这是为什么呢?这里结合LTE协议、5G NR协议来说

以下内容来自王映民、孙韶辉的《5G移动通信系统设计与标准详解》的P51-P52页:

img

img

图12 波形和参数集设计

在OFDM系统中,发送端有IFFT过程,假设将(与IFFT大小相同的)DFT用做扩频码,那么DFT与IFFT运算本质上是相互抵消的。

从这个角度来上,DFT-s-OFDM和SC-FDMA(single carrier-FDMA)是等价的。(说这两个是等价的,我在好几份材料都看到了这句话)

这些需要解释的是OFDM本身是一种传输方案,即将所有的子载波给一个用户传输,没有涉及多址的概念。

参考一份通信原理PPT: 来区分一下多路复用与多址接入的概念:

(1)多路复用是指在一条链路传输多路独立信号而互不干扰,常见的多路复用方式有频分复用(FDM)、时分复用(TDM)、码分复用(CDM)

多址接入是指多个用户共享信道,动态分配网络资源,常见的多址接入方式有频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)、空分多址(SDMA)以及其他利用信号统计特性复用的多址技术等。

多路复用中,用户对资源共享的需求是固定的,或者至多是缓慢变化的,资源是预先分配给各用户。

多址接入中,网络资源通常是动态分配的,并且可以由用户在远 端提出共享要求。因此必须按照用户对网络资源的需求,随时动态地改变网络资源的分配。

(2)所处位置不同

img

若将OFDM用于多址接入中,也可与现有的TDMA、FDMA、CDMA等技术结合在一起。

img

在OFDMA系统中,不同的子载波划分配给多个不同的用户使用。和下行不一样的是,上行的每一个用户使用一组子载波来发射各自的数据,对不发射数据子载波进行填充0

在整个系统中,有N个子载波,假设给每一个用户分配的子载波数为M。在DFT扩频技术中,将M点DFT用于扩频,并将DFT的输出分配给IFFT的载波。

举个数值例子,假设N=12,M=4。OFDMA系统有12个子载波,给甲乙丙3个用户用,则每个用户可以分配到4个子载波呢。那甲乙丙三个用户,占据的是这12个子载波中的哪几个呢?这便是系统如何给用户分配子载波的方式。

PAPR减小的效果是直接依赖于为每一个用户分配子载波方式,后面的仿真实验结果也将验证分配子载波方式对PAPR的影响。

有两种给用户分配子载波的方法:分布式FDMA(Distributed FDMA,DFDMA)和集中式FDMA(Localized FDMA,LFDMA)。

img

img

img

img

img

img

如果不是对数字信号处理课程中的FFT/IFFT知识比较熟练的话,上面对IFDMA与LFDMA的时域信号进行理论分析、计算还是有不小的难度的。

一看到公式就想睡觉的同学,可能看到这里就已经睡着好几次了,哈哈哈哈哈哈。

我也没有去推导书中的每个公式,因为别忘了,我们的目的是干嘛来着?我们是想看一下不同子载波分配方式对PAPR的影响

运行compare_DFT_spreading_sim1.m,得到OFDMA/LFDMA/IFDMA的PAPR。

%%%%%%%%%%%%%%%%%%%%%  分析OFDMA/LFDMA/IFDMA的PAPR  %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%   compare_DFT_spreading_sim1.m    %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%      date:2021年2月6日  改编:飞蓬大将军   %%%%%%%%%%

%%%%%%%%%%%%%%%%%程序功能说明
%%%%%分析OFDMA/LFDMA/IFDMA的PAPR

%%%%%%    仿真环境
%软件版本:MATLAB R2020b

% Plot Fig. 7.31
clear, clf
N=256; 
Nd=64; % FFT size and Data block size (# of subcarriers per user)
gss='*^<sd>v.'; % Numbers of subblocks and graphic symbols
bs=[2 4 6]; 
N_b=length(bs);
dBs = 0:0.2:12; 
dBcs = dBs+(dBs(2)-dBs(1))/2;
Nblk = 5000; % Number of OFDM blocks for iteration
for i=1:N_b
   b=bs(i); M=2^b;
   rand('twister',5489); randn('state',0);
   CCDF_OFDMa = CCDF_PAPR_DFTspreading_sim1('OF',N,b,N,dBcs,Nblk); % CCDF of OFDMA
   CCDF_LFDMa = CCDF_PAPR_DFTspreading_sim1('LF',Nd,b,N,dBcs,Nblk); % CCDF of LFDMA
   CCDF_IFDMa = CCDF_PAPR_DFTspreading_sim1('IF',Nd,b,N,dBcs,Nblk); % CCDF of IFDMA
   subplot(130+i)
   semilogy(dBs,CCDF_OFDMa,'-o', dBs,CCDF_LFDMa,'-<', dBs,CCDF_IFDMa,'-*')
   legend('OFDMA','LFDMA','IFDMA')
   axis([dBs([1 end]) 1e-3 1]); grid on;
   title([num2str(M) '-QAM CCDF ',num2str(N),'-point ',num2str(Nblk) '-blocks']);
   xlabel(['PAPR_0[dB] for ',num2str(M),'-QAM']); ylabel('Pr(PAPR>PAPR_0)'); 
end
%%%实验结论
%%IFDMA、LFDMA相比于OFDMA,PAPR有效降低

img

图13 用于分析IFDMA、LFDMA和OFDMA的DFT扩频技术的PAPR性能

图13的纵坐标表示的是,PAPR>PAPR0(PAPR0是横坐标)的概率。

在16-QAM情况下,对于纵坐标的概率值为0.01时,IFDMA、LFDMA和OFDMA对应的横坐标PAPR大概是3.5dB、8.3dB和10.8dB,这说明IFDMA、LFDMA相比于没有进行DFT扩频的OFDMA来说,分别降低了7.3dB和3.2dB。

下面来观察一下脉冲成型技术对DFT扩频技术的PAPR性能的影响。脉冲成型知识在《陈老湿:第1章:BPSK调制解调器仿真》已经讲过一些。

其中,滚降因子是升余弦滤波器的一个非常关键的参数

运行compare_DFT_spreading_w_psf_sim1,得到figure1为下图,

img

图14 具有脉冲成型的DFT扩频技术的PAPR性能

从图14中可以看出两点:

(1)当滚降系数从0到1变化时,IFDMA的PAPR性能显著提升,而LFDMA受脉冲成型的影响不那么大。

(2)当滚降系数从0到1变化时,用户所需带宽增加,IFDMA可以在所需带宽和PAPR性能进行折中。

接下来观察为每一个用户分配的子载波数M如何影响DFT扩频技术的PAPR性能。

运行compare_DFT_spreading_w_psf_sim1,得到figure2为下图:

img

图15 当M变化时DFT技术的PAPR性能

当滚降因子为0.4时,从图16中看出,当M变大时,PAPR的性能是下降的。

img

img

五、参考资料与总结

本文除了参考《MIMO-OFDM无线通信技术及MATLAB实现》和王映民、孙韶辉的《5G移动通信系统设计与标准详解》的P51-P52页外,还参考了一下材料:

(1)CSDN上的一篇博客:【射频】【5G】5G NR的CP-OFDM和DFT-s-OFDM对比

(2)一份DFT-s-OFDM的pdf,下载链接:http://www.cs.tut.fi/kurssit/TLT-5906/L1b_v1.pdf

本科学习《信号与系统》时,总是会将系统当成黑盒子,来去分析输入与输出的关系,从而表征系统的一些特性。

学习有时候也像这么个过程,看不同的人对同一个知识怎么讲,这些就是对自己的输入,然后自己将这些阅读材料进行整合、理解,成为自己的知识,或者写成文章、讲给别人,这便是输出。

至此,OFDM的内容已经全部更新完毕。

欢迎你双击屏幕、点赞、收藏、转发和分享,关注我的知乎号,也欢迎读者朋友就相关技术问题与我交流,一起学习,共同进步。请你也别忘了把这篇文章分享给你身边正在学习通信专业的同学们,也许能够帮到Ta。

这是《陈老湿·通信MATLAB仿真》的第9章,下次更新见!

  • 34
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值