基于costas环的载波同步系统matlab性能仿真

发布时间 2023-11-12 23:46:25作者: 简简单单做算法

1.算法运行效果图预览

 

 

2.算法运行软件版本

matlab2022a

 

 

3.算法理论概述

        基于Costas环的载波同步系统是一种用于恢复接收信号的载波频率和相位同步的系统。Costas环是一种特殊的环路锁相环路,广泛用于调制解调器、无线通信和雷达等领域。以下是基于Costas环的载波同步系统的基本原理和结构:Costas环是一种相位锁定环路,用于估计接收信号的载波频率和相位。它的基本原理是通过不断迭代比较接收信号的相位差来实现频率和相位的同步。通过调整本地振荡器的频率和相位,使得接收信号与本地振荡器的相位差保持在一个特定的范围内,从而实现同步。

 

结构:

 

一个基本的基于Costas环的载波同步系统通常包括以下组件:

 

接收信号: 接收来自信道的调制信号,这通常是经过载波频率和相位偏移的信号。

 

混频器: 接收信号与本地振荡器的混频器将信号从中心频率移到基带频率。混频器输出的是相位差信号。

 

本地振荡器: 本地振荡器产生一个与接收信号频率和相位相近的信号。

 

Costas环路: Costas环路包括两个分支,一个用于估计频率,另一个用于估计相位。这两个分支分别用于控制本地振荡器的频率和相位。其基本公式如下:

 

 

 

       两路信号(I为上面一路,Q为下面一路)通过低通成形滤波器后与cos,sin相乘完成系统的调制,然后将两路调制信号相加完成混频,再发送出去。

 

 

 

 

相位差计算器: 用于计算混频器输出的相位差,以便反馈给Costas环路。

 

频率和相位调整器: 根据相位差计算结果,调整本地振荡器的频率和相位,以实现载波同步。

 

输出: 同步后的信号可用于进一步的解调或数据提取。

 

       基于Costas环的载波同步系统是一种有效的方式,用于恢复接收信号的载波频率和相位,以便正确解调信号并提取数据。这种系统在数字通信系统中非常常见,特别是在调制解调器和同步接收机中。

 

 

 

4.部分核心程序

I_Data=round(rand(N,1))*2-1;
Q_Data=round(rand(N,1))*2-1;
%QPSK信号源
s=I_Data + j*Q_Data;
fs=2400;                    %采样率
fdelta=-40;                 %频偏
Time_Sample=1/fs;           %每个采样值的持续时间
Delta_Phase=rand(1)*2*pi;   %初始相位
sin_cos=exp(j*(fdelta/fs*(1:len)+Delta_Phase));  %载波
 
%调制
r=s.*sin_cos'; %r=Icos+Qsin 
%环路处理
C1=0.022;  
C2=0.00024;
for i=2:N
..........................................................................
end
figure
plot(Discriminator_Out);
grid on;
title('鉴相器输出');
% axis([1 len 0 7]);
figure
plot(mod(NCO,2*pi));
grid on;
title('NCO响应曲线');
axis([1 len 0 7]);
figure
subplot(211)
plot(-PLL_out(2:len)*fs);
grid on;
title('锁相环频率响应曲线');
axis([1 len -100 100]);
subplot(212)
plot(PLL_out2(2:len)*180/pi);
title('锁相环相位响应曲线');
axis([1 len -2 2]);
grid on;
 
figure
subplot(2,2,1)
plot(I_Data(500:550));
grid on;
title('I路信息数据');
axis([1,50,-2,2]);
subplot(2,2,2)
plot(Q_Data(500:550));
grid on;
title('Q路信息数据');
axis([1,50,-2,2]);
subplot(2,2,3)
plot(I_PLL(500:550));
grid on;
title('锁相环输出I路信息数据,注意可能会出现相位模糊现象,即倒PI现象');
axis([1,50,-2,2]);
subplot(2,2,4)
plot(Q_PLL(500:550));
grid on;
title('锁相环输出Q路信息数据,注意可能会出现相位模糊现象,即倒PI现象');
axis([1,50,-2,2]);