OFDM系统仿真.doc_第1页
OFDM系统仿真.doc_第2页
OFDM系统仿真.doc_第3页
OFDM系统仿真.doc_第4页
OFDM系统仿真.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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、16、820、2226的OFDM子载波上。编号为-21、-7、7、21的子载波用来插入导频。代表中心频率的0号子载波可以忽略,所以置为零。(11) 导频插入编号为-21、-7、7和21的4个子载波中,总的子载波是52。(12) (12)每一组从编号为-2626的子载波经过逆傅立叶变换转为时域信号。对逆傅立叶变换后的波形加循环前缀形成GI,并采用时间截短的方法对每一个周期的OFDM符号的波形范围进行加窗处理(Windowing)。(13) 以含有Rate和Length信息的Signal开始的OFDM符号流一个接一个地进入信道传输。 (14)根据理想信道的中心频率,将复基带波形上变频到RF频率上。OFDM系统的主要参数2. 训练符号 训练符号用来进行同步,训练符号由2部分组成:10个相同的短训练符t1t100(为正常OFDM符号时间的1/4)和2个相同的长训练符号T1T2(时间长等于正常的OFDM符号时间长度),总的训练时间长度为16us。 3. Signal域 训练符号之后紧跟着Signal域 Signal域中的信息比特经过BPSK调制以及效率为1/2的卷积编码,这样就可以得到6Mbit/s的信息传输速率,这也是IEEE 802.11a中规定的最低信息速率。 随后LENGTH域的长度为12个比特,用于指示MAC请求PHY发送的PSDU的字节个数。 4. Data域的扰码及解扰 Data域包括Service、PSDU、尾比特以及填充比特。在送入卷积编码器要先经过加扰处理,也就是用一长为127的帧同步码来对Data域进行加扰。 三、IEEE 802.11a系统的仿真单径信道2径信道源代码:clear all% 参数设置部分 %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=1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 . 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1;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; % 加入循环前缀% 仿真循环 %for ii=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,:); clear data1 data2; % 清除不需要的临时变量 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; for indx=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 clear data3 data4; % 清除不需要的临时变量 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); for indx=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); % 数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论