我是靠谱客的博主 香蕉招牌,这篇文章主要介绍北斗B1I测距码的产生以及matlab程序,FPGA程序北斗介绍matlab程序:,现在分享给大家,希望可以做个参考。

北斗介绍

首先关于北斗卫星 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程序:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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测距码内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部