CA码生成原理及matlab程序实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业:用Matlab写C/A码生成器程序,并画生成码的方波图。
C/A码生成原理
C/A 码是用m 序列优选对组合形成的Gold 码。
Gold码是由两个长度相同而互相关极大值为最小的m 序列逐位模2 相加所得到的码序列。
它是由两个10 级反馈移位寄存器组合产生的,其产生原理如图1 所示。
图1 C/A码生成原理
发生器的抽头号为3和10,发生器的抽头号为2、3、6、8、9、10;发生器的第10位输出的数字即为码,而码是由的两个抽头的输出结果进行模2相加得到。
卫星的PRN码与延时的量是相关联的,对C/A码来说,每颗卫星都有特别的延时,如第1颗GPS卫星的G2 抽为2、6,第2颗为3、7,第3 颗为4、8,第4 颗为5、9 等,如图2所示。
通过G2 相位选择可以产生结构不同的伪随机码,从而可以实现不同卫星之间的码分多址技术与卫星识别。
图2 prn序号与G2抽头、时延对应关系
基于MATLAB的GPS信号实现
编写成“codegen”程序,输入[ca_used]=codegen(svnum),其中svnum为卫星号,ca_used 为得到的C/A码序列。
程序具体实现流程如下:
在程序中定义一个数组,使得卫星号与G2的码片延时一一对应。
gs2=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;469;470;471;472;473;474;509;512 ;513;514;515;516;859;860;861;862];
定义两个1×1 023 的数组g1、g2 用来存放生成的Gold 码。
定义一个全1 的10 位数组,作为移位寄存器,相当于G1、G2 生成模块的初值均置为全“1”。
按原理式
来生成两个Gold 码序列。
设定两个Gold 码产生器的反馈抽头:
save1=reg(3)*reg(10); % g1 码的反馈值;
save2=reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);%g2 码的反馈值。
在移位寄存器数组reg 中逐位移动,将末端值reg(10)送入g1(g2),将反馈抽头的模2 值输出save1、save2 送入寄存器首位reg(1)。
g1 码这样重复运算1 023 次后即可生成。
g2 码在此基础上要引入与卫星号相对应的码片延时g2s(s),s 为输入的卫星号。
以码片延时时间作为分界点,将其后半段数据前移,前半段数据后移,这样就得到g2 码。
将产生的g1 和g2 码逐点相乘,反向,即得C/A 码。
程序实现结果
分别输入codegen(22)和codegen(32),得到prn22和prn32 C/A 码序列如图3、图4.
图3 prn22方波图
图3 prn32方波图。