OFDM通信系统抗多径衰落干扰研究.doc_第1页
OFDM通信系统抗多径衰落干扰研究.doc_第2页
OFDM通信系统抗多径衰落干扰研究.doc_第3页
OFDM通信系统抗多径衰落干扰研究.doc_第4页
OFDM通信系统抗多径衰落干扰研究.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

OFDM通信系统抗多径衰落性能仿真陈晓炜 王家慧 谢丽惠摘要:正交频分复用(OFDM)是第四代移动通信的核心技术。本文先简要介绍了OFDM的基本原理,然后进行了OFDM添加循环前缀后可以抗多径干扰的数学推导,在给出OFDM系统模型的基础上,用MATLAB语言对系统进行了仿真。最后给出不同信道下,循环前缀、均衡技术对系统误码率影响的比较曲线,并得出结论。关键词:正交频分复用,仿真,循环前缀,均衡Simulation of OFDM communication system anti-multipath-degradation performanceCHEN Xiao-wei, WANG Jia-hui, XIE Li-huiAbstract: OFDM is the key technology of 4G mobile communication. In this article OFDM basic principle is briefly introduced. Then, a mathematical derivation is given to reveal the influence of CP on the system. Based on the given system model, OFDM system is computer simulated with MATHLAB language. Finally, the BER curves of CP and equalizer are given and compared. A conclusion is done at last.Keyword: OFDM, simulation, CP, equalizer一、 背景现代移动通信的技术发展趋势之一是移动宽带化,移动系统的宽带接入基本上是发生在靠近用户的最后一公里内,这个范围内的无线信道环境是很恶劣的,会存在多径传输以及由此引发的时间色散效应。在低数据率的情况下,时间色散对接收信号的形状没有明显的影响,但是随着传输数据率的提高,时间色散和由之引起的码间串扰(ISI)将会严重影响系统性能,因而有必要采取相应的技术来克服这种影响。一种方法是采用信道均衡技术,例如,在GSM系统里,五个符号内的ISI可以被均衡,但是随着数据率的进一步增加,信道估计以及均衡所需的代价可能变得无法接受。OFDM(正交频分复用)传输技术提供了让数据以较高的速率在较大延迟的信道上传输的另一种途径。OFDM是一种多载波调制MCM(Multiple Carrier Modulation)技术,其基本思想始于20世纪50年代,是由R.R.Mosier和R.G.Clabaugh提出的。随后R.W.Chang在文献中首先引入了带限信道中无载波间串扰ICI和符号间串扰ISI并行数据传输的原则,提出了正交多载波传输OFDM的概念。它将串行高速信息数据流变换成为若干路并行低速数据流,每路低速数据流被调制在彼此正交的子载波上,然后所有子载波叠加在一起构成发送信号。由于OFDM具有较高的频谱利用率,且能够通过IFFT/FFT等高效算法实现,因此目前它已成为应用最为广泛的多载波调制方式。OFDM作为一种高效数据传输技术深受关注,并陆续成为多个标准的关键技术,如数字音频广播DAB、数字视频广播DVB、无线局域网IEEE802.11a、数字电视DTV陆地广播标准以及xDSL等标准,并有可能成为下一代移动通信系统的核心技术之一。二、 OFDM系统的原理和框图OFDM系统将整个带宽为B分解为N个子信道,然后将一组数据调制到这组子载波对应的子信上。在大部分OFDM系统中,子信道是平均分配的,即子信道的带宽为。输入数据先按照分组形式进行缓存,然后分为N 个 bit流。这些bit流影射为一些复的信号点。信号的调制是由N点的逆付里叶变换完成。然后这些被调制的信号通过并/串转换器形成一串行数据流。周期前缀的构造是将最后的v个样本数据插入到整串数据的前边进行发送。可以看出整个符号的时延是N/B,然而真正的分组时延是,抽样率为B。如果没有周期前缀的话,则。在接收端,前缀部分将被删除,解调算法采用离散付里叶变换。实事上,如果周期前缀足够长,则两个相邻的OFDM符号间的干扰被删除,各子信道可以看成相互独立的。OFDM系统的基本原理框图如图1所示, 图1 OFDM系统原理框图三、 OFDM的优缺点关键问题OFDM具有许多优点,它的频谱利用率高,有较强地抗时延扩展能力和频率选择性衰落能力,可通过高效的IFFT/FFT实现,还易于和其它高频谱利用率技术结合。但是,OFDM系统中存在着多个正交的子载波,而且输出信号时多个子信道信号会叠加,因而和单载波系统相比,OFDM也存在一些缺点,如对载波频率偏差非常敏感,具有较高的峰值平均功率比PAPR等。OFDM系统的关键技术主要有以下几个方面:(1)时钟同步(2)频偏估计(3)信道估计(4)如何降低峰值平均功率比(5)抑制窄带脉冲干扰与带外信号干扰(6)信道资源动态优化分配问题四、 本次课题涉及的主要问题我们小组针对移动通信系统中多径干扰的问题,从添加CP如何抗ISI和均衡如何进一步提高抗干扰效果两个方面对OFDM系统进行仿真。五、 OFDM系统的等效数学模型及数学推导假设发送端信号为s(t),经过多径时延信道后,接收到的信号为r(t),则(1)其中为时延,为加性高斯白噪声(AWGN),为信道的冲激响应。有(2)为最大时延,将上式离散化后(假设采样速率足够,且忽略量化误差)得到(3)其中 为离散化后最大的时延点数, 。OFDM系统中,不加CP的传输表示如下(4)在(4)式中,为输入信号,为上一符号的部分输入。可见,没加CP的时候,一个OFDM符号的输出不仅与本符号的输入有关,且与上一符号的输入有关。其中,第i个子信道表示如下(5)第个子信道开始,受到串扰影响,共有个子信道受到影响。CP的添加如图2所示。数据块长度 LCP长度 L时延长度 v截断长度 L实际进行FFT长度 N时延长度 v截断长度 L实际进行FFT长度 N一个OFDM的实际长度N+ L时延长度 v串扰CP长度 L图2 添加CP示意图添加CP后,当时延v小于等于CP长度L时,传输可表示如下(6)其中,第i个子信道接收到的数据表示如下(7)可见,当添加的CP长度大于时延长度时,可以完全消除OFDM符号间串扰。现在,考虑当时延长度大于CP长度L时,第i个子信道数据表示如下(8)上式中,到为其它OFDM符号的输入,即其它符号对本符号产生的串扰。特别地,在临界情况下有此时导致串扰的输入正好完全消失。上述推导证明了添加CP可以消除OFDM传输中的符号间串扰。因此,为保证OFDM系统传输中不产生符号间串扰,应保证CP长度大于信道的最大多径时延。六、 OFDM系统仿真模型针对研究目标,将对系统模型进行简化,认为接收端为理想同步。具体框图如图3。串/并并/串QAM调制QAM解调信号源(随机数)接收结果性能统计插入前导码FFTIFFT去除CP添加CP串/并并/串信道(多径,噪声)简单信道均衡图3 OFDM系统仿真框图仿真方案:根据研究点,确定如下仿真内容(1) 未加CP的系统在不同信道下的性能(2) 多径衰落信道下,系统有无添加CP的性能(3) 已经添加CP情况下,系统有无均衡的性能 OFDM系统仿真参数(1) IFFT/FFT点数 256(2) 子载波数 50(3) 子信道调制方式 4QAM(4) CP 长度 16七、 OFDM系统仿真结果及分析通过使用MATLAB语言编写程序,进行仿真,得到仿真曲线图4、图5、图6。图4 高斯信道和多径信道下的系统误码率曲线图4给出高斯信道下和多径衰落信道下系统的误码率曲线,该曲线表明OFDM系统仿真过程正确,在多径信道环境下,系统的性能急剧恶化。图5 多径衰落信道下CP对误码率影响曲线图5给出了多径衰落信道下添加CP与为添加CP的系统误码率曲线,该曲线表明添加CP可以有效提高系统抗多径衰落干扰。在信噪比较低的情况下,添加CP对系统性能影响不大,原因可能是信噪比较低时,系统的干扰主要是高斯白噪声干扰,当信噪比提高后,系统干扰转变为多径衰落干扰为主,因此添加CP对系统性能改善明显。图6 多径衰落信道下均衡对误码率影响曲线图6给出了多径衰落信道下有无添加均衡对系统误码率的影响曲线,该曲线表明使用均衡可以进一步提高系统性能,但改善有限。原因可能是因为我们使用的训练序列是随机序列,均衡方法为LMS,使用其它训练序列和均衡方法后,可能可以进一步改善系统性能。八、 结论本文对OFDM系统进行仿真研究,用MATLAB语言编写了OFDM系统发送、信道和接收整个系统,在系统仿真正确的前提下,对CP、均衡等改善系统性能的方法进行仿真验证,得到预期结果。在做课题期间,受到王琳老师的热心指导,学会了很多工程上的设计理念,我们在此表示感谢;同时,小组内队员互相配合,发扬了团队精神,此文是我们小组共同取得的成果。今后我们将继续努力,争取更多进步。附录:OFDM系统仿真MATLAB代码ofdm_mod.mfunction qam_out = Qam4_mod(qam_in)% 4QAM 调制函数% 输入: 矩阵,列数必须是4的倍数,01序列% 输出: 矩阵,4qam调制后的矩阵global QamTableglobal bitPerSymbol;QamTable = -1-i, 1-i, -1+i, 1+i ; m, n = size(qam_in);qam_out = zeros(m,n/bitPerSymbol);for k = 1:m QamTmp = reshape(qam_in(k,:),bitPerSymbol,n/bitPerSymbol); QamTmpTmp = bi2de( QamTmp, left-msb); qam_out(k, :) = QamTable( QamTmpTmp+1 );endofdm_demod.mfunction qam_out = Qam4_demod(qam_in)% 4QAM 解调函数% 输入: 矩阵,列数必须是的的倍数% 输出: 矩阵,解调后的01序列矩阵% 之前必须调用过global QamTable;global bitPerSymbol ;m,n = size(qam_in);qam_out = zeros(m,n*bitPerSymbol);% 判决for k = 1:m delt = abs(reshape(qam_in(k,:), n, 1)*ones(1,4) - ones(n,1)*QamTable); %求最近的点 tmp, index = min(delt,2); %得到索引值 qam_outTmp = de2bi(index-1,bitPerSymbol,left-msb); qam_out(k,:) = reshape(qam_outTmp,1,bitPerSymbol*n);endofdm_mod_neq.mfunction s_out = ofdm_mod_neq( s_in )% ofdm 调制,无均衡% 输入:二进制序列% 输出:ofdm调制后符号%global CP_len;global nSubCglobal ifft_len;global symbolPerCarrier;global bitPerSymbol;global CP_len;global carriers;len = length(s_in);SQam = reshape(s_in, nSubC,len/nSubC); %串并转换PQam = Qam4_mod(SQam);carriers = (1: nSubC) + (floor( ifft_len/4) - floor(nSubC/2); conj_carriers = ifft_len - carriers + 2; P_IFFT = zeros(ifft_len, symbolPerCarrier ); % 一个符号块,含4列训练序列,1列 0P_IFFT(carriers,:) = PQam;P_IFFT(conj_carriers,:)=conj(PQam); % 构造共轭矩阵PCh = real(ifft( P_IFFT ); PCh2 = cat(1, PCh(ifft_len-CP_len+1):ifft_len,:), PCh); % 添加 CPs_out = reshape(PCh2, 1, (ifft_len+CP_len)*(symbolPerCarrier); %并串转换ofdm_mod_eq.mfunction s_out = ofdm_mod_eq( s_in )% ofdm 调制,带均衡% 输入:二进制序列% 输出:ofdm调制后符号%global CP_len;global nSubCglobal ifft_len;global symbolPerCarrier;global bitPerSymbol;global trainingSymbols;global trainingSymbols_len;global CP_len;global carriers;len = length(s_in);SQam = reshape(s_in, nSubC,len/nSubC); %串并转换PQam = Qam4_mod(SQam);tmpTable = -1,1,i,-i;trainingSymbols_len = 10;trainingSymbols = (tmpTable(floor( 4*rand(trainingSymbols_len,nSubC)+1 );PQam = cat(2,zeros(nSubC,1),PQam);PQam = cat(2,trainingSymbols,PQam);carriers = (1: nSubC) + (floor( ifft_len/4) - floor(nSubC/2);conj_carriers = ifft_len - carriers + 2;P_IFFT = zeros(ifft_len,1 + symbolPerCarrier + trainingSymbols_len); P_IFFT(carriers,:) = PQam;P_IFFT(conj_carriers,:)=conj(PQam) ; PCh = (ifft( P_IFFT ,ifft_len,1); PCh2 = cat(1, PCh(ifft_len-CP_len+1):ifft_len,:), PCh); % 添加 CPs_out = reshape(PCh2, 1, (ifft_len+CP_len)*(symbolPerCarrier +trainingSymbols_len + 1); %并串转换channel.mfunction s_out = channel(s_in, SNR)% 信道函数% 模拟多径信道global fade;Len = length(s_in);f_len = length(fade);sch = s_in;for m = 1:f_len sch(1+m:Len) = sch(1+m:Len) + fade(m)*(s_in(1:Len-m);end% 高斯信道Tx_signal_power = var(sch); % 方差linear_SNR = 10( SNR /10) ;noise_sigma = Tx_signal_power / linear_SNR;noise_scale_factor = sqrt(noise_sigma) ;noise = randn(1, length(sch) )*noise_scale_factor; %模拟信道噪声,为随机数,即高斯白噪s_out = sch + noise;ofdm_demod_neq.mfunction s_out = ofdm_demod_neq(s_in)% ofdm 解调% 输入为二进制序列global ifft_len;global CP_len;global bitPerSymbol;global symbolPerCarrier;global carriers;global s_len;P_S = reshape(s_in, ifft_len+CP_len, symbolPerCarrier); % 接收 ,进行串并转换PDeCP = P_S(1+CP_len:ifft_len+CP_len,:); %去CPP_FFT = fft(PDeCP);P_FFT2 = P_FFT(carriers,:);SQam = Qam4_demod(P_FFT2);s_out = reshape(SQam,1,s_len); % 并串转换ofdm_demod_eq.mfunction s_out = ofdm_demod_eq(s_in)% ofdm 解调% 输入为二进制序列global trainingSymbols;global trainingSymbols_len;global ifft_len;global CP_len;global bitPerSymbol;global symbolPerCarrier;global carriers;global s_len% 接收 ,进行串并转换P_S = reshape(s_in, ifft_len+CP_len, symbolPerCarrier + trainingSymbols_len + 1);PDeCP = P_S(1+CP_len:ifft_len+CP_len,:); %去C PP_FFT = fft(PDeCP,ifft_len,1);P_FFT2 = P_FFT(carriers,:);RxTrainSymbols = P_FFT2(:, (1: trainingSymbols_len);%RxTrainSymbols = P_FFT2(:, (1: trainingSymbols_len,size(P_FFT2,2)-trainingSymbols_len+1:size(P_FFT2,2);%信道均衡 H = RxTrainSymbols./ trainingSymbols;H_2 = H.2;H_2 = sum(H_2,2);H_C2 = sum(H,2);H_C2 = conj(H_C2); H = H_C2./H_2 ; % 1/H = conj(H)/H2P_FFT3 = H*ones(1,size(P_FFT2,2).*P_FFT2 ; P_FFT4 = P_FFT2(:,(trainingSymbols_len+2:size(P_FFT3,2);SQam = Qam4_demod(P_FFT4);s_out = reshape(SQam,1,s_len); % 并串转换test1.m% 本测试为 不同信道环境下系统误码率曲线%close all;clear all; clc; tic ; %计时开始global CP_len;global nSubC;global ifft_len;global bitPerSymbol;global symbolPerCarrier;global s_len;global fade; %信道衰弱% 测试参数%SNR = 40; % dBCP_len = 0;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50;% 开始测试s_len = nSubC*bitPerSymbol* symbolPerCarrier;SNR = 0:2:20;ber1 = zeros(1,length(SNR);ber2 = zeros(1,length(SNR);ber3 = zeros(1,length(SNR);for kk = 1:length(SNR) max = floor(2kk)/10)+10; fprintf(仿真信噪比: %dn, SNR(kk); fprintf(仿真点数: %dn, max*bitPerSymbol*symbolPerCarrier*nSubC); fade = 0; % 信道参数,下标为延时点数,值为衰减系数 ber = 0; for m = 1:max % 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_eq(s_in); sch = channel(sch,SNR(kk); s_out = ofdm_demod_eq(sch); %计算误比特率 err_count = sum(abs(s_in-s_out); ber = ber + err_count/s_len; end ber1(kk) = ber/max; fade = 0, 0, 0, 0, 0.4; % 信道参数 ber = 0; for m = 1:max s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_eq(s_in); sch = channel(sch,SNR(kk); s_out = ofdm_demod_eq(sch); %计算误比特率 err_count = sum(abs(s_in-s_out); ber = ber + err_count/s_len; end ber2(kk) = ber/max ; fade = 0, 0, 0, 0, 0.4, 0.3; % 信道参数,下标为延时点数,值为衰减系数 ber = 0; for m = 1:max % 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_eq(s_in); sch = channel(sch,SNR(kk); s_out = ofdm_demod_eq(sch); %计算误比特率 err_count = sum(abs(s_in-s_out); ber = ber + err_count/s_len; end ber3(kk) = ber/max ; endfigure(2);semilogy(SNR,ber1,o-);hold on;semilogy(SNR,ber2,r*-);hold on;semilogy(SNR,ber3,gv-);xlabel(SNR in dB);ylabel(Bit Error Rate);legend(AWGN,AWGN + 2 path,AWGN + 3 path);grid;toctest2.m% 多径信道下,有无添加CP的系统误码率曲线close all;clear all; clc; tic ; %计时开始global CP_len;global nSubC;global ifft_len;global bitPerSymbol;global symbolPerCarrier;global s_len;global fade; %信道衰弱% 测试参数CP_len = 0;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50;fade = 0, 0, 0, 0.4, 0.3; % 信道参数% 开始测试s_len = nSubC*bitPerSymbol* symbolPerCarrier;SNR = 0:2:30;ber1 = zeros(1,length(SNR);ber2 = zeros(1,length(SNR);for kk = 1:length(SNR) max = floor(2(kk)/50)+10; fprintf(仿真信噪比: %dn, SNR(kk); fprintf(仿真点数: %dn, max*nSubC*bitPerSymbol*symbolPerCarrier); CP_len = 0; ber = 0; for m = 1:max % 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_neq(s_in); sch = channel(sch,SNR(kk); s_out = ofdm_demod_neq(sch); %计算误比特率 err_count = sum(abs(s_in-s_out); ber = ber + err_count/s_len ; end ber1(kk) = ber/max; fprintf(cp=0 :%fn,ber1(kk); CP_len = 16; ber = 0; for m = 1:max % 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_neq(s_in); sch = channel(sch,SNR(kk); s_out = ofdm_demod_neq(sch); %计算误比特率 err_count = sum(abs(s_in-s_out); ber = ber + err_count/s_len; end ber2(kk) = ber/max ; fprintf(cp=16 :%fnn,ber2(kk); endfigure(2);semilogy(SNR,ber1,o-);hold on;semilogy(SNR,ber2,r*-);xlabel(SNR in dB);ylabel(Bit Error Rate);legend(no CP,CP);grid;toctest3.m% 本测试为 有无使用均衡情况下的系统误码率曲线%close all;clear all; clc; tic ; %计时开始global CP_len;global nSubC;global ifft_len;global bitPerSymbol;global symbolPerCarrier;global s_len;global fade; %信道衰弱% 测试参数%SNR = 40; % dBCP_len = 16;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50

温馨提示

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

评论

0/150

提交评论