【OFDM:四】OFDM系统同步问题

目录

一、题目

二、仿真要求

(一)、OFDM系统的CFO估计技术

(二)、OFDM系统的STO估计技术

三、仿真方案详细设计

(一)、STO的定义及影响

(二)、STO的估计技术

四、仿真结果及结论

 五、代码


一、题目

OFDM系统的同步问题

二、仿真要求

以下题目二选一:

(一)、OFDM系统的CFO估计技术

要求一:OFDM系统的数据传输

①传输的数据随机产生;

②调制方式采用16QAM;

要求二:要求对BER的性能仿真

①设计仿真方案,比较两个CFO的性能(基于CP与基于训练符号 Moose),并画出不同SNR下的两种估计技术的均方差(MSE)性能。

②设计仿真方案,接收信号受到CFO的影响,对比不同SNR下采用CP的CFO技术进行补偿与不进行补偿的BER性能。

(二)、OFDM系统的STO估计技术

要求一:OFDM系统的数据传输

①传输的数据随机产生;

②调制方式采用16QAM;

要求二:要求对BER的性能仿真

①设计仿真方案,比较两个时域估计STO的性能(最大化相关与最小化差值),并画出不同STO值对应的采样点与幅度关系图。

②设计仿真方案,接收信号受到STO的影响,对比不同SNR下采用基于CP的滑动窗STO技术进行补偿与不进行补偿的BER性能。

三、仿真方案详细设计

本次选题为题二——OFDM系统的STO估计技术。

(一)、STO的定义及影响

在OFDM系统中,需要考虑4种同步,分别是符号定时同步、样值频率同步、样值定时同步、载波同步。接收机正常工作之前,OFDM系统至少需要完成两类同步问题,一是时域同步,时域同步要求OFDM系统确定符号边界,并且提取最佳的采样时钟,从而减小载波干扰和码间干扰造成的影响;二是频域同步,频域同步要求系统估计和校正接收信号的载波偏移。

令δ和ε分别表示归一化的符号定时偏差(STO)和载波频率偏差(CFO),当存在大小为δ的STO和大小为ε的CFO时,基带接收信号可以表示为

其中的k+ε是关于频率的,n+δ是关于符号位置的一项。

如果出现符号定时偏差STO,假设实际的δ=3,此时令n=1,若δ=0,得到的应为y[1],但由于实际的δ=3,此时得到的为y[4],但此时接收机会认为得到的y[4]为y[1]。

(二)、STO的估计技术

为了保证OFDM系统的性能,接收机必须利用同步技术来估计STO,即准确地估计出OFDM符号的起始点和结束点。

在OFDM系统中STO不仅能引起相位失真(通过均衡器补偿),还能引起ISI(无法修正),因此为了保证OFDM系统的性能,在接受机必须利用同步技术来估计STO,以便能够准确估计出OFDM符号的起始点。

1、时域STO估计技术

(1)基于CP的STO估计技术

考虑CP的长度为TG(NG个采样)、有效长度为Tsub(Nsub个采样)的OFDM符号,在时域中,通常使用CP或训练符号估计STO。

CP是OFDM符号中的一部分数据的副本。如下图所示B、B’分别表示CP的NG个采样点和OFDM有效数据中的NG个采样点,两者完全相同且相隔Nsub个采样。考虑两个滑动窗w1和为w2,其间隔为Nsub个采样,通过滑动w1和w2,可以搜索两个窗内采样之间的相似度。当OFDM符号的CP落在w1窗内时,两个窗内的NG个采样块之间的相似度达到最大值(差值达最小值),利用最值点可以识别STO。

通过搜索使得w1和w2两个滑动窗之内的差值达到最小时,从而估计出STO,最小化差值法公式如下:

但是当接收系统中存在CFO时,其性能会下降,为了处理CFO,通过最小化w1和w2中差值的平方来估计STO,其公式如下:

利用w1和w2为中两个采样块之间的相关性也可估计STO,即最大化相似性,其公式如下:

(2)基于训练符号的STO估计技术

通过发射训练符号,可以在接受机实现符号同步。与基于CP的方法相比,基于训练符号的方法不受多径影响,但是会降低传输效率。在估计的过程中可以采用两个相同的OFDM训练符号,也可使用具有不同重复周期结构的单个OFDM训练符号。以基于具有重复结构的单个OFDM符号为例,重复周期为Tsub/2时,如下图所示。通过在子载波之间插零,在时域可以产生不同的重复样式。一旦发射机在OFDM符号的两个块上发送重复的训练符号,接收机通过最大化两个滑动窗内采样块之间的相似性,就可以找到STO。通过计算重复的训练信号的相关函数,得到两个采样块之间的相似性。

当重复周期为Tsub/2时,如上图所示,A、B、D部分与接收信号的C部分不同,当滑动窗在C部分时,滑动窗内的采样块相似性达到最大,差异性达到最小。与基于CP的STO估计技术一样,基于训练符列的STO估计有两种。一是通过最小化两滑动窗内采样块之差的平方得到,即

另一种是通过最大化似然函数得到,即

当训练符号的重复周期为Tsub/4时,如图所示,训练符号重复了四次,在第三次和第四次中训练符号取反,通过最大化两滑动窗之间的最大似然函数即可得到STO。

2、频域STO估计技术

接收信号会因为STO产生相位旋转,相位旋转与子载波的频率成比例,所以可以用频域接收信号中相邻子载波的相位差来估计STO

例如,对于所有的k,都有

 因此可以估计STO

  1. 整体流程图

该部分的STO估计是基于CP进行估计的,最小化差值函数STO_by_difference基于CP通过最小化滑动窗w1和w2中差值的平方来估计STO的。最大化相关性函数STO_by_correlation利用w1和w2为中两个采样块之间的相关性估计STO。

四、仿真结果及结论

从上图可知最大化相关性和最小化差值两种方法在时域中估计STO性能,其中第一、二、四的图中最大化相关性能性能优最小化差值的,但是两个差距不大,其中最大化相关性的结果几乎正确结果重叠。

上图为接收信号受到nSTO=-3的延时下进行最大化相似性补偿、最小化差值补偿以及不补偿情况下的BER性能曲线。从上图可以看出进行补偿后的BER性能优于未进行补偿的BER性能,相同信噪比下进行补偿后的误码率小于未进行补偿的误码率,且进行最大化相关性补偿和进行最小化差值的BER曲线重叠,说明最大化相关性和最小化差值估计STO的准确性相近。

 五、代码

1、比较两个时域估计STO的性能主函数

%STO_estimation
clear all;clc;
nSTOs=[-3 -3 2 2];%延后位置
M=16; %16QAM调制
Nfft=64; %子载波数
max_iter=100;%迭代次数
Ng=Nfft/4;  %保护间隔长度
Nofdm=Nfft+Ng;  %ofdm符号长度
com_delay=Nofdm/2; %滑动窗口的起始位置=40
Nsym=3;%一个帧中有3个OFDM符号
for i=1:length(nSTOs)
    nSTO=nSTOs(i);
    x=[];%初始化OFDM符号
    for m=1:Nsym % transmit ofdm signal
        X=randi([0,15],1,Nfft); % 随机产生比特流
        Xmod=qammod(X,M); % 16QAM调制
        xt=ifft(Xmod);
       % 加保护间隔 
        x_g=[xt(Nfft-Ng+1:Nfft),xt];
        x=[x x_g];
    end
    y=x;%无信道影响
y_STO=add_STO(y,nSTO); %加时间误差
    Mag_cor=0;Mag_dif=0;
    for j=1:max_iter
    y_aw=awgn(y_STO,40,'measured');%高斯白白噪声l
    %symbol timing acquisition
    [ST0_cor, mag_cor]=STO_by_correlation(y_aw,Nfft,Ng,com_delay);%最大化相关
    [ST0_dif,mag_dif]=STO_by_difference(y_aw,Nfft,Ng,com_delay);%最小化差值
    Mag_cor=Mag_cor+mag_cor;Mag_dif=Mag_dif+mag_dif;
    end % end of for loop of iter
   [Mag_corr_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'),hold on
    xlabel('Sample'),ylabel('Magnitude');
    legend('基于相关的','基于最小差值的')
    stem(nc,Mag_cor(nc+com_delay+1),'b')
    stem(nd,Mag_dif(nd+com_delay+1),'r');
    stem(nSTO,Mag_dif(nSTO+com_delay+1),'k.')
end

2、最小化差值补偿、最大化相似性补偿和未补偿主函数

clear all;
clc;
nSTO=-3;%延时
M=16;%?调制参数16QAM
Nfft=64;%子载波个数
EbN0=[10:15];%信噪比
max_iter=100;%迭代次数
Ng=Nfft/4;%?保护间隔长度,循环前缀长度
Nofdm=Nfft+Ng;%符号持续时间,一个OFDM符号的总长
com_delay=Nofdm/2;%?滑动窗口的起始位置40
Nsym=3;%一帧有三个OFDM符号
 
for k=1:1:length(EbN0)
       Neb1=0;%?初始化错误码元个数
       Neb2=0;
       Neb3=0;
       x=[];%初始化OFDM符号
       X1=[];
    for m=1:Nsym % transmit ofdm signal
        X=randi([0,15],1,Nfft); % 随机产生比特流
        X1=[X1,X];
        Xmod=qammod(X,M); % 16QAM调制
        xt=ifft(Xmod);
       % 加保护间隔 
        x_g=[xt(Nfft-Ng+1:Nfft),xt];
        x=[x x_g];
    end
y=x;%无信道影响
y_STO=add_STO(y,nSTO); %加时间误差
Mag_dif=0;Mag_cor=0;
 
%%%%%%%%%%%% 信道 %%%%%%%%%%%%         
 for j=1:max_iter
    y_aw=awgn(y_STO,EbN0(k),'measured');%高斯白白噪声l
    %symbol timing acquisition
     [ST0_cor, mag_cor]=STO_by_correlation(y_aw,Nfft,Ng,com_delay);%最大化相关
    [ST0_dif,mag_dif]=STO_by_difference(y_aw,Nfft,Ng,com_delay);%最小化差值
    Mag_dif=Mag_dif+mag_dif;
    Mag_cor=Mag_cor+mag_cor;
    end % 迭代结束
   [Mag_dif_min,ind_min]=min(Mag_dif);
    nd=ind_min-1-com_delay;%估值
    [Mag_corr_max,ind_max]=max(Mag_cor);
    nc=ind_max-1-com_delay;
%%%%%%%%%%%%%%%%%%%%%%%% 最小化差值进行补偿的 %%%%%%%%%%%%%%%%%%%%%%%%
kk1=1:Nfft;
kk2=1:Nofdm+nd-1;
for j=1:Nsym
if j==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:end);
kk3=kk3+Nofdm;
end %if判断结束
    y1_b=fft(y2);
    Y_mode1(kk1)=y1_b;
    kk1=kk1+Nfft;
end %OFDM符号数判断结束
 
%%%%%%%%%%%%%%%%%%%%%%%% 最大化相似性进行补偿的 %%%%%%%%%%%%%%%%%%%%%%%%
kk6=1:Nfft;
kk7=1:Nofdm+nd-1;
for j=1:Nsym
if j==1
   y1=y_aw(kk7);%判断是否是第一帧
   y2=y1(Ng+nd:end);%去cp
   kk3=kk7(end)+1:kk7(end)+Nofdm;
else
y1=y_aw(kk3);
y2=y1(Ng+1:end);
kk3=kk3+Nofdm;
end %if判断结束
    y1_b=fft(y2);
    Y_mode3(kk6)=y1_b;
    kk6=kk6+Nfft;
end %OFDM符号数判断结束
 
%%%%%%%%%%%%% 无补偿的 %%%%%%%%%%%%%%%%%%%%%%%%
kk4=1:Nfft;
kk5=1:Nofdm;
for i=1:Nsym
y2=y_aw(kk5);
y2_1=y2(Ng+1:end);
y2_b=fft(y2_1);
Y_mode2(kk4)=y2_b;
kk5=kk5+Nofdm;
kk4=kk4+Nfft;
end
 
X_r1=qamdemod(Y_mode1,M);%?解调,逆映射
X_r2=qamdemod(Y_mode2,M);
X_r3=qamdemod(Y_mode3,M);
Neb1=Neb1+sum(sum(de2bi(X_r1,4)~=de2bi(X1,4)));%错误的比特数
Neb2=Neb2+sum(sum(de2bi(X_r2,4)~=de2bi(X1,4)));
Neb3=Neb3+sum(sum(de2bi(X_r3,4)~=de2bi(X1,4)));
Ber1(k)=Neb1/(4*Nfft*max_iter*Nsym);%误码率
Ber2(k)=Neb2/(4*Nfft*max_iter*Nsym);
Ber3(k)=Neb3/(4*Nfft*max_iter*Nsym);
 
end %信噪比循环结束
semilogy(EbN0,Ber1,'-*',EbN0,Ber2,'-*r',EbN0,Ber3,'-+');
legend('最小化差值补偿','未补偿','最大化相似性补偿');
xlabel('EbN0[dB]'),ylabel('Ber');
 

3、加入符号偏差

function y_STO=add_STO(y,nSTO)
      % 加入延迟
      % y: received signal
      % nSTO: number of samples corresponding to STO
    if nSTO<=0
       y_STO=[y(-nSTO+1:end),zeros(1,-nSTO)]; %提前
    else
        y_STO=[zeros(1,nSTO),y(1:end-nSTO)];%延迟
   end

4、最大化相似性函数

function [STO_est,Mag]=STO_by_correlation( y,Nfft,Ng, com_delay)
Nofdm=Nfft+Ng; %OFDM symbol length
  if nargin <4, com_delay=Nofdm/2;end
 nn=0:Ng-1;
 yy=y(nn+com_delay)*y(nn+com_delay+Nfft)'; % correlation
  maximum=abs(yy);
  for n=1:Nofdm
       n1=n-1;yy1=y(n1+com_delay)*y(n1+com_delay+Nfft)';
       yy2=y(n1+com_delay+Ng)*y(n1+com_delay+Nfft+Ng)';
      yy=yy-yy1+yy2;
      Mag(n)=abs(yy);
     if Mag(n)>maximum
         maximum=Mag(n); 
         STO_est=com_delay+n1-Nofdm;
     end
end

5、最小化差值函数

function [STO_est,Mag]=STO_by_difference(y, Nfft, Ng, com_delay)
Nofdm=Nfft+Ng; minimum=100; STO_est=0;
if nargin <4, com_delay=Nofdm/2;end
for n=1:Nofdm
     n1=n-1;
     nn=n1+com_delay+[0:Ng-1]; 
tmp0=abs(y(nn))-abs(y(nn+Nfft));
     Mag(n)=tmp0*tmp0'; %差值平方
    if Mag(n)< minimum
     minimum=Mag(n);
    STO_est=com_delay+n1-Nofdm;
  end
end

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MIMO-OFDM同步系统是一种基于多输入多输出(MIMO)和正交频分复用(OFDM)技术的同步方案。在MIMO-OFDM系统中,多个天线和子载波同时传输数据,以提高系统的吞吐量和抗干扰性能。同步是保证系统正常工作的关键步骤,主要包括时间同步和频率同步两个方面。 时间同步是指在接收端正确探测到发送端的传输时刻,以确保接收端可以正确地解码传输的数据。常用的时间同步方法包括导频信号的时域和频域相关特征检测、互相关和最大似然估计等。仿真代码可以通过模拟正常传输过程,在接收端进行同步信号检测,并进行误差评估和修正的过程。 频率同步是指在接收端能够正确估计发送端的载波频率偏差,以保证接收端正确定时解调和解调调制信号。常用的频率同步方法包括导频信号的相位差检测、最小均方误差估计和频域相关特征检测等。仿真代码可以根据发送端和接收端的频率特征,通过对接收信号的频谱分析、自相关和互相关来实现频率同步。 MIMO-OFDM同步系统的仿真代码可以利用MATLAB等工具进行实现。在代码中,需要定义发送端和接收端的模型,包括通道模型、天线配置和子载波参数等。然后模拟发射端发送数据,并在接收端进行时间和频率同步处理。最后评估同步误差和系统性能,并进行相应的修正和优化。 需要注意的是,MIMO-OFDM同步系统是一个复杂的系统,仿真代码的实现需要考虑多个因素和参数,包括信道衰落、多路径效应、信噪比、天线数和子载波数等。因此,代码的实现需要充分考虑这些因素,并进行合理的模型假设和参数选择,以获得准确和可靠的仿真结果。 ### 回答2: MIMO-OFDM同步系统仿真代码是为了模拟多输入多输出正交频分复用同步系统的工作原理和性能表现而设计的计算机程序。MIMO-OFDM系统主要用于无线通信中的数据传输,通过采用多个发送天线和接收天线以及正交频分复用技术,可以提高信号传输的质量和数据传输速率。 仿真代码的设计需要包含MIMO-OFDM系统的关键组成部分,如发送天线、接收天线、正交分频复用、时钟同步等。其中,发送天线部分需要生成多个独立的信号源,每个信号源对应一个天线,仿真代码需要模拟出各个信号源之间的正交性。 接收天线部分需要实现多个天线的接收和信号合并操作,将接收到的数据进行处理和解码,还需要处理多个天线之间的同步问题,确保各个天线的时钟同步,以便进行信号的正确接收与处理。 正交分频复用部分需要实现OFDM技术的过程,包括数据的编码、映射、IFFT变换、导频插入等,同时需要处理多个天线之间的同步问题,确保各个天线在时域和频率域上同步。 时钟同步部分需要根据实际情况设计合适的时钟同步算法,使得多个天线的时钟可以同步到精准的时钟信号。 通过以上关键组成部分的仿真,可以评估MIMO-OFDM系统的整体性能,如误码率、比特误差率和系统容量等。通过调整参数和算法,可以优化系统的性能,提高信号传输的质量和可靠性。 综上所述,MIMO-OFDM同步系统仿真代码是为了模拟和评估多输入多输出正交频分复用同步系统的性能,通过实现发送天线、接收天线、正交分频复用和时钟同步等关键组成部分,可以研究并优化系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值