数字通信OFDM浅析论文课件.docx
《数字通信OFDM浅析论文课件.docx》由会员分享,可在线阅读,更多相关《数字通信OFDM浅析论文课件.docx(15页珍藏版)》请在冰豆网上搜索。
![数字通信OFDM浅析论文课件.docx](https://file1.bdocx.com/fileroot1/2023-1/26/d56ee874-a121-4007-868e-0775dc010807/d56ee874-a121-4007-868e-0775dc0108071.gif)
数字通信OFDM浅析论文课件
中南*********学硕士研究生数字通信
2015—2016学年第一学期
课程论文
课程名称:
数字通信
学院:
************学院
专业:
电子与通信工程
学号:
**********
姓名:
PYD
目录:
0概述3
1具体原理3
1.1频分复用FDM与正交频分复用OFDM3
1.2时域与频域分析3
2MATLAB仿真实现3
3课程小结7
4附录:
MATLAB仿真代码8
4.1.OFDM.m8
4.2.qpsk.m11
4.3.fft_my.m13
4.4.Deqpsk.m13
正交频分复用及其仿真实现
摘要:
正交频分复用技术(OFDM)自快速傅里叶变换问世开始形成研究热点,这门技术正在3G、4G乃至5G得到广泛应用;针对陈老师上课所讲内容以及自己学习探索,总结了我所理解正交频分复用过程以及基于MATLAB基本仿真和问题分析,最后给出课程小结。
关键词:
正交频分复用;傅里叶变换;时域;频域;高斯通道
0概述
20世纪60年代,已经提出了使用平行数据传输和频分复用(FDM)的概念;20世纪70年代,人们应用离散傅里叶变换(DFT)和快速傅里叶方法(FFT)研制了一个完整的多载波传输系统,叫做正交频分复用(OFDM)系统;20世纪80年代后,OFDM的调整技术再一次成为研究热点;3GPP/3GPP2成员多数推荐OFDM作为第四代移动通讯无线接入技术之一;目前,OFDM技术在4GLTE技术中已得到使用,是LTE三大关键技术之一,预计在5G仍然作为主要的调制方式。
因为正交频分复用中的多载波传输技术能有效解决宽带无线通信中面临的干扰问题非常适合移动环境下的高速数据传输,正因如此OFDM技术才越来越受人们重视并得到广泛引用。
1具体原理
XX百科给出的OFDM的主要思想是:
将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。
正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI)。
每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
根据百科提供的主要思想,我想做一个信号输入通过然后通过高斯通道输出的简单仿真模型,但是要在仿真前搞清楚基本原理,是怎么实现信号传输的。
1.1频分复用FDM与正交频分复用OFDM
通俗来讲,FDM是频分复用,即将一个信道按频段分开给不同用户使用;OFDM是正交频分复用,将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输,不同之处在于正交性。
1.2时域与频域分析
时域上分析,根据模型图1所示,不同发送信息a与不同周期上子载波相乘,在高斯通道中形成叠加信号,每个子载波序列都在发送自己的信号,互相交叠在空中,最终在接收端看到的信号就是f(t),解调信号通过正交变换(公式1-3)恢复原发送信息a’。
(1-1)
(1-2)
(1-3)
图1
频域上分析,待发信息方波a频域变换为Sa函数,而载波信号正弦波sint频域变换为冲击函数,实际传输信号则由图可得实质为对发送信号a进行频谱搬移,如图2、3所示:
图2图3
根据奈奎斯特第一准则,码元速率为1/T(即每个码元的传输时长为T),进行无码间串扰传输时,所需的最小带宽称为奈奎斯特带宽。
理想低通信道W=1/(2T),理想带通信道,W=1/T,当各路复用信号叠加在一起时满足奈奎斯特准则,因此可得结论结论:
OFDM的子载波间隔最低能达到奈奎斯特带宽,即达到了理想信道的频带利用率。
2MATLAB仿真实现
通过设置信号源,QPSK调制,IFFT变换,上采样,FIR滤波,经过高斯通道,LFIR滤波,下采样,拆帧,FFT变换,QPSK解调得到接收数据。
设置时用0/1做信号源,通过判决产生随机信号,此时生成如图4,进行QPSK调制函数需要自己编写,因此需要再生成一个新的源文件用于编写,命名qpsk.m,此时可以生成眼图,如图5:
图4图5
进行组帧预处理,将数据分为216个一组,并在前后各插入20个0,载波间插入0保护CP,之后进行IFFT运算,因为IFFT是FFT的逆运算,可以将数据取共轭之后除以256做FFT再取共轭,设置4个IFFT信号组成一帧符号,观察一帧信号上采样前波形如图6,之后设置抽样频率Fs=16*8MHz信号点数为data_num*8,可以得到较完整频谱图如图7:
图6图7
进行FIR低通滤波,将插值后的信号与设计的低通滤波器卷积,得到发射信号,同时利用雷米兹交替算法设计等波纹滤波器,通带波动δ=0.1,阻带最小衰减At=20dB,通带边界7MHz和阻带边界7.5MHz,等波纹低通滤波器输出波形如图8所示:
图8
发送一帧信号的波形与频谱得到频域图如图9,时域波形图如图10所示:
图9图10
在发射信号中加入高斯白噪声y= awgn(x,SNR),其中SNR为信噪比,在信号x中加入高斯白噪声,得到发送一帧加燥信号的频谱图如图11,时域波形图如图12所示:
图11图12
然后通过FIR低通滤波器得到接收一帧去噪信号的频谱如图13,再经过下采样得到一帧频谱如图14:
图13图14
然后要再进行FFT变换此时需要调用外部函数,命名为fft_my,之后进行QPSK解调,生成眼图如图15:
图15
3课程小结
考虑多径效应造成的干扰,有两种方法可以实现,为了消除码间干扰,需要在OFDM中每个符号插入保护时间,保护时间大于多径时延扩展,则信号多径分量不会干扰相邻信号;同时由于多径效应影响,子载波可能不保持相互正交,引起子载波间干扰,可以在保护时间内发送循环扩展信号,即循环前缀。
通过简单仿真完成正交频分复用过程在现,中间遇到调用函数通过查找文献或参考查找别的文档补充,最终调试无误;不足之处是,当各个子载波相位相同或者相近时,叠加信号便会受到相同初始相位信号的调制,从而产生较大的瞬时功率峰值,仿真未考虑降低PAPR。
最后衷心感谢陈老师授课指导。
4附录:
MATLAB仿真代码
4.1OFDM.m
clearall
closeall
clc
globalseq_num%帧数
globaldata_num%信号数
globalnum2%qpsk调制后符号数
globalnum3%列数
globalSNR%噪声
globalN%采样率
globaln%滤波器阶数
%++++++++++++++开始++++++++++++++++++++++
seq_num=20
data_num=216*4*seq_num;
seq_num=num3/4;
data_in=rand(1,data_num);
data_in=double(data_in>0.5);
figure
(1);
stem(data_in);
xlabel('原始信号');
%+++++++++++++进行QPSK调制+++++++++++++++
data_qpsk=qpsk(data_in);%调用自编QPSK函数见后面
num2=data_num/2
scatterplot(data_qpsk);grid;
num3=num2/216
data_fram1=reshape(data_qpsk',216,num3);
data_fram1=data_fram1'
temp=zeros(num3,20);
data_fram2=horzcat(temp,data_fram1,temp);
%++++++++++++IFFT变换++++++++++++++++++++
ifftin=data_fram2;
forFs1=1:
num3
IFFTdata(Fs1,:
)=fft_my(conj(ifftin(Fs1,:
))/256);调用自编fft_my函数见后面
IFFTdata(Fs1,:
)=conj(IFFTdata(Fs1,:
));
end
%+++++++++++IFFT数据频谱搬移++++++++
IFFTdata(:
2:
2:
end)=-IFFTdata(:
2:
2:
end)
%+++++++++++组帧++++++++++++++++++++
FRAMdata1=reshape(IFFTdata',256*4,num3/4);
FRAMdata=FRAMdata1';
f5=fftshift(fft(FRAMdata(1,:
)))
w5=linspace(-16*10^6/2,16*10^6/2,1024)
figure(3);
plot(w5,abs(f5));
title('2号一帧信号上采样前的频谱')
xlabel('频率/Hz');
%++++++++++上采样++++++++++++++++++++
N=8;
FRAM_temp=upsample(FRAMdata1,N);
data_up=FRAM_temp';
%f=fftshift(fft(x));
%w=linspace(-Fs/2,Fs/2,N);%频率坐标,单位Hz
%plot(w,abs(f));
%title('信号的频谱');
%xlabel('频率(Hz)');
f1=fftshift(fft(data_up(1,:
)))
w1=linspace(-128*10^6/2,128*10^6/2,1024*8)
figure(4);
plot(w1,abs(f1));
title('3号一帧信号上采样后的频谱')
xlabel('频率/Hz');
%++++++++FIR低通滤波++++++++++++++++++
%δ1=1-10^(-δ/20)=0.0559;δ2=10^(-At/20)=0.1
fedge=[7*10^67.5*10^6];
mval=[10];
dev=[0.05590.1];
fs=128*10^6;
[n,fpts,mag,wt]=remezord(fedge,mval,dev,fs);
lp_my=remez(n,fpts,mag,wt);
[h,w]=freqz(lp_my,1,256);
figure(5);
plot(w*64*10^6/pi,20*log10(abs(h)));
grid;
title('等波纹的低通滤波器')
xlabel('频率/Hz');
ylabel('幅度/dB');
seq_num=num3/4;
forFs2=1:
seq_num
data_sd(Fs2,:
)=conv(data_up(Fs2,:
),lp_my)
end
f2=fftshift(fft(data_sd(1,:
)))
w2=linspace(-128*10^6/2,128*10^6/2,8192+n)
figure(6);
plot(w2,abs(f2));
title('4号发送一帧信号的频谱')
xlabel('频率/Hz');
%x=1/(128*10^6):
1/(128*10^6):
8192/(128*10^6);
figure(7);
plot(abs(data_sd(1,:
)));
set(gca,'XTickLabel',str2num(get(gca,'XTickLabel'))/(128*10^3))
title('4号发送一帧信号的波形')
xlabel('时间/ms')
ylabel('幅度/V')
%+++++++++高斯信道+++++++++++++++++
SNR=10;
data_snr=awgn(data_sd,SNR-10*log10(N),'measured');
figure(8);
plot(abs(data_snr(1,:
)));
set(gca,'XTickLabel',str2num(get(gca,'XTickLabel'))/(128*10^3))
title('5号发送一帧加噪声信号的波形')
xlabel('时间/ms')
ylabel('幅度/V')
f3=fftshift(fft(data_snr(1,:
)))
w3=linspace(-128*10^6/2,128*10^6/2,8192+n)
figure(9);
plot(w3,abs(f3));
title('5号发送一帧加噪声信号的频谱')
%+++++++++FIR低通滤波+++++++++++++++
forFs3=1:
seq_num
data_re(Fs3,:
)=conv(data_snr(Fs3,:
),lp_my)
end
f4=fftshift(fft(data_re(1,:
)))
w4=linspace(-128*10^6/2,128*10^6/2,8192+n*2)
figure(10);
plot(w4,abs(f4));
title('6号接收一帧去噪声信号的频谱')
data_re_temp=data_re(:
n:
8192+n-1)
%+++++++++下采样++++++++++++++++++++
data_dn_temp=downsample(data_re_temp',N);
data_dn=data_dn_temp'
f6=fftshift(fft(data_dn(1,:
)))
w6=linspace(-16*10^6/2,16*10^6/2,1024)
figure(11);
plot(w6,abs(f6));
title('7号接收一帧信号下采样后的频谱')
xlabel('频率/Hz');
%++++++++++拆帧+++++++++++++++++
data_unFR1=reshape(data_dn_temp,256,num3);
data_unFR=data_unFR1'
%++++++++++FFT++++++++++++++++++
data_unFR(:
2:
2:
end)=-data_unFR(:
2:
2:
end)
fftin=data_unFR;
forFs1=1:
num3
FFTdata(Fs1,:
)=fft_my(fftin(Fs1,:
));
end
%++++++++++QPSK解调+++++++++++++
data_DEqpsk1=FFTdata(:
21:
256-20);
data_DEqpsk2=reshape(data_DEqpsk1',num2,1)
data_DEqpsk=data_DEqpsk2'
scatterplot(data_DEqpsk);grid;
data_out=deqpsk(data_DEqpsk)
num_err=length(find(data_in~=data_out));
Pe=num_err/data_num;
4.2Qpsk.m
functiondout=qpsk(din)
%+++++++++++++++++++++++variables++++++++++++++++++++++++++++
%din输入数据
%dout输出数据
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
din2=1-2*din;
din_temp=reshape(din2,2,length(din)/2);
fori=1:
length(din)/2
dout(i)=din_temp(1,i)+j*din_temp(2,i);
End
4.3fft_my.m
functiondout=fft_my(din)
%+++++++++++++++++++++++variables++++++++++++++++++++++++++++
%din输入数据
%dout输出数据
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
m=nextpow2(din)
N=2^m
iflength(din)din=[din,zeros(1,N-length(din))];
end
nxd=bin2dec(fliplr(dec2bin([1:
N]-1,m)))+1;
y=din(nxd);
formm=1:
m
Nmr=2^mm;
u=1;
WN=exp(-i*2*pi/Nmr);
forj=1:
Nmr/2
fork=j:
Nmr:
N
kp=k+Nmr/2;
t=y(kp)*u;
y(kp)=y(k)-t;
y(k)=y(k)+t;
end
u=u*WN;
end
end
dout=y;
2.4Deqpsk.m
functiondout=deqpsk(din)
%实现QPSK解调
%+++++++++++++++++++++++variables++++++++++++++++++++++++++++
%din输入数据
%dout输出数据
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
dout_temp(1,:
)=real(din);
dout_temp(2,:
)=imag(din);
dout=reshape(dout_temp,1,length(din)*2);