《宽带无线接入技术》仿真实验四OFDM系统的同步问题解析Word文件下载.docx
《《宽带无线接入技术》仿真实验四OFDM系统的同步问题解析Word文件下载.docx》由会员分享,可在线阅读,更多相关《《宽带无线接入技术》仿真实验四OFDM系统的同步问题解析Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
要求一:
OFDM系统的数据传输
①传输的数据随机产生;
②调制方式采用16QAM;
要求二:
要求对BER的性能仿真
①设计仿真方案,比较两个CFO的性能(基于CP与基于训练符号Moose),并画出不同SNR下的两种估计技术的均方差(MSE)性能。
②设计仿真方案,接收信号受到CFO的影响,对比不同SNR下采用CP的CFO技术进行补偿与不进行补偿的BER性能。
二、OFDM系统的STO估计技术
①设计仿真方案,比较两个时域估计STO的性能(最大化相关与最小化差值),并画出不同STO值对应的采样点与幅度关系图。
②设计仿真方案,接收信号受到STO的影响,对比不同SNR下采用基于CP的滑动窗STO技术进行补偿与不进行补偿的BER性能。
请双面打印,按规定时间提交实验报告
三、仿真方案详细设计
在OFDM系统中,有4中同步需要考虑:
符号定时同步、样值定时同步、样值频率同步、载波同步。
在接收端,相干解调需要有与发送载波频率和相位都相同的载波,所以首先要进行载波同步;
其次,在进行A/D转换时,需要有与发射端相同的起始时刻和采样时钟,即样值定时同步和样值频率同步;
最后,由于样值时连续到达的,所以还必须确定OFDM符号是从什么地方开始的,又是从什么地方结束的,即符号定时同步问题。
这次仿真主要针对的是符号定时问题和载波频率同步问题,也就是STO(符号定时偏差)、CFO(载波频率偏差),我选择的是比较两个时域估计STO的性能包括最大化相关STO_by_correlation与最小化差值STO_by_difference,对比不同SNR下采用基于CP的滑动窗STO技术进行补偿与不进行补偿的BER性能这个仿真题目。
STO:
由于在OFDM符号之间插入了循环前缀保护间隔,如果定时的偏移量与最大时延扩展的长度之和小于循环前缀的长度,此时子载波之间的正交性仍然成立,没有符号间干扰(ISI)和载波间干扰(ICI),对解调出来的数据信息符号的影响只是一个相位的旋转。
如果定时的偏移量与最大时延扩展的长度之和大于循环前缀的长度,这时一部分数据信息就会丢失,而且最为严重的是子载波之间的正交性遭到破坏,由此带来了ISI和ICI。
仿真第二个问题时,偏差只需要一个,然后进行有补偿kk1=1:
Nfft,kk2=1:
Nofdm+nd-1和没有进行补偿的kk4=1:
Nfft,kk5=1:
Nofdm两种进行比较。
四、仿真结果及结论
从实验结果图可以看出,在比较两个时域估计STO的性能中,最大化相关STO_by_correlation与最小化差值STO_by_difference这两种方法中,最大化相关这种方法要稍微比最小化差值这种方法看起来更准确一些,但是实际上两者应该是差不多的。
最大化相关的结果几乎是完全准确的,但是最小化差值有一定的偏差,估计得不是特别好。
在仿真第二个题目时,接收信号受到STO的影响,对比不同SNR下采用基于CP的滑动窗STO技术进行补偿与不进行补偿的BER性能,下图可以看出未进行补偿的BER性能几乎是一条直线,但进行了补偿的应该是一条误码率越来越小的斜线,但是不知道为什么最终仿真结果图就是达不到这样的效果。
只能说在仿真的时候,估计延后的位置十分重要,如果估计得不够准确就会造成很大的误码率,在程序中我令nSTO=-3,但是估计出来的nd=-2。
五、总结与体会
同步技术是任何一个通信系统都需要解决的实际问题,直接关系到通信系统的整体性能。
没有准确的同步算法,就不可能进行可靠地数据传输。
OFDM多载波调制系统与其他数字通信系统一样,也需要可靠地同步技术。
OFDM系统通过引入循环前缀(CP)来容纳符号间干扰,一般CP的长度都设计得大于最大信道时延,只要OFDM符号的FFT窗开始位置处于无符号间干扰的CP部分就不会带来符号间干扰,因此存在循环前缀的OFDM系统对时间同步的要求其实不是很高。
OFDM系统相较于其他的单载波调制系统来说存在很多优异特性是因为OFDM系统各个子载波间相互正交,但是恰恰也是因为OFDM系统各子载波间的正交性,使得OFDM系统对系统频偏非常敏感。
所以一个系统不可能是完美的,有利必有弊,只能够尽量去克服去改善而不能完全优化。
这一次的仿真实验我觉得是难度最大的,特别是在最后有进行补偿和没有进行补偿的BER性能比较的时候,一开始两者的误码率都很乱,在修改了很多次以后稍微好了一些,但是感觉始终存在问题。
六、主要仿真代码
时域估计STO的性能比较:
clearall;
clc;
nSTOs=[-3-322];
%延后的位置
M=16;
Nfft=64;
N_iter=1000;
%迭代次数
Ng=Nfft/4;
Nofdm=Nfft+Ng;
%64+16
com_delay=Nofdm/2;
%滑动窗口的起始位置40
Nsym=3;
%一帧有3个OFDM符号
fori=1:
length(nSTOs)
nSTO=nSTOs(i);
x=[];
form=1:
Nsym
X=randint(1,Nfft,M);
Xmod=qammod(X,M);
%16QAM调制
xt=ifft(Xmod);
%IFFT
x_g=[xt(Nfft-Ng+1:
Nfft),xt];
x=[xx_g];
end
y=x;
y_STO=add_STO(y,nSTO);
Mag_cor=0;
Mag_dif=0;
forj=1:
N_iter
y_aw=awgn(y_STO,40,'
measured'
);
%噪声
[STO_cor,mag_cor]=STO_by_correlation(y_aw,Nfft,Ng,com_delay);
%最大化相关
[STO_dif,mag_dif]=STO_by_difference(y_aw,Nfft,Ng,com_delay);
%最小化差值
Mag_cor=Mag_cor+mag_cor;
Mag_dif=Mag_dif+mag_dif;
[Mag_cor_max,ind_max]=max(Mag_cor);
nc=ind_max-1-com_delay;
[Mag_dif_min,ind_min]=min(Mag_dif);
nd=ind_min-1-com_delay;
%估值
nn=-com_delay+[0:
length(Mag_cor)-1];
subplot(2,2,i);
plot(nn,Mag_cor,'
b:
'
nn,Mag_dif,'
r'
),holdon
xlabel('
Sample'
),ylabel('
Magnitude'
legend('
Correlation-dased'
'
min-error-based'
stem(nc,Mag_cor(nc+com_delay+1),'
b'
stem(nd,Mag_dif(nd+com_delay+1),'
stem(nSTO,Mag_dif(nSTO+com_delay+1),'
k.'
end
进行补偿和未补偿的BER性能比较:
nSTO=-3;
%延时
EbN0=[20:
30];
N_iter=1;
%sigPow=0;
%发射功率
fork=1:
length(EbN0)
Neb1=0;
Neb2=0;
fori=1:
length(nSTO)
nSTO1=nSTO(i);
X1=[];
%映射成1-15的整数
X1=[X1,X];
X_mod=qammod(X,M);
xt=ifft(X_mod);
x_GI=[xt(Nfft-Ng+1:
%加cp:
将Ng-Nfft搬到整个OFDM符号前面
x=[x,x_GI];
y_STO=add_STO(y,nSTO1);
y_aw=awgn(y_STO,EbN0(k),'
[Mag_dif_min,ind_min]=min(mag_dif);
%估计偏差值
%nd=-3;
%进行补偿的
kk1=1:
Nfft;
kk2=1:
Nofdm+nd-1;
ifi==1
y1=y_aw(kk2);
%判断是否是第一帧
y2=y1(Ng+nd:
end);
%去CP
kk3=kk2(end)+1:
kk2(end)+Nofdm;
else
y1=y_aw(kk3);
%取出后面的帧
y2=y1(Ng+1:
kk3=kk3+Nofdm;
y1_b=fft(y2);
Y_mode1(kk1)=y1_b;
kk1=kk1+Nfft;
%无补偿的
kk4=1:
kk5=1:
Nofdm;
fori=1:
y2=y_aw(kk5);
y2_1=y2(Ng+1:
y2_b=fft(y2_1);
Y_mode2(kk4)=y2_b;
kk5=kk5+Nofdm;
kk4=kk4+Nfft;
X_r1=qamdemod(Y_mode1,M);
X_r2=qamdemod(Y_mode2,M);
Neb1=sum(sum(de2bi(X_r1,4)~=de2bi(X1,4)));
%错误的比特数
Neb2=sum(sum(de2bi(X_r2,4)~=de2bi(X1,4)));
Ber1(k)=Neb1/(4*Nfft*Nsym);
%误码率
Ber2(k)=Neb2/(4*Nfft*Nsym);
semilogy(EbN0,Ber1,'
-*'
holdon;
EbN0[dB]'
ylabel('
Ber'
semilogy(EbN0,Ber2,'
-*r'
进行补偿的'
无补偿的'
最小化差值:
function[STO_est,Mag]=STO_by_difference(y,Nfft,Ng,com_delay)
%80
mininum=100;
STO_est=0;
ifnargin<
4%四个参数
%滑动窗口的起始位置
forn=1:
Nofdm
n1=n-1;
nn=n1+com_delay+[0:
Ng-1];
tmp0=abs(y(nn))-abs(y(nn+Nfft));
Mag(n)=tmp0*tmp0'
;
%差值的平方
ifMag(n)<
mininum,
mininum=Mag(n);
STO_est=com_delay+n1-Nofdm;
%估计值