ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:602.67KB ,
资源ID:17764671      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17764671.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OFDM的系统仿真与实现Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OFDM的系统仿真与实现Word文件下载.docx

1、OFDM的数据传输速率也与子载波的数量有关。OFDM每个载波所使用的调制方法可以不同。各个载波能够根据信道状况的不同选择不同的调制方式,比如BPSK、QPSK、8PSK、16QAM、64QAM等等,以频谱利用率和误码率之间的最佳平衡为原则。我们通过选择满足一定误码率的最佳调制方式就可以获得最大频谱效率。无线多径信道的频率选择性衰落会使接收信号功率大幅下降,经常会达到30dB之多,信噪比也随之大幅下降。为了提高频谱利用率,应该使用与信噪比相匹配的调制方式。可靠性是通信系统正常运行的基本考核指标,所以很多通信系统都倾向于选择BPSK或QPSK调制,以确保在信道最坏条件下的信噪比要求,但是这两种调制

2、方式的频谱效率很低。OFDM技术使用了自适应调制,根据信道条件的好坏来选择不同的调制方式。比如在终端靠近基站时,信道条件一般会比较好,调制方式就可以由BPSK(频谱效率1bit/s/Hz)转化成16QAM64QAM(频谱效率46bit/s/Hz),整个系统的频谱利用率就会得到大幅度的提高。自适应调制能够扩大系统容量,但它要求信号必须包含一定的开销比特,以告知接收端发射信号所应采用的调制方式。终端还要定期更新调制信息,这也会增加更多的开销比特。OFDM还采用了功率控制和自适应调制相协调工作方式。信道好的时候,发射功率不变,可以增强调制方式(如64QAM),或者在低调制方式(如QPSK)时降低发射

3、功率。功率控制与自适应调制要取得平衡。也就是说对于一个发射台,如果它有良好的信道,在发送功率保持不变的情况下,可使用较高的调制方案如64QAM;如果功率减小,调制方案也就可以相应降低,使用QPSK方式等。自适应调制要求系统必须对信道的性能有及时和精确的了解,如果在差的信道上使用较强的调制方式,那么就会产生很高的误码率,影响系统的可用性。OFDM系统可以用导频信号或参考码字来测试信道的好坏。发送一个已知数据的码字,测出每条信道的信噪比,根据这个信噪比来确定最适合的调制方式。三、OFDM系统实现的整体思路1、系统图如下:2、具体实现过程(1)先进行信道编码为了提高数字通信系统的性能,信道编码(通常

4、还伴有交织)是普遍采用的方法。在OFDM系统中,如果信道衰落不是太严重,均衡是无法再利用信道的分集特性来改善系统性能的,因为OFDM系统自身具有利用信道分集特性的能力,一般的信道特性信息已经被OFDM这种调制方式本身所利用了。但是,OFDM系统的结构却为在子载波间进行编码提供了机会,形成COFDM(前置编码OFDM)方式。编码可以采用各种码,如分组码、卷积码等,其中卷积码的效果要比分组码好,但分组码的编解码实现更为简单。 (2)子载波调制传输信号进行信道编码后,要进行子载波的数字调制将其转换成载波幅度和相位的映射,一般采用QAM或MPSK方式。各子载波不必要采用相同的状态数(进制数),甚至不必

5、要采用相同的调制方式。这使得OFDM支持的传输速率可以在一个较大的范围内变化,并可以根据子信道的干扰情况,在不同的子信道上采用不同状态数的调制,甚至采用不同的调制方式。调制信号星座在IFFT之前根据调制模式形成。(3)加入保护间隔应用OFDM的一个重要原因在于它可以有效地对抗多径时延扩展。把输入数据流串并变换到 个并行的子信道中,使得每一个调制子载波的数据周期可以扩大为原始数据符号周期的N倍,因此时延扩展与符号周期的数值比也同样降低N倍。另外,通过在每个OFDM符号间插入保护间隔可以进一步抵制符号间干扰(ISI),还可以减少在接收端的定时偏移错误。这种保护间隔是一种循环复制,增加了符号的波形长

6、度,在符号的数据部分,每一个子载波内有一个整数倍的循环,此种符号的复制产生了一个循环的信号,即将每个OFDM符号的后 时间中的样点复制到OFDM符号的前面,形成循环前缀,在交接点没有任何的间断。因此将一个符号的尾端复制并补充到起始点增加了符号时间的长度。符号的总长度为 ,其中 为OFDM符号的总长度,为抽样的保护间隔长度,TFFT为FFT变化产生的无保护间隔的OFDM符号长度, 则可以完全克服ISI的影响。同时,由于OFDM延时副本内所包含的子载波的周期个数也为整数,时延信号就不会破坏子载波间的正交性,在FFT解调过程中就不会产生载波间干扰(ICI)。(3)将信号进行上变频(载波调制)后,发送

7、出去,在接收端经过解调、逆快速傅里叶变换、去掉保护间隔等过程即可恢复原始的信号。四、OFDM系统的具体实现1、详细设计思路接收端采用的算法和程序流程与发送端发送的OFDM符号的帧结构有关系。具体的帧结构,以及定时估计,频偏估计,剩余误差跟踪的算法可参考算法说明文档。这里对程序的流程进行说明。首先根据短训练字的特性进行相关运算,进行信号到达检测,当检测到相关值大于门限一定次数后,认为有信号到达。然后根据长训练字的特性,进行相关运算,进行OFDM符号FFT窗口起始位置的估计。估计出FFT窗口的位置后,先在时域进行小频偏的估计,将两个长训练字进行小频偏补偿后,进行FFT运算,根据FFT运算的结果进行

8、整数倍频偏的估计。这些参数估计完成后,就可以进行数据解调了。先对数据部分进行完整的频偏补偿,然后根据估计的FFT窗口位置进行FFT运算得到频域的数据,进行解调。然后在对应于导频的子载波位置上提取出导频信息,根据导频信息估计出剩余定时误差以及剩余的信道响应误差,将误差量送入环路进行跟踪。当收到所有数据后,重新回到信号到达检测状态,进行下一次信号到达的检测和信号接收。2、程序流程图3、具体代码实现Nfft=128*2; %256 进行256点的FFTNg=32*2; %64Nzero=0;Nzerosub=floor(Nfft*0.5)/2); %for padding Ntotal=Ng+2*N

9、zero+Nfft; %320Constellation_num=16;Symbol_num=20; %ableN=Symbol_num*Nfft; %totalNs=Symbol_num*Ntotal;Pnum_least(1:Symbol_num)=10000;Pnum(1:Symbol_num)=0;Ndata_o=Symbol_num*(Nfft/2-Nfft/16/2);sita=0;sita1=1;sita2=0;sita3=0; % 测试变量sign=1;%for filterLHBF1=23; % 半带滤波器长度% I1=zeros(1,Ndata_o);% I2=zeros(

10、1,Ndata_o);% I3=zeros(1,Ndata_o);% I4=zeros(1,Ndata_o);CHBF1(1:LHBF1)=0;InsertGIout(1:Symbol_num,1:Ntotal)=0;% 半带滤波器系数fid2=fopen(HBF23.txt,r);CHBF1=fscanf(fid2,%ffclose(fid2);IHBF1in(1:QHBF1in(1: % 进行半带滤波时的缓冲区IHBF1out(1:2*Ns)=0;QHBF1out(1:2:Ns)=0; % 两倍上采样后时域数据的存放数组 % I、Q分别表示I、Q两路信号ii=1;k=1;k1=1;k2=1

11、;k3=1;k4=1;k5=1;t=1;t2=1;t3=1;SoutI(1:SoutQ(1: % 没有进行两倍上采样之前的时域数据存放数组IFFToutI(1:Nfft)=0;IFFToutQ(1:IFFToutIQ(1:IFFToutIQS(1: % 进行IFFT运算后OFDM符号存放数组 % IQ表示复数信息FFTout_t_1(1:2*Nfft)=0;FFTout_t_2(1:4*Nfft)=0;FFTout_t_3(1:8*Nfft)=0;M_pilot=8;subcarrier(1:N)=0;subcarriercom(1:%train_word% 获得短前导字频域信息fid3=fo

12、pen(data_I_train_word_re_i0_256.txtI_train_word_re_temp=fscanf(fid3,fclose(fid3);I_train_word_re = (I_train_word_re_temp);data_Q_train_word_re_i0_256.txtQ_train_word_re_temp=fscanf(fid3,Q_train_word_re = (Q_train_word_re_temp)% 获得一个长前导字频域信息data_I_train_word_1_i0_256.txtI_train_word_1_temp=fscanf(fid

13、3,I_train_word_1 = (I_train_word_1_temp)data_Q_train_word_1_i0_256.txtQ_train_word_1_temp=fscanf(fid3,Q_train_word_1 = (Q_train_word_1_temp)% 获得二个长前导字频域信息data_I_train_word_2_i0_256.txtI_train_word_2_temp=fscanf(fid3,I_train_word_2 = (I_train_word_2_temp)data_Q_train_word_2_i0_256.txtQ_train_word_2_t

14、emp=fscanf(fid3,Q_train_word_2 = (Q_train_word_2_temp)l=1;% 加窗处理的参数设置wind=zeros(1,(Nfft+Ng);windo=hamming(Nfft+Ng);wind(Ng+1):Nfft)=windo(Ng+1):Nfft);wind(1:Ng)=windo(Ng+1);wind(Nfft+1):(Nfft+Ng)=windo(Nfft);stst=1;% 获得随机数,当作用户信息,调制到各个子载波上I1.txtI1=fscanf(fid3,%d,I2.txtI2=fscanf(fid3,I3.txtI3=fscanf(

15、fid3,I4.txtI4=fscanf(fid3,% Bits Mapping to constellationsfor i=1:N % 前面4个符号是前导字 if(i 0 & i 3*Nfft & iNfft*4+1) Imapped(i) = I_train_word_2(Nfft); Qmapped(i) = Q_train_word_2(Nfft); Imapped(i) = I_train_word_2(rem(i,Nfft); Qmapped(i) = Q_train_word_2(rem(i,Nfft); else % 前导字发送完后,发送用户信息,这里用随机数代替用户信息 %

16、 中间查0的虚拟子载波没有用户信息 if (rem(i,Nfft) (Nfft/2+Nzerosub) if(rem(i,Nfft/(2*M_pilot)=0) % insert pilots if (sign=1) Isignal=3*1.414; Qsignal=0; Isignal=-3*1.414; end % sub-carrier polit scheme is BPSK stst=stst+1; % 插入导频信息 Isignal = 2*(I1(l)*1+I2(l)*2)-3; Qsignal = 2*(I3(l)*1+I4(l)*2)-3; l=l+1; Imapped(i)=

17、Isignal; Qmapped(i)=Qsignal; Imapped(i)=0; Qmapped(i)=0;if (rem(i,Nfft)=0) now_step = num2str(ii) sign=rem(sign+1,2); Imappedfs(1:Nfft)=Imapped(i-Nfft+1:i); Qmappedfs(1:Nfft)=Qmapped(i-Nfft+1: % 对频域信息进行IFFT变换,获得时域信息 IFFToutI(ii,1:Nfft)=ifft(Imappedfs,Nfft); IFFToutQ(ii,1:Nfft)=ifft(Qmappedfs,Nfft);

18、%IFFToutIQ(ii,1:Nfft)=IFFToutI+j*IFFToutQ; IFFToutIQS(ii,1:Nfft)=ifft(Imappedfs(1:Nfft)+j*Qmappedfs(1:Nfft),Nfft); IFFToutIQ(ii,1:Nfft)=IFFToutIQS(ii,1: ii=ii+1;end; % end of fft symbol generationfor (ig=1:Symbol_num) % 插入循环前缀 InsertGIout(ig,1:Nzero)=0; InsertGIout(ig,Ng+Nzero+1:(Ng+Nfft+Nzero)=IFFT

19、outIQ(ig,1: InsertGIout(ig,Nzero+1:(Ng+Nzero)=IFFToutIQ(ig,(Nfft-Ng)+1: InsertGIout(ig,(Ng+Nfft+Nzero)+1: % 加窗处理 if(ig 4) InsertGIouta(ig,1:Ntotal)=InsertGIout(ig,1:Ntotal);Ntotal)=InsertGIouta(ig,1:Ntotal).*wind;FFTout_t(ig,1:Nfft)=fft(InsertGIout(ig,Ng+1-sita:Nfft+Ng-sita),Nfft); % 进行中间变量的测试 % 将生成

20、的OFDM时域信号依次写入一个数组里,形成一个连续的OFDM时域数据流 for (is=1:Ntotal) SoutI(ig-1)*Ntotal+is)=real(InsertGIout(ig,is); SoutQ(ig-1)*Ntotal+is)=imag(InsertGIout(ig,is); end;% 对生成的OFDM时域信号进行两倍上采样% sample rate interpolation and modulationfor(k=1:Ns) % HBF1 for j1=1:2 IHBF1in(2:LHBF1)=IHBF1in(1:LHBF1-1); QHBF1in(2:LHBF1)

21、=QHBF1in(1: if (j1=1) IHBF1in(1)=SoutI(k); QHBF1in(1)=SoutQ(k); IHBF1in(1)=0; QHBF1in(1)=0; IHBF1out(k1)=2*IHBF1in*CHBF1; QHBF1out(k1)=2*QHBF1in*CHBF1; if (rem(k1,2*Ntotal)=0)FFTout_t_1(t,1:2*Nfft)=fft(IHBF1out(k1-2*Nfft+1-sita1:k1-sita1),2*Nfft)+j*fft(QHBF1out(k1-2*Nfft+1-sita1:k1-sita1),2*Nfft); t

22、=t+1; k1=k1+1;% end of j1 %end of k% MODULATION% 将基带信号转换成中频信号M=2;NN=length(IHBF1out);phase0=pi/30;error_f=0;w=pi/M; % IF=8*(symbol rate) or (sample rate)/4IMOD(1:NN)=0;QMOD(1:Modout(1:NN IMOD(i)=cos(rem(i*w+phase0,2*pi)*IHBF1out(i); QMOD(i)=-sin(rem(i*w+phase0,2*pi)*QHBF1out(i); Modout(i)=IMOD(i)+QMOD(i);zB=20*log10(abs(fft(SoutI+j*SoutQ);z

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1