您现在的位置:首页 >> 通信 >> 内容

m基于Costas环的QPSK载波同步matlab性能仿真,对比不同环路系数等对载波同步的影响

时间:2023/7/9 4:23:15 点击:

  核心提示:0X_004m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJuVk5ps

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

   在数字通信中,载波同步是保证正常数据传输的重要环节之一。Costas环是一种常用的基于相位差检测的载波同步方法,适用于QPSK调制信号的同步。本文将介绍基于Costas环的QPSK载波同步方法,并比较不同环路系数对载波同步的影响。

   载波同步是相干解调的基础,不管对于模拟通信还是数字通信来说,只要是相干解调,接收端都必须提供同频同相的载波。当然,若采用基带传输,此时便没有载波同步的问题,因为没有频带调制,即没有乘以载波进行频谱搬移的过程。

4.部分源码

...........................................................................

 

 

SNRS = [2:2:16];

 

for SNR_DB = SNRS

    SNR_DB

     % SNR_DB = 4

     rece = awgn(send,SNR_DB,'measured');  %接受端的信号,加载指定的snr

     %rece = send;

     %锁相环参数预设

     Discriminator_Out=zeros(carlen * nsamp,1);

     Freq_Control=zeros(carlen * nsamp,1);

     PLL_Phase_Part=zeros(carlen * nsamp,1);   %锁相环频率

     PLL_Freq_Part=zeros(carlen * nsamp,1);    %锁相环相位

     WC_frame = zeros(1,carlen * nsamp);       

     NCO_Phase = 0;

 

............................................................................

         end

     end

 

    

    %判断同步头,信号是否出现了反相,及时调整

    num1 = symerr(sign(I_D(comps1:compf1)) , sign(dataoutI(comps1:compf1)));

    num2 = symerr(sign(I_D(comps1:compf1)) , -sign(dataoutI(comps1:compf1)));

    num3 = symerr(sign(I_D(comps1:compf1)) , sign(dataoutQ(comps1:compf1)));

    num4 = symerr(sign(I_D(comps1:compf1)) , -sign(dataoutQ(comps1:compf1)));

    numI = [num1,num2,num3,num4];

    num = min(numI)

 

    if num1 == num

        dataout_I = dataoutI;

    elseif num2 == num

        dataout_I = -dataoutI;

    elseif  num3 == num

        dataout_I = dataoutQ;

    else

        dataout_I = -dataoutQ;

    end

 

    num1 = symerr(sign(Q_D(comps2:compf2)) , sign(dataoutQ(comps2:compf2)));

    num2 = symerr(sign(Q_D(comps2:compf2)) , -sign(dataoutQ(comps2:compf2)));

    num3 = symerr(sign(Q_D(comps2:compf2)) , sign(dataoutI(comps2:compf2)));

    num4 = symerr(sign(Q_D(comps2:compf2)) , -sign(dataoutI(comps2:compf2)));

    numQ = [num1,num2,num3,num4];

    num = min(numQ)

 

    if num1 == num

        dataout_Q = dataoutQ;

    elseif num2 == num

        dataout_Q = -dataoutQ;

    elseif  num3 == num

        dataout_Q = dataoutI;

    else

        dataout_Q = -dataoutI;

    end

 

    

     %进入gardner环的信号

     datarcosI = dataout_I(9:end) ;

     datarcosQ = dataout_Q(9:end) ;

 

 

 

     %统计误码率

     in = dataI';

     out = sign(datarcosI(1: 4:end));

     [num2,rt2]= symerr(out(3001:end-5),in(3001:end));

     num2

     ratio(1,tp) =  rt2;

     in = dataQ';

     out = sign(datarcosQ(1: 4:end));

     [num2,rt2]= symerr(out(3001:end-5),in(3001:end));

     num2

     ratio(1,tp) = ratio(1,tp) + rt2;

 

     tp = tp + 1;

end

 

 

errrate= ratio/2;

 

  

 %误码率图

 snr = SNRS;

 figure;

 semilogy(snr ,errrate,'-r>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

grid on;

 save R11.mat SNRS errrate

0X_004m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168