您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 移动通信系统课设——OFDM系统仿真
移动通信系统课程设计报告OFDM系统仿真——目录移动通信系统课程设计报告...............................1(一)题目要求:.......................................2(二)相关原理:.......................................21)OFDM:..........................................22)QPSK调制:.....................................33)导频与均衡:....................................34)循环前缀:......................................35)分组交织:......................................4(三)基本思路:.......................................4(四)结果:..........................................101)软解码与硬解码情况下不同信噪比的误码率:.......102)不同信噪比下译码相位图:.......................11(五)总结体会:......................................11(六)分工合作:......................................12(七)程序代码:......................................12(一)题目要求:1)OFDM128路传输;2)QPSK调制3)AWGN信道4)3径或4径瑞利衰落信道(二)相关原理:1)OFDM:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI)。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。2)QPSK调制:将每两个相连比特组在一起形成双比特码元,它的四种状态用4个不同的相位表示;3)导频与均衡:在OFDM信息序列中插入已知的导频序列xn,通过信道后将其提取得yn,做频域除法得传输函数[]z=[]YzHXz,再通过线性插值后得到每个信道频率响应,均衡滤波传输函数1E[]zHz;4)循环前缀:循环前缀(CyclicPrefix,CP)是将OFDM符号尾部的信号搬移到头部构成的。用来消去码间干扰,通常取长度gT(为信道冲激响应持续时间)5)分组交织:为了解决成串的比特差错问题,采用了交织技术:把一条消息中的相继比特分散开的方法,即一条信息中的相继比特以非相继方式发送,这样即使在传输过程中发生了成串差错,恢复成一条相继比特串的消息时,差错也就变成单个(或者长度很短)的错误比特,这时再用信道纠正随机差错的编码技术(FEC)消除随机差错。纠错数maxbDt(三)基本思路:说明:1)编码:使用216卷积码;相关代码:%卷积编码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ori_data_t_1=reshape(ori_data_t,num_inf,2*channell);%58*192ori_data_t_2=zeros(num,2*channell);%128*192信号产生卷积编码交织(32)QPSK调制(96路)插入导频信号(32路)OFDM调制(IFFT)插入循环前缀(1/4长度)并串转换AWGN信道3径瑞利信道串并转换OFDM解调(FFT)取导频信道估计与均衡并串转换QPSK解调解交织卷积译码误码率统计fori=1:2*channellseq=ori_data_t_1(:,i)';seq_code=encode216(seq)';ori_data_t_2(:,i)=seq_code;endori_data=reshape(ori_data_t_2,1,2*num*channell);%1*24576编码函数:functioncode=encode216(m)%输入信息序列%g1=[1,0,0,0,0,0];g2=[1,1,0,0,1,1];trel=poly2trellis(6,[4063]);%定义网格m1=[m,0,0,0,0,0,0];code=convenc(m1,trel);%卷积码编码2)交织:交织深度为32;相关代码:%编码交织%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ori_data1=reshape(ori_data,deep,(2*num*channell)/deep)';%768*32ori_data2=reshape(ori_data1,1,2*num*channell);%1*245763)QPSK调制:转换为96路相位信号(复数);代码:%QPSK调制%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ori_data_0=reshape(ori_data2,2,channell*num);%拆分成两行12288列ori_data_1=bi2de(ori_data_0','left-msb')';%QPSK的未调制数据12288列M=4的数据de_OFDM_1=modem.pskmod(4);%生成调制器对象,设置qpsk调制QPSK_data=modulate(de_OFDM_1,ori_data_1);%1*12288复数形式%channel_data=reshape(QPSK_data,channell,num);%拆分成128行,每行10个复数128*10channel_data=reshape(QPSK_data,num,channell);%拆分成128行,每行96个复数128*964)插入导频:32路已知序列;代码:%插入导频信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%pliot_1=2*rand(128,32);pliot_2=2*rand(128,32);%插入的导频信号,实数pliot=pliot_1+pliot_2*1i;%插入的导频信号,复数channel_data_1=zeros(128,128);fori=0:31channel_data_1(:,4*i+1)=pliot(:,i+1);channel_data_1(:,4*i+2)=channel_data(:,3*i+1);channel_data_1(:,4*i+3)=channel_data(:,3*i+2);channel_data_1(:,4*i+4)=channel_data(:,3*i+3);end5)OFDM调制:使用IFFT;相关代码:%OFDM信号产生%%%%%%%%%%%%%%%%%%%%%%%%%%%%%IFFT_data=zeros(128,128);fori=1:128IFFT_data(:,i)=ifft(channel_data_1(:,i),128);%128*128ifft数据endr_ifft_data=real(IFFT_data);%实部128*128i_ifft_data=imag(IFFT_data);%虚部128*1286)插入循环前缀:这里选取长度为32;相关代码:%加入循环前缀%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r_data=[r_ifft_data(num-num/4+1:num,:);r_ifft_data];%保护间隔取传送数据的四分之一i_data=[i_ifft_data(num-num/4+1:num,:);i_ifft_data];%160*1287)并串转换:转换成1路;代码:%并串转换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r_out=reshape(r_data,1,(num+num/4)*channel);%1*1600i_out=reshape(i_data,1,(num+num/4)*channel);%1*1600data=r_out+i_out.*1i;8)AWGN:加入信噪比-10~20dB的噪声;代码:%AWGN信道%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%data_AWGN=awgn(data,SNR,'measured');%加入噪声9)串并转换:转换成128路;代码:%串并转换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r_rcv_data1=reshape(r_rcv_data,num+num/4,channel);i_rcv_data1=reshape(i_rcv_data,num+num/4,channel);10)OFDM解调:FFT快速算法;代码:%OFDM解调FFT%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%de_OFDM_data=zeros(128,128);fori=1:128de_OFDM_data(:,i)=fft(rcv_data(:,i),128);%128*128矩阵end11)去导频:取出过信道后导频序列yn;12)信道估计:计算收到每一路导频序列的Y[z],已知导频序列的X[]z,得到信道[]z=[]YzHXz,利用线性插值得到每一路信息序列的izH;13)均衡:将每一路信号i[][]iXzEz,1E[][]iizHz,得到均衡后的信号频域Y[]iz,然后得到y'()n;代码:%信道估计与均衡(新的)depliot=zeros(128,32);fori=0:31depliot(:,i+1)=de_OFDM_data(:,4*i+1);enddepliot_1=zeros(128,32);depliot_2=zeros(32,128);de_OFDM_0=zeros(128,32);fori=1:32depliot_1(:,i)=pliot(:,i)./depliot(:,i);%depliot_2(i,:)=reshape(depliot_1(:,i),1,128);%x=1:128;%hx=1:128;%de_OFDM_0(:,i)=interp1(x,depliot_2(i,:),hx,'pchip');%线性插值endde_OFDM_1=zeros(128,128);fori=0:30de_OFDM_1(:,4*i+1)=depliot_1(:,i+1);de_OFDM_1(:,4*i+2)=depliot_1(:,i+1)+(depliot_1(:,i+2)-depliot_1(:,i+1))/4;de_OFDM_1(:,4*i+3)=depliot_1(:,i+1)+(depliot_1(:,i+2)-depliot_1(:,i+1))/2;de_OFDM_1(:,4*i+4)=depliot_1(:,i+1)+(depliot_1(:,i+2)-depliot_1(:,i+1))/4*3;endde_OFDM_1(:,125)=depliot_1(:,32);de_OFDM_1(:,126)=depliot_1(:,32);de_OFDM_1(:,127)=depliot_1(:,32);de_OFDM_1(:,128)=depliot_1(:,32);de_OFDM_2=de_OFDM_data.*de_OFDM_1;%还原数据de_OFDM_3=[];fori=2:4:126de_OFDM_3=[de_OFDM_3,de_OFDM_2(:,i:i+2)];%提取出128*96
本文标题:移动通信系统课设——OFDM系统仿真
链接地址:https://www.777doc.com/doc-4319736 .html