ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大话卫星导航中的信号处理系列文章——GPS信号以及C/A码生成

2021-11-12 23:32:51  阅读:327  来源: 互联网

标签:case 10 G2 1023 大话 regG2 信号处理 GPS


大话卫星导航中的信号处理系列文章——GPS信号以及C/A码生成

GPS信号

目前GPS信号一共有三个频点L1/L2/L3。
其中传统GPS信号就是 L1C/A和L1P和L2P 双频,
L1C/A和L1P是正交的,L2只有L2P而没有民用信号
L1C/L2C/L5C都是GPS现代化后新增的信号,L1M/L2M是新增的军用信号。GPS后续发展是这些新信号逐渐取代原来的旧信号,不过这个过程将相当漫长。
在这里插入图片描述
后面我们介绍最典型的L1C/A信号的构成。

L1C/A信号的构成

L1C/A信号由三部分组成。
1、载波
2、伪随机码,这里称为C/A码
3、电文,数据码
在这里插入图片描述
载波就是L1频率为1575.42MHz的载波信号,将伪码和数据调制到载波上发射出去。
C/A码是长度为1023个码片的伪随机序列,其设计具有良好的自相关和互相关特性,即自相关函数幅值大大高于互相关函数幅值。这个特性被用来识别不同的伪随机序列。C/A码自然也具有这个良好的特性。因此不同的卫星可以用不同的C/A码来区分。
电文,数据码包含周内秒,星历,历书等内容,用于定位解算。

C/A码信号的生成

C/A码的生成是我们进行接收处理的第一步,首先我们需要根据其定义用程序描述出来

根据GPS ICD描述,CA码发射发生器使用2个M序列构成,分别被称为G1序列和G2序列。每个卫星测距码信号使用的唯一C/A码序列就是通过将G1序列和一定抽头选择后的G2序列模2和(modulo-2 sum,其实就是异或运算(^,xor()),就是二进制加法)产生的。

每个M序列寄存器都是10Bit,则根据M序列性质,G1序列和G2序列的周期都是2^10-1=1023。两个序列模2和运算得到的Gold码周期也是1023,也就是书上到处说的1023个码片(CA Chip)。

由于Gold码周期是1023个码片,所以在1.023MHz时钟驱动下,一个周期信号长度(1023个码片)为1ms,即每隔1ms产生一个周期的全部1023个码片,每个码片持续时间长度为1ms/1023 ≈1us.

如下图是2个线性移位寄存器组,每个寄存器组是10bit,上本部分产生G1序列,下半部分产生G2序列,受GPS时钟控制。CA码时钟是1.023MHz。

输出的C/A码是G1的最后一级寄存器内容和G2抽头选择寄存器输出,进行模2和运算输出。
在这里插入图片描述
M序列的使用一般都是提供一个多项式,通过抽头控制;

在这里插入图片描述
G1和G2的初始相位设置为全1。根据GPS ICD中 PRN对应的抽头的描述可以得到以下matlab程序来生成1-32组C/A码
在这里插入图片描述

function [caCode] = prn_GPS_L1CA_Gen(prn);

%10阶的移位寄存器G1和G2
%G1,G2寄存器初始化
regG1 = 1 * ones(1,10);
regG2 = 1 * ones(1,10);

%获取卫星PRN号码
snum = prn;

%确定CA码的抽头选择
switch snum
     case 1             %1号星
        m = 2; n = 6;
     case 2             %2号星
        m = 3; n = 7;  
     case 3             %3号星
        m = 4; n = 8;
     case 4             %4号星
        m = 5; n = 9;
     case 5             %5号星
        m = 1; n = 9;
     case 6
        m = 2; n = 10;
     case 7
        m = 1; n = 8;
     case 8
        m = 2; n = 9;
     case 9
        m = 3; n = 10;
     case 10
        m = 2; n = 3;
     case 11
        m = 3; n = 4;  
     case 12
        m = 5; n = 6;
     case 13
        m = 6; n = 7;
     case 14
        m = 7; n = 8;
     case 15
        m = 8; n = 9;
     case 16
        m = 9; n = 10;
     case 17
        m = 1; n = 4;
     case 18
        m = 2; n = 5;
     case 19
        m = 3; n = 6;
     case 20
        m = 4; n = 7;  
     case 21
        m = 5; n = 8;
     case 22
        m = 6; n = 9;
     case 23
        m = 1; n = 3;
     case 24
        m = 4; n = 6;
     case 25
        m = 5; n = 7;
     case 26
        m = 6; n = 8;
     case 27
        m = 7; n = 9;
     case 28
        m = 8; n = 10;
     case 29
        m = 1; n = 6;  
     case 30            %30号星
        m = 2; n = 7;
     case 31            %31号星
        m = 3; n = 8;
     case 32            %32号星
        m = 4; n = 9;
end


%reg1存储移位寄存器regG1的1023点输出
for i= 1:1023
    reg1(i) = regG1(10);                %G1输出存储到reg1
    temp = xor(regG1(3),regG1(10));     %移位寄存器G1的反馈
    regG1(1,2:10) = regG1(1,1:9);       %G1移位
    regG1(1) = temp;                    %反馈
end

%reg2存储移位寄存器regG2的1023点输出
for i= 1:1023
    reg2(i) = xor(regG2(m),regG2(n));                %G2输出存储到reg2 
    temp1 = xor(xor(regG2(2),regG2(3)), regG2(6));   %移位寄存器G2的反馈
    temp2 = xor(xor(regG2(8),regG2(9)), regG2(10));  
    temp = xor(temp1,temp2);
    regG2(1,2:10) = regG2(1,1:9);                    %G2移位
    regG2(1) = temp;                    %反馈
end


caCode = mod(reg1 + reg2 , 2);

I = find(caCode == 0);
caCode(I) = -1;

以上我们完成了GPS C/A码生成,走出了GPS信号处理的第一步。

标签:case,10,G2,1023,大话,regG2,信号处理,GPS
来源: https://blog.csdn.net/gzy0506/article/details/121278769

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有