概述
北斗介绍
首先关于北斗卫星 B1I卫星的信号组成,通过matlab产生测距码。并且进行BPSK调制
测距码编码器:
首先解释测距码的产生:
G1,G2都是11bit,并且有初始相位,01010101010,
测距码的是由G2的不同抽头进行异或,然后再与G1序列的最低位进行异或,然后每次复位信号到来都要恢复到初始相位,并且G1,G2还要进行移位,
G1移位:G1的第1,7,8,9,10,11进行异或,然后移到G1的最高位,
G2移位:G2的第1,2,3,4,5,8,9,11进行异或,然后移到G,2的最高位,
由G2的不同抽头进行异或:由下面的表选择,不同的卫星号,对应不同的抽头系数
更加详细的介绍如下图:
码发生器如下图:
G2 序列相位分配如表:
matlab程序:
function [pn_code,pn_code_freq] = pin_code_gen(PRN_num,SignalLength,SampleFreq,CodeFreq,CodeLength)
BDB1ICAlist = [ 1 3; 1 4; 1 5; 1 6; 1 8; 1 9; 1 10; 1 11; 2 7; ...
3 4; 3 5; 3 6; 3 8; 3 9; 3 10; 3 11; 4 5; 4 6; ...
4 8; 4 9; 4 10; 4 11; 5 6; 5 8; 5 9; 5 10; 5 11; ...
6 8; 6 9; 6 10; 6 11; 8 9; 8 10; 8 11; 9 10;
9 11; 10 11];
code = zeros(1,CodeLength); % pn_code arrayv
g1 = [0 1 0 1 0 1 0 1 0 1 0 ]; %g1 initial phase
g2 = [0 1 0 1 0 1 0 1 0 1 0 ]; %g2 initial phase
n1 = BDB1ICAlist(PRN_num,1); %g2_phase ,根据我们输入的卫星数,在数组里面确定第一个数
n2 = BDB1ICAlist(PRN_num,2); %g2_phase,根据我们输入的卫星数,在数组里面确定第一个数
for i = 1: CodeLength
g2_i = bitxor(g2(n1),g2(n2)); % bitxor ,bit异或
code(i) = bitxor(g1(11),g2_i);% 得到测距码,
g1_r = bitxor(bitxor(bitxor(bitxor(bitxor(g1(11),g1(10)),g1(9)),g1(8)),g1(7)),g1(1)); %g1寄存器异或
g2_r = bitxor(bitxor(bitxor(bitxor(bitxor(bitxor(bitxor(g2(11),g2(9)),g2(8)),g2(5)),g2(4)),g2(3)),g2(2)),g2(1));%g2寄存器异或
g1(2:11) = g1(1:10);%register ,g1寄存器移位
g2(2:11) = g2(1:10);%register ,g2寄存器移位
g1(1) = g1_r;
g2(1) = g2_r;
if(i == CodeLength)%2046
g1 = [0 1 0 1 0 1 0 1 0 1 0 ]; %g1 initial phase
g2 = [0 1 0 1 0 1 0 1 0 1 0 ]; %g2 initial phase
end
end
code(code == 0) = -1;%wwhen code == 0, make code = -1
pn_code = code;
SampleLength = round((SampleFreq / CodeFreq)* CodeLength); %roud ,intgret
codeindex =ceil((CodeFreq/SampleFreq) *(1:SampleLength));%1111 2222 3333 ....... 2046 2046
codevalidindex = zeros(1,SignalLength);
cnt = 1; %用查表的方式
for index = 1:SignalLength
codevalidindex(index) = codeindex(cnt);
if(cnt == SampleLength)
cnt = 0;
end
cnt = cnt + 1;
end
pn_code_freq = code(codevalidindex); %用角标的方式进行索引, ,然后输出
end
FPGA程序见连接:
最后
以上就是香蕉招牌为你收集整理的北斗B1I测距码的产生以及matlab程序,FPGA程序北斗介绍matlab程序:的全部内容,希望文章能够帮你解决北斗B1I测距码的产生以及matlab程序,FPGA程序北斗介绍matlab程序:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复