首页 > 其他分享 >基于matlab的BOC调制解调的同步性能仿真,输出跟踪曲线以及不同超前滞后码距下的鉴别曲线

基于matlab的BOC调制解调的同步性能仿真,输出跟踪曲线以及不同超前滞后码距下的鉴别曲线

时间:2023-01-16 16:55:05浏览次数:42  
标签:code Dcm signal 曲线 carrier matlab BOC local

1.算法描述

       BOC-Binary Offset Carrier,也叫二进制偏置载波调制,是在Galileo系统设计过程中提出的一种新的载波调制方式。它的基本原理是在原有的BPSK调制基础上,再增加一个二进制副载波(目前主要是由正弦或余弦型符号函数构成的副载波,即形似sgn(sin(t))或sgn(cos(t)),以正弦或余弦信号为参数的符号函数)。这种调制方式的最大特点是,其功率谱的主瓣分裂成对称的两部分,而且根据选择的参数不同,两个分裂主瓣的距离也可以变化。一般常用的表示方式为BOC(m,n)的形式,其中m表示的是副载波频率,n表示的是扩频码速率,具体数值分别是1.023MHz的m倍和n倍。

 

      关于BOC调制,Betz的文章《Binary Offset Carrier Modulations for Radionavigation》是比较经典的,特别是附录里关于功率谱表达式的推导,让我省却了很多自行推导的烦恼。不过里面有一处印刷错误,有兴趣的朋友应该不难发现。中文资料里我认为邱致和的《GPS M码信号的BOC调制》,可以作为参考,特别是关于BOC基本概念的介绍。

 

 BOC 调制就是在原有 BPSK 调制的基础上,再加上一个二进制副载波对 BPSK 信号进行二次扩频。由于方波易于生产,因此采用方波来替代正弦波,这样可以节约硬件资源。一般用 BOC(sf ,cf)来表示sf 代表副载波频率,cf 代表伪码速率。因为sf 和cf都是 1.023MHz 的整数倍,所以文献中用 BOC(m,n)的表示形式,其中 m 表示的是副载波频率,n 表示的是扩频码速率,它们分别表示 1.023MHz 的 m 倍和 n 倍。

 

       BOC 调制的频谱可以分为两个对称独立的边带,它的自相关函数是一种多峰结构,其中主峰较窄,所以有可能对接收机处理方式做一些改变,以便在实现时获得性能的改善。另外一种可行的方法是使鉴相器工作在一个带宽信号的相对函数上,进而保持对主峰的粗跟踪,之后再转入用双边带信号工作的鉴相器,来作精跟踪。由此可见,BOC 调制信号的频谱中上边带和下边带的冗余,自相关函数中的多峰,如果加以开发利用有可能在接收机的信号截获、码跟踪以及数据解调等处理中带来利益。

 

   BOC 调制信号是在载波调制前对扩频信号用副载波进行二次扩频。其流程如下图所示:

 

正、余弦BOC调制信号的码片波形可以分别表示为

 

正弦BOC调制信号BOCs(m,n)和余弦BOC调制信号BOCc(m,n)的自相关函数分别为

 

boc和bpsk区别很多:

 

1 功率谱不同,boc将基带信号能量搬移到±fs处,bpsk基带信号能量集中在0频。boc的这种特性使得一个频点可以发射多个信号分量。

 

2 相关函数不同,boc有多个峰,会使得接收机产生误锁,而bpsk不会。

 

总结,boc是的导航信号调制方式设计更具灵活性,但接收处理更有挑战。bpsk接收处理简单。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB部分代码预览

 

[signal_BOC] = source_BOC(SNR,2,fword_code,fword_sub_carrier,fword_carrier);
 
for index = 1:loopnum
    index
    %信号跟踪
    [signal_BOC,prn_source] = source_BOC(SNR,point,fword_code,fword_sub_carrier,fword_carrier);
    
    %本地码载波产生
    [local_prn_E,local_prn_P,local_prn_L,...
     local_BOC_E,local_BOC_P,local_BOC_L,...
     fll_carrier_cos,fll_carrier_sin,...
     pll_carrier_cos,pll_carrier_sin] = local_gen(point);
    
    %相关运算
    %ASPeCT
    Dcm_I_E1 = sum(signal_BOC.*fll_carrier_cos.*local_BOC_E);
    Dcm_I_E2 = sum(signal_BOC.*fll_carrier_cos.*local_prn_E); 
    Dcm_I_E  = Dcm_I_E1^2-Dcm_I_E2^2;                                
    
    Dcm_Q_E1 = sum(signal_BOC.*fll_carrier_sin.*local_BOC_E);
    Dcm_Q_E2 = sum(signal_BOC.*fll_carrier_sin.*local_prn_E);
    Dcm_Q_E  = Dcm_Q_E1^2-Dcm_Q_E2^2;
   
    
    Dcm_I_P1 = sum(signal_BOC.*fll_carrier_cos.*local_BOC_P);
    Dcm_I_P2 = sum(signal_BOC.*fll_carrier_cos.*local_prn_P);
    Dcm_I_P  = Dcm_I_P1^2-Dcm_I_P2^2+abs(Dcm_I_P1^2-Dcm_I_P2^2);   
    Dcm_Q_P1 = sum(signal_BOC.*fll_carrier_sin.*local_BOC_P);
    Dcm_Q_P2 = sum(signal_BOC.*fll_carrier_sin.*local_prn_P);
    Dcm_Q_P  = Dcm_Q_P1^2-Dcm_Q_P2^2+abs(Dcm_Q_P1^2-Dcm_Q_P2^2);
     
    Dcm_I_L1 = sum(signal_BOC.*fll_carrier_cos.*local_BOC_L);
    Dcm_I_L2 = sum(signal_BOC.*fll_carrier_cos.*local_prn_L);
    Dcm_I_L  = Dcm_I_L1^2-Dcm_I_L2^2;  
    
    Dcm_Q_L1 = sum(signal_BOC.*fll_carrier_sin.*local_BOC_L);
    Dcm_Q_L2 = sum(signal_BOC.*fll_carrier_sin.*local_prn_L);
    Dcm_Q_L  = Dcm_Q_L1^2-Dcm_Q_L2^2;
 
    %码鉴别滤波,计算频率字
    pow_E                  = Dcm_I_E^2+Dcm_Q_E^2;
    pow_L                  = Dcm_I_L^2+Dcm_Q_L^2;
    code_dis               = (pow_E-pow_L)/(pow_E+pow_L)/2;
    code_dis_result(index) = code_dis;
    
    if index ==1
        last_out_DDL = 0;
        last_in_DDL  = 0;
    end
    code_filter               = last_out_DDL + [code_dis last_in_DDL]*[C1 (-1)*C2]';
    last_out_DDL              = code_filter;
    last_in_DDL               = code_dis;
    code_filter_result(index) = code_filter;
    
    local_fword_code          = (fc+code_filter)*2^40/fsamp;
    local_fword_sub_carrier   = (fs+code_filter)*2^40/fsamp;
end
A_050

 

  

 

标签:code,Dcm,signal,曲线,carrier,matlab,BOC,local
From: https://www.cnblogs.com/51matlab/p/17055830.html

相关文章

  • 【优化求解】基于遗传算法优化卸载策略附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Matlab笔记--Matlab基础
    Matlab基础数据类型(共有15种数据类型)整数取整函数浮点数(单精度浮点数和双精度浮点数--默认为双精度浮点数)复数数据的显示格式(format确定数据的显示格式):数据格式......
  • Matlab-simulink仿真2ASK调制
    1、调制原理 一般有两种调制方式:   本文主要学习模拟调制法: ①、生成单极性信号,作为基带信号; ②、将基带信号与载波直接相乘。2、解调原理   本文......
  • 基于matlab的BOC调制信号捕获仿真
    1.算法描述       随着全球导航卫星系统的高速发展,导航系统的数量也越来越多,比如使用最广泛的GPS导航系统,以及越来越备受关注的中国北斗导航系统等.因此导航频......
  • RS+BCH级联编译码误码率性能matlab仿真
    1.算法描述在实际情况中,在光通信信道中出现的错误有单独随机出现的误码,也有突发出现的无码,为了更好的提升光通信的性能,需要使用级联码。级联码在进行编码的时候,将k1k2......
  • 基于matlab的BOC调制信号捕获仿真
    1.算法描述随着全球导航卫星系统的高速发展,导航系统的数量也越来越多,比如使用最广泛的GPS导航系统,以及越来越备受关注的中国北斗导航系统等.因此导航频段变得越来越拥挤......
  • RS+BCH级联编译码误码率性能matlab仿真
    1.算法描述        在实际情况中,在光通信信道中出现的错误有单独随机出现的误码,也有突发出现的无码,为了更好的提升光通信的性能,需要使用级联码。       ......
  • 05 二次曲线的一般结论 | 解析几何
    1.二次曲线的相关概念1.二次曲线平面上由二次方程:\(F(x,y)\equiva_{11}x^2+2a_{12}xy+a_{22}y^2+2a_{13}x+2a_{23}y+a_{33}=0\)2.二次曲线的一般记号\(F_1(x......
  • Matlab笔记--Matlab概述(初登场)
    Matlab概述安装MATLAB教程可以参考这里:https://www.cnblogs.com/sixuwuxian/p/15858196.htmlMatlab的启动右键图标,选择属性,可以设置Matlab的启动目录Matlab的退出1、......
  • 基于CEM算法的三维人脸模型贴图matlab仿真
    1.算法描述采用三维人脸贴图算法conformalenergyminimization,将二维图片贴到三维人脸模型中。2.仿真效果预览matlab2022a仿真结果如下:3.MATLAB部分代码预览clear;c......