OFDM系统仿真word文档良心出品.docx
- 文档编号:11765395
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:348.64KB
OFDM系统仿真word文档良心出品.docx
《OFDM系统仿真word文档良心出品.docx》由会员分享,可在线阅读,更多相关《OFDM系统仿真word文档良心出品.docx(17页珍藏版)》请在冰点文库上搜索。
OFDM系统仿真word文档良心出品
OFDM系统仿真
一、OFDM基本原理
把一个高速率的数据流分解成很多低速率的子数据流,以并行的方式在多个子载波上传输,子载波间彼此保持相互正交的关系以消除子载波间数据的干扰。
1.串并变换
在并行数据传输系统中,许多符号被同时传输,每个传输符号速率的在几十bit/s到几十kbit/s之间检错码和纠错码,数据加扰作为串并变换工作的一部分,通过把每个连续的数据比特随机的分配到各个子载波上来实现,将比特错误位置的随机化可以提高前向纠错编码对性能,并且系统的总的性能也得到改进。
2.子载波调制
一个OFDM符号之内包含多个经过相移键控(PSK)或者正交幅度调制(QAM)的子载波。
其中,N表示子载波的个数,T表示OFDM符号的持续时间,d(i=0,1,2,….n-1)是分配给每个子载波的数据符号,fi是第i个子载波的载波频率,矩形函数rect(t)=1,
,则从
开始的OFDM符号可以表示为:
其中,s(t)的实部和虚部分别对应于OFDM符号的同相和正交分量,在实际系统中可以分别于相应子载波的cos分量和sin分量相乘,其中,
。
在接收端将接收到的同相和正交分量映射回数据信息,完成子载波调解。
OFDM系统基本模型框图
3.OFDM的IDFT/DFT实现
对于N比较大的系统来说,式2中的OFDM复等效基带信号可以采用离散Fourier逆变化(IDFT)方法来实现。
令式2中的
,并且忽略矩形函数,对信号s(t)以T/N的速率进行抽样,即令t=kT/N,(k=0,1,......N-1),可以得到:
可以看到,
等效为对
进行IDFT运算。
同样在接收端,为了恢复原始的数据符号
,可以对
进行逆变化,即DFT得到:
由此可见,OFDM系统的调制和解调可以分别通过IDFT/DFT来实现,频域数据符号
经过N点IDFT运算变换为时域符号
,经过射频载波调制后,发送到信道中。
其中每一个IDFT输出的数据符号都是由所有子载波经过叠加生成的,即对连续的多个经过调制的子载波的叠加信号进行抽样得到的。
在OFDM系统的实际应用中,可以采用更加方便快捷的快速Fourier变换(FFT/IFFT)。
N点IDFT运算需要实施N*N次的复数乘法,而IFFT可以显著的降低运算的复杂度。
对于常用的基2IFFT算法来说,其复数乘法的次数仅为(N/2)
。
IDFT的计算复杂度会随N增加而呈现二次方增长,IFFT的算法复杂度的增加速度只是稍稍快于线性变化。
对于子载波数量非常大的OFDM系统来说,可以进一步采用基4IFFT算法来实施Fourier变换。
4.保护间隔与循环前缀
应用OFDM的一个重要原因在于它可以有效的对抗多径时延扩展,为了最大限度的消除符号间干扰,还可以在每个OFDM符号之间插入保护间隔,为了消除由于多径所造成的ICI,OFDM符号需要在其保护间隔内填入循环前缀信号。
插入保护间隔后的OFDM系统框图
当子载波个数比较大时,OFDM的符号周期T相对于信道的脉冲响应长度
很大,则符号间干扰的影响很小;而如果相邻OFDM符号之间的保护间隔
满足
的要求,则可以完全克服ISI的影响。
同时为了保持子载波之间的正交性,该保护间隔必须是循环前缀。
此时,OFDM的符号周期为:
保护间隔的离散长度,即样点个数为:
这样根据图7,保护间隔、功率归一化的OFDM的抽样序列
为:
经过信道
和加性高斯噪声作用后的接收信号为:
接收信号r(t)经过A/D变换后得到接收序列
为对r(t)按T/N的抽样速率得到的数字抽样。
ISI只会对接收序列的钱
个样点形成干扰,因此将前
个样点去掉,就可以完全消除ISI的影响。
对去掉保护间隔的序列
进行DFT变换,可得到DFT输出的多载波调解序列
,得到N个复数点:
通过适当选择子载波个数N,可以使信道响应平坦,插入保护间隔还有助于子载波之间的正交性,因此OFDM有可能完全消除ISI和多径带来的ICI的影响,接收信号的频率表达为:
(1-13)
其中,
为第n个子载波的复衰落系数,
代表第个子信道的AWGN,它的实部与虚部均服从零均值高斯分布,且互相独立。
噪声方差为:
这个系统有N个并行的子系统,每个子系统经受乘性复干扰和加性白高斯噪声的影响。
●OFDM多载波系统的等效频域系统
二、802.11a的帧结构
1.OFDM物理层编码过程
(1)产生PLCP训练序列。
此序列由10个重复的短训练序列和2个重复的加保护间隔(GI)的长训练序列构成。
10个端训练序列用来进行接收端的自动增益控制、定时捕获以及完成频率的粗同步。
长训练训练作用是在接受端正信道估计以及进行系统的细同步。
(2)根据发送端的速率位、长度位和业务位,再添加适当的比特得到PLCP头。
PLCP中Rate和Length经过1/2速率的卷积编码,映射成一个单独BPSK编码的OFDM符号,这与Signal得到一个OFDM符号要经过统一的过程:
卷积编码、交织、BPSK调制、插入导频、IFFT,最后是加保护间隔是数据速率达到6Mbit/s。
Signal部分不需要扰码。
(3)根据发送端的Rate,计算每个OFDM符号所包含的数据比特率(记为
)。
编码速率(R),每个OFDM子载波中的比特数(
)。
(4)发送端服务区后跟着的是PSDU。
通过添加适当的“0”(至少6个),使得比特流的长度是
的整数倍。
调整过后的比特流形成包中的Data部分。
(5)用非0初值产生的伪随机序列形成扰码,然后再与调整后的信息比特做与逻辑运算。
(6)用6个未成扰码的“0”比特替换后6个“0”经过扰码后形成的比特(这些比特能使接收端的卷积编码器回到零状态,而他们解码后只作为尾比特)。
(7) 接下来对数据进行1/2速率的卷积编码,然后再根据编码速率的需要进行打孔(Puncture)。
(8) 将编码输出的数据以NCBPS为长度单位分成若干组,对每一组进行交织(Interleaving)处理。
(9) 编码,交织完成后输出的数据流以NCBPS为长度单位分成若干组,再选择合适的调制方法,如BPSK或者QAM等进行调制。
(10) 将调制后的复数信号按48为单位分成若干组,每一组可以形成一个OFDM符号。
一组中的符号映射到编号为-26~-22、-20~-8、-6~-1、1~6、8~20、22~26的OFDM子载波上。
编号为-21、-7、7、21的子载波用来插入导频。
代表中心频率的0号子载波可以忽略,所以置为零。
(11) 导频插入编号为-21、-7、7和21的4个子载波中,总的子载波是52。
(12) (12) 每一组从编号为-26~26的子载波经过逆傅立叶变换转为时域信号。
对逆傅立叶变换后的波形加循环前缀形成GI,并采用时间截短的方法对每一个周期的OFDM符号的波形范围进行加窗处理(Windowing)。
(13) 以含有Rate和Length信息的Signal开始的OFDM符号流一个接一个地进入信道传输。
(14) 根据理想信道的中心频率,将复基带波形上变频到RF频率上。
OFDM系统的主要参数
2.训练符号
训练符号用来进行同步,训练符号由2部分组成:
10个相同的短训练符t1~t100(为正常OFDM符号时间的1/4)和2个相同的长训练符号T1~T2(时间长等于正常的OFDM符号时间长度),总的训练时间长度为16us。
3.Signal域
训练符号之后紧跟着Signal域
§Signal域中的信息比特经过BPSK调制以及效率为1/2的卷积编码,这样就可以得到6Mbit/s的信息传输速率,这也是IEEE802.11a中规定的最低信息速率。
§随后LENGTH域的长度为12个比特,用于指示MAC请求PHY发送的PSDU的字节个数。
4.Data域的扰码及解扰
Data域包括Service、PSDU、尾比特以及填充比特。
在送入卷积编码器要先经过加扰处理,也就是用一长为127的帧同步码来对Data域进行加扰。
三、IEEE802.11a系统的仿真
§单径信道
§2径信道
源代码:
clearall
%%%%%%%%%%%%%参数设置部分%%%%%%%%%%%%%%%%%
Nsp=52;%系统子载波数(不包括直流载波)
Nfft=64;%FFT长度
Ncp=16;%循环前缀长度
Ns=Nfft+Ncp;%1个完整OFDM符号长度
noc=53;%包含直流载波的总的子载波数
Nd=6;%每帧包含的OFDM符号数(不包括训练符号)
M1=4;%QPSK调制
M2=16;%16-QAM调制
sr=250000;%OFDM符号速率
EbNo=0:
2:
30;%归一化信噪比
Nfrm=10000;%每种信噪比下的仿真帧数
ts=1/sr/Ns;%OFDM符号抽样时间间隔
t=0:
ts:
(Ns*(Nd+1)*Nfrm-1)*ts;%抽样时刻
fd=100;%最大多普勒频移
h=rayleigh(fd,t);%生成单径Rayleigh衰落信道
h1=sqrt(2/3)*h;
h2=sqrt(1/3)*rayleigh(fd,t);
h2=[zeros(1,4)h2(1:
end-4)];
%训练符号频域数据,采用802.11a中的长训练符号数据
Preamble=[11-1-111-11-1111111-1-111-11-11111...
1-1-111-11-11-1-1-1-1-111-1-11-11-11111];
Preamble1=zeros(1,Nfft);
Preamble1(2:
27)=Preamble(27:
end);%前导重排后的数据
Preamble1(39:
end)=Preamble(1:
26);
preamble1=ifft(Preamble1);%训练符号时域数据
preamble1=[preamble1(Nfft-Ncp+1:
end)preamble1];%加入循环前缀
%%%%%%%%%%%%%%%%%%%%%仿真循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
forii=1:
length(EbNo)
%**************************发射机部分*****************************
msg1=randsrc(Nsp,Nd*Nfrm,[0:
M1-1]);%QPSK信息数据
msg2=randsrc(Nsp,Nd*Nfrm,[0:
M2-1]);%16-QAM信息数据
data1=pskmod(msg1,M1,pi/4);%QPSK调制
data2=qammod(msg2,M2)/sqrt(10);%16-QAM调制并归一化
data3=zeros(Nfft,Nd*Nfrm);%根据FFT要求,对数据重排
data4=zeros(Nfft,Nd*Nfrm);
data3(2:
27,:
)=data1(27:
end,:
);
data3(39:
end,:
)=data1(1:
26,:
);
data4(2:
27,:
)=data2(27:
end,:
);
data4(39:
end,:
)=data2(1:
26,:
);
cleardata1data2;%清除不需要的临时变量
data3=ifft(data3);%IFFT变换
data4=ifft(data4);
data3=[data3(Nfft-Ncp+1:
end,:
);data3];%加入循环前缀
data4=[data4(Nfft-Ncp+1:
end,:
);data4];
spow1=norm(data3,'fro').^2/(Nsp*Nd*Nfrm);%计算符号能量
spow2=norm(data4,'fro').^2/(Nsp*Nd*Nfrm);
data5=zeros(Ns,(Nd+1)*Nfrm);%加入训练符号
data6=data5;
forindx=1:
Nfrm
data5(:
(indx-1)*(Nd+1)+1)=preamble1.';
data5(:
(indx-1)*(Nd+1)+2:
indx*(Nd+1))=data3(:
(indx-1)*Nd+1:
indx*Nd);
data6(:
(indx-1)*(Nd+1)+1)=preamble1.';
data6(:
(indx-1)*(Nd+1)+2:
indx*(Nd+1))=data4(:
(indx-1)*Nd+1:
indx*Nd);
end
cleardata3data4;%清除不需要的临时变量
data5=reshape(data5,1,Ns*(Nd+1)*Nfrm);%并串变换
data6=reshape(data6,1,Ns*(Nd+1)*Nfrm);
data51=zeros(1,length(data5));
data61=zeros(1,length(data6));
data51(5:
end)=data5(1:
end-4);
data61(5:
end)=data6(1:
end-4);
sigma1=sqrt(1/2*spow1/log2(M1)*10.^(-EbNo(ii)/10));%根据EbNo计算噪声标准差
sigma2=sqrt(1/2*spow2/log2(M2)*10.^(-EbNo(ii)/10));
forindx=1:
Nfrm
dd1=data5((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));
dd2=data6((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));
dd3=data51((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));
dd4=data61((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));
hh=h((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));%当前帧的单径信道参数
hh1=h1((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));%当前帧的2径信道参数
hh2=h2((indx-1)*Ns*(Nd+1)+1:
indx*Ns*(Nd+1));
%信号通过单径衰落信道,并加入高斯白噪声
r1=hh.*dd1+sigma1*(randn(1,length(dd1))+j*randn(1,length(dd1)));
r2=hh.*dd2+sigma2*(randn(1,length(dd2))+j*randn(1,length(dd2)));
%信号通过2径衰落信道,并加入高斯白噪声
r11=hh1.*dd1+hh2.*dd3+sigma1*(randn(1,length(dd1))+j*randn(1,length(dd1)));
r21=hh1.*dd2+hh2.*dd4+sigma2*(randn(1,length(dd2))+j*randn(1,length(dd2)));
r1=reshape(r1,Ns,Nd+1);%串并变换
r2=reshape(r2,Ns,Nd+1);
r11=reshape(r11,Ns,Nd+1);
r21=reshape(r21,Ns,Nd+1);
r1=r1(Ncp+1:
end,:
);%移除循环前缀
r2=r2(Ncp+1:
end,:
);
r11=r11(Ncp+1:
end,:
);
r21=r21(Ncp+1:
end,:
);
R1=fft(r1);%fft运算
R2=fft(r2);
R11=fft(r11);
R21=fft(r21);
R1=[R1(39:
end,:
);R1(2:
27,:
)];%数据重排
R2=[R2(39:
end,:
);R2(2:
27,:
)];
R11=[R11(39:
end,:
);R11(2:
27,:
)];
R21=[R21(39:
end,:
);R21(2:
27,:
)];
HH1=(Preamble.')./R1(:
1);%信道估计
HH2=(Preamble.')./R2(:
1);
HH11=(Preamble.')./R11(:
1);
HH21=(Preamble.')./R21(:
1);
HH1=HH1*ones(1,Nd);
HH2=HH2*ones(1,Nd);
HH11=HH11*ones(1,Nd);
HH21=HH21*ones(1,Nd);
x1=R1(:
2:
end).*HH1;%信道补偿
x2=R2(:
2:
end).*HH2;
x3=R11(:
2:
end).*HH11;
x4=R21(:
2:
end).*HH21;
x1=pskdemod(x1,M1,pi/4);%数据解调
x2=qamdemod(x2.*sqrt(10),M2);
x3=pskdemod(x3,M1,pi/4);
x4=qamdemod(x4.*sqrt(10),M2);
[neb1(indx),temp]=biterr(x1,msg1(:
(indx-1)*Nd+1:
indx*Nd),log2(M1));%统计一帧中的错误比特数
[neb2(indx),temp]=biterr(x2,msg2(:
(indx-1)*Nd+1:
indx*Nd),log2(M2));
[neb3(indx),temp]=biterr(x3,msg1(:
(indx-1)*Nd+1:
indx*Nd),log2(M1));
[neb4(indx),temp]=biterr(x4,msg2(:
(indx-1)*Nd+1:
indx*Nd),log2(M2));
end
ber1(ii)=sum(neb1)/(Nsp*log2(M1)*Nd*Nfrm);%理想信道估计的误比特率
ber2(ii)=sum(neb2)/(Nsp*log2(M2)*Nd*Nfrm);
ber3(ii)=sum(neb3)/(Nsp*log2(M1)*Nd*Nfrm);%非理想信道估计的误比特率
ber4(ii)=sum(neb4)/(Nsp*log2(M2)*Nd*Nfrm);
end
semilogy(EbNo,ber1,'-ro',EbNo,ber3,'-rv',EbNo,ber2,'-r*',EbNo,ber4,'-rx')
gridon
title('OFDM系统误比特率性能')
legend('QPSK单径信道','QPSK2径信道','16-QAM单径信道','16-QAM2径信道')
xlabel('信噪比(EbNo)')
ylabel('误比特率')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OFDM 系统 仿真 word 文档 良心 出品