基于Matlab卫星中继通信链路仿真

时间:2021-10-28 12:45:46  来源:网友投稿

 基于 Matlab 的卫星中继通信链路仿真 ** ***************

 摘要 :

 卫星通信是地球上的无线电通信站利用卫星作为中继而进行的通信,卫星通信系统由卫星和地球站两部分组成。卫星转发方式有透明转发和译码转发。本文基于 matlab 软件平台,对地静止卫星通信系统中卫星中继地球站发送数据的转发过程仿真,并给出接收信息 BER 曲线。

 关键字 :

 卫星中继; Matlab 仿真;BER 曲线

 中图分类号:

 O121.8;G558 1 引言 卫星信道的特点是:可用频带宽、功率受限、干扰大、信噪比低。所以要求采用可靠性高的信号调制方式,并要求有较强的信号纠错能力,对带宽要求不是特别高。因此 DVB-S 采用前向纠错(FEC)(包括 Viterbi 编码、交织、RS 编码及加扰等电路)、正交移相键控(QPSK)调制的信道处理方式,然后馈给卫星链路。接收时进行相反的处理。本文对卫星工作过程进行仿真,得到信号的 BER 曲线,从而知道可靠传输所需发射功率。

 2 系统模型及仿真 2.1 建模假设 本文中所设计的卫星中继链路中中继卫星为 GEO 同步轨道卫星,采用 Ku 频段,6 个地球站采用 FDMA。通过卫星向另外一个地球站发送信息:上行载波中心频率为 14253MHz,下行载波中心频率为 12028MHz,载波间隔为 10MHz。

 •发送地球站与卫星之间的距离为:

 [39995 40000 40005 40010 40015 40020]km

 •卫星和接收地球站之间的距离是 42000km •卫星的 EIRP 是 56dBW,天线增益为 30dB •地球站的天线增益为 32dB •信道模型采用 AWGN 基于以上条件,本文将给出对地静止卫星中继地球站发送信息的完整过程,并给出某个发送地球站的信息在接收地球站的 BER 曲线。

 2.2 系统模型及结果 2.2.1 透明转发 该通信链路设计思路为:

 信源→比特流→调制(QPSK)→频分复用→上变频→AWGN 信道→卫星接收透明转发→AWGN 信道→下变频→判决→解调(DQPSK)→比特流。

 得到某个发送地球站的信息在接收地球站的 BER 曲线,如下图所示:

 为了更好描述零值,用以下曲线描述:

 0 0.5 1 1.5 2 2.5 3 3.510-510-410-310-2X: 3.01Y: 5.9e-05X: 0Y: 0.002783X: 1.761Y: 0.00032发射功率 dbW误码率 BER透明转发 BER 曲线

  2.2.2 译码转发 该通信链路设计思路为:

 信源→比特流→调制(QPSK)→频分复用→上变频→AWGN 信道→卫星接收译码转发→AWGN 信道→下变频→判决→解调(DQPSK)→比特流。

 得到某个发送地球站的信息在接收地球站的 BER 曲线,如下图所示

 0 5 10 15 20 25 3000.511.522.53x 10-3X: 0Y: 0.002783发射功率 dbW误码率 BER透明转发 BER 曲线X: 1.761Y: 0.00032X: 3.01Y: 5.9e-05

  为了更好描述零值,用以下曲线描述:

 2.2.3 两种转发方式对比 0 0.5 1 1.5 2 2.5 3 3.510-510-410-310-2X: 0Y: 0.002241发射功率 dbW误码率 BER译码转发 BER 曲线X: 1.761Y: 0.000259X: 3.01Y: 3.4e-050 5 10 15 20 25 3000.511.522.5x 10-3X: 0Y: 0.002241发射功率 dbW误码率 BER译码转发 BER 曲线X: 1.761Y: 0.000259X: 3.01Y: 3.4e-05

  3 结论

 3 结论

 由图可以看出,SNR越大,BER越低,通信的可靠性越高;

  译码转发比透明转发更可靠。

 附录1:链路仿真源代码 透明转发:

 p=[1 2 4 8 16 32 64 128 256 512 1024];%发射功率

 dup=40005;%上行距离 fup=14253;%上行载波中心频率 % dup=[39995 40000 40005 40010 40015 40020]; % fup=[14228 14238 14248 14258 14268 14278]; %数值差异很小 忽略 FSLup=32.4+20*log(dup)/log(10)+20*log(fup)/log(10);%上行自由空间损耗 h1=sqrt(10^3.2*10^3.2/(10^(FSLup/10)));%增益 ddo=42000;%下行距离 0 0.5 1 1.5 2 2.5 3 3.5 4 4.510-510-410-310-2X: 0Y: 0.002783发射功率 dbW误码率 BER透明转发与译码转发 BER 曲线X: 0Y: 0.002241X: 1.761Y: 0.00032X: 3.01Y: 5.9e-05X: 1.761Y: 0.000259X: 3.01Y: 3.4e-05蓝色为透明转发红色为译码转发

 fdo=12028;%下行载波中心频率 FSLdo=32.4+20*log(ddo)/log(10)+20*log(fdo)/log(10);%下行自由空间损耗 h2=sqrt(10^5.6*10^3.2/(10^(FSLdo/10)));%56dB增益 N0=1.38*10^(-23)*80*60000000;%噪声功率 BER=zeros(1,11);

 for kk=1:11

 num=500000;

 pt=p(kk);

 erro=0; while num

  num=num-1; infor=randi([0 1],1,12); [d]=g2(infor,12); for k=1:6 for t=1:120

 x(k,t)=d(k)*exp(j*2*pi*(14228+10*(k-1))*t/1200); end end s1=x(1,:)+x(2,:)+x(3,:)+x(4,:)+x(5,:)+x(6,:); %

 以上 发射前的信号

 n1= wgn(1,120,10*log(N0)/log(10),"complex");

 y=sqrt(pt)*h1*s1+n1;

 % 以上 卫星接收到的信号

 n2= wgn(1,120,10*log(N0)/log(10),"complex"); for t=1:120

 %上行载波频率变为下行载波频率 yy(t)=y(t)*exp(j*2*pi*(fdo-fup)*t/1200)/sqrt(pt*h1^2+N0); end s2=h2*yy+n2;

  %以上 地球站接收到的信号

 for t=1:120

  s3(t)=s2(t)*exp(-j*2*pi*12003*t/1200);

 end

 **x=sum(s3(:));

 %选择性接收第一个地球站的信号

 %判决

 [shuzhi xiabiao]=min(abs(angle(**x)-[pi/4 3*pi/4 -pi/4 -3*pi/4]));

 infor2=[fix((xiabiao-1)/2) mod((xiabiao-1),2)];

 %判决为 infor2

 if infor2(1)~=infor(1)

 erro=erro+1;

 end

 if infor2(2)~=infor(2)

 erro=erro+1;

 end end

 BER(kk)=erro/1000000;

 end

 semilogy(10*log(p)/log(10),BER,"b");

 hold on

 译码转发:

 p=[1 2 4 8 16 32 64 128 256 512 1024];%发射功率

 dup=40005;%上行距离 fup=14253;%上行载波中心频率

 % dup=[39995 40000 40005 40010 40015 40020]; % fup=[14228 14238 14248 14258 14268 14278]; %数值差异很小 忽略 FSLup=32.4+20*log(dup)/log(10)+20*log(fup)/log(10);%上行自由空间损耗 h1=sqrt(10^3.2/(10^(FSLup/10)));%增益 ddo=42000;%下行距离 fdo=12028;%下行载波中心频率 FSLdo=32.4+20*log(ddo)/log(10)+20*log(fdo)/log(10);%下行自由空间损耗 h2=sqrt(10^5.6/(10^(FSLdo/10)));%56dB增益 N0=1.38*10^(-23)*80*60000;%噪声功率 BER2=zeros(1,11);

 for kk=1:11

 num=500000;

 pt=p(kk);

 erro=0; while num

  num=num-1; % infor1=randint(1,2); % infor2=randint(1,2); % infor3=randint(1,2); % infor4=randint(1,2); % infor5=randint(1,2); % infor6=randint(1,2); infor=randi([0 1],1,12); [d]=g2(infor,12); for k=1:6 for t=1:120

 x(k,t)=d(k)*exp(j*2*pi*(14228+10*(k-1))*t/1200);

 end end s1=x(1,:)+x(2,:)+x(3,:)+x(4,:)+x(5,:)+x(6,:); %

 以上 发射前的信号

 n1=wgn(1,120,10*log(N0)/log(10),"complex");

 y=sqrt(pt)*h1*s1+n1;

 % 以上 卫星接收到的信号

 for t=1:120

  y2(t)=y(t)*exp(-j*2*pi*14228*t/1200);%下变频

 end

 s2=sum(y2(:));

 %选择性接收第一个地球站的信号

 %判决

 [shuzhi xiabiao]=min(abs(angle(s2)-[pi/4 3*pi/4 -pi/4 -3*pi/4]));

 informa=[fix((xiabiao-1)/2) mod((xiabiao-1),2)];

  aa=g2(informa,2);

  for t=1:120

  y3(t)=aa*exp(j*2*pi*12003*t/1200);

  end

 n2=wgn(1,120,10*log(N0)/log(10),"complex");

 y4=h2*y3+n2;

 %以上 地球站接收到的信号

 for t=1:120

  y5(t)=y4(t)*exp(-j*2*pi*12003*t/1200);

 end

 s3=sum(y5(:));

 %选择性接收第一个地球站的信号

  %判决

 [shuzhi xiabiao]=min(abs(angle(s3)-[pi/4 3*pi/4 -pi/4 -3*pi/4]));

 infor2=[fix((xiabiao-1)/2) mod((xiabiao-1),2)];

 %判决为 infor2

 if infor2(1)~=infor(1)

 erro=erro+1;

 end

 if infor2(2)~=infor(2)

 erro=erro+1;

 end end

 BER2(kk)=erro/1000000;

 end

 semilogy(10*log(p)/log(10),BER2,"b");

 hold on

 QPSK 源代码:

 function [d]=g2(bit,Nc) A=[exp(j*pi/4) 0 0;exp(j*3*pi/4) 0 1; exp(-j*3*pi/4) 1 1;exp(-j*pi/4) 1 0]; for k=1:Nc/2

  if bit(2*k-1:2*k)==[0 0]

  d(k)=A(1,1);

  elseif bit(2*k-1:2*k)==[0 1]

  d(k)=A(2,1);

  elseif bit(2*k-1:2*k)==[1 1]

  d(k)=A(3,1);

 elseif bit(2*k-1:2*k)==[1 0]

  d(k)=A(4,1);

  end end 致

 谢 时间如白驹过隙,在大学能够上课的最后一个学期中,有幸在卫星选修课上与高师一同度过。在此衷心感谢高老师的认真授课,让我获益匪浅。

 在此祝老师身体健康,工作顺利!

 

推荐访问:仿真 链路 通信