陈利军,李 芳,崔 静
(军械工程学院 信息工程系,石家庄 050003)
GPS伪随机码的软件和硬件仿真实现
陈利军,李芳,崔静
(军械工程学院 信息工程系,石家庄050003)
目前四大全球卫星导航定位系统中,美国的GPS是发展最早也是应用面最广的系统,GPS提供民用的标准定位服务和军规的精确定位服务;为研究GPS卫星导航电文的产生机理和针对GPS的导航对抗技术,在详细介绍GPS伪随机码的基本原理和C/A码生成电路的基础上,通过MATLAB和FPGA分别对C/A码进行了软件和硬件仿真实现;基于MATLAB的软件仿真采用循环程序实现了m序列和C/A码,基于FPGA的硬件仿真首先构建一个D触发器元件,然后利用该元件通过并行指令实现m序列,最终生成C/A码;两种方法虽然采用不同的思路和技术,但是得到了一致的C/A码信号样式;伪随机码的产生是GPS实现扩频通信的重要环节,通过对GPS伪随机码的仿真实现,有助于对GPS卫星信号的捕获研究和针对GPS的欺骗式干扰研究。
GPS;伪随机码;C/A码;仿真;MATLAB;FPGA
卫星导航系统是一种基于卫星的无线电导航系统,目前四大全球卫星导航定位系统有美国的GPS系统、欧洲的“伽利略”系统、俄罗斯的“格洛纳斯”系统和中国的“北斗”系统,其中GPS是发展最早、应用也最广的系统。GPS是全球定位系统(global position system)的英文缩写,其系统组成包含空间部分(24颗卫星,截止2010年4月,实际共有33颗卫星)、用户部分(用户接收机)和地面监控部分(1个主控站,5个监控站,3个注入站)。GPS卫星导航定位信号的发送属于一种噪声通讯,它将卫星信号淹没在噪声之中,不仅不易被捕获而且由于发射功率小,能极大地节省卫星电能[1]。噪声通信由信息论的奠基人香农于20世纪40年代末期首先提出。香农编码定理指出:只要信息速率Ra小于信道容量C,则总可以找到某种编码方法,使在码字相当长的条件下,能够几乎无差错地从遭受到高斯白噪声干扰的信号中恢复出原发送信息。20世纪60年代中期,随着伪随机噪声编码技术的问世,噪声通讯才得到真正应用。
伪随机噪声码(pseudo-random noise code,伪随机码或伪噪声码)是一个具有一定周期的二进制离散符号串。图1表示一种极简单的伪随机码,它可以有两种表述形式:二进信号波形,记作x(t)和二进符号序列,记作{x}。二进信号波形取值-1或1,二进符号序列取值1或0。
图1 伪随机码的表述形式
对二进符号序列作模二和运算,二进信号波形作相乘运算时遵循的运算规则如表1所示。
伪随机码采用一种具有特殊反馈电路的移位寄存器产生。该移位寄存器称为最长线性移位寄存器(其反馈电路是线性的),它产生的伪随机码也称为m序列。图2所示为一个四级m序列发生器,它包括4个D型触发器(存储单元)、模二和反馈电路、置1脉冲和时钟脉冲产生器。置1脉冲将使各个D型触发器置1,该状态作为触发器的初始状态,以后每来一个时钟脉冲,存储单元的值都顺序地右移一个单元,而最后一个存储单元的值作为输出。在该图中,D3、D4的状态经模二和反馈至D1[2-3]。
表1 两种表述方式及其运算规则
图2 四级m序列发生器示意图
该m序列的状态序列如表2所示。
表2 四级m序列发生器各级状态序列
当上述四级m序列发生器进入第15个状态时,D3和D4的模二和为1,因此下一个时钟脉冲各级又会进入初始状态1,这样就会形成一个周期性的状态序列。
m序列发生器的反馈逻辑通常采用特征多项式来表示,即:
(1)
式(1)中,Ci表示第i级移位寄存器反馈线。当Ci=0表示反馈线不存在,Ci=1表示反馈线存在。其中C0始终取1,表示总反馈线存在,若C0=0则表示无反馈,无反馈无法产生m序列。依据式(1),图2所示电路的特征多项式为:
(2)
根据表2可见,m序列具有以下特性:
1)n级移位寄存器所产生的m序列的长度周期为LP=2n-1,如图2所示,长度周期LP=24-1=15 bit。
2)在m序列的一个周期中,输出的“1”的个数比“0”的个数多1,如表2中D4的输出序列111100010011010,含8个1,7个0。
3)一个周期的m序列等价平移后与原m序列进行模二和,其结果是一个结构不变的等价平移m序列。
如将表2中D4的输出序列前移1个时钟周期,得到等价平移序列与原m序列进行模二和运算,其结果是一个结构不变的等价平移序列,如图3所示。
图3 由m序列得到结构不变的等价平移序列
4)m序列具有良好的相关性。设x1(t)和x2(t)为同周期T的序列,两者之间的互相关系数(表示x1(t)和x2(t)之间的“相似”程度)定义为:
(3)
其中:τ为x2(t)相对于x1(t)的时间延迟。当x1(t)=x2(t)时,ρ(τ)就是自相关系数。对于时元tk离散采样的自相关系数为:
(4)
按二进信号波形乘法运算规则,m序列的自相关系数为:
(5)
图4 m序列自相关系数波形图
通过m序列自相关系数波形图可以看到,如果两序列之间的时延不为长度周期的整数倍,则相关系数总小于1,反之则等于1。GPS信号接收机正是利用了这一原理来捕获、识别不同卫星的信号[5]。
GPS卫星发射的导航定位信号包括两个载波,两个伪随机码(C/A码和P码,C/A码民用,P码军用)和一个D码,这里只对C/A码进行介绍。
C/A码属于一种复合码被称为Gold码,由美国学者R.Gold提出,它由两个周期和速率相同而码元结构不同的m序列G1(t)和G2(t)组合而成。C/A码发生器示意图如图5所示。
图5 C/A码发生器示意图
两个m序列G1(t)和G2(t)的特征多项式分别为:
(6)
(7)
G1(t)和G2(t)两个m序列由于采用10级移位寄存器,所以均有1023个码元。G1(t)采用移位寄存器的末级输出。G2(t)选择其中两级作模二和运算后输出,如图5所示选择了第2、第6级作模二和运算。G2(t)移位寄存器的每一级输出相互都是结构不变的等价平移m序列,两个结构不变的等价平移m序列进行模二和运算,其结果还是一个结构不变的等价平移m序列。选取中间不同的两级寄存器进行模二和运算,其平移量存在不同。因此G2(t)选取不同的两级抽头作模二和运算,最终会产生不同GPS卫星各自的C/A码[6]。
本文采用MATLAB仿真模拟G1(t)、G2(t)和C/A码的产生。由于不同GPS卫星的G2(t)选取不同的两级抽头作模二和运算,因此各颗卫星的G2(t)输出相对于移位寄存器末级输出的平移量(时延)是不同的。本文采用1×37的矩阵来构建不同卫星G2(t)的输出平移量。仿真代码如下所示:
%构建37颗GPS卫星的G2(t) 输出平移量矩阵
g2_delay = [5,6,7,8,17,18,139,140,…948,950];
%构建G1(t)
Reg1 = -1*ones(1,10);
for i = 1:1023,
% G1(t)采用移位寄存器的末级输出
g1(i)= Reg1(10);
% 第3、第10级寄存器的输出模二
feedback1 = Reg1(3)* Reg1(10);
% 寄存器逐级右移
Reg1(2:10)= Reg1(1:9);
% 第3、第10级寄存器的输出模二和后反馈到第1级寄存器
Reg1(1)= feedback1;
end
%构建G2(t)
Reg2 = -1*ones(1,10);
for i=1:1023,
g2(i)= Reg2 (10);
feedback2= Reg2 (2)* Reg2 (3)* Reg2 (6)* Reg2 (8)* Reg2 (9)* Reg2 (10);
Reg2 (2:10)= Reg2 (1:9);
Reg2 (1) = feedback2;
End
%输入卫星编号
num_sta = input(‘请输入卫星编号’);
%获得平移量
g2_timeslice = g2_delay(1,num_sta);
%根据平移量得到G2(t)最终输出
g2_shift(1: g2_timeslice)=g2(1023- g2_timeslice +1:1023);
g2_ shift (g2_timeslice +1:1023)=g2(1:1023- g2_timeslice);
g2= g2_ shift
% G1(t)与 G2(t)模二和得到C/A码
ca = g1.*g2;
在得到C/A码的基础上,通过将二进信号波形转换为二进符号序列并绘制二维图形,可得到对应GPS卫星在一个周期内的C/A码,如图6所示。
图6 C/A码的二进符号序列
本文采用Xilinx公司的SPARTAN6系列芯片XC6SLX45,在Xilinx ISE Design Suite 12.2平台上利用VHDL语言首先构建初始状态为“1”的D触发器元件,并以该元件为基础构建G1(t)、G2(t)和C/A码生成电路。对于G2(t)信号,选择第2级、第6级寄存器输出产生。C/A码生成器代码如下所示。
--D触发器元件生成程序
entity D_CODE is
port(d,clk: in std_logic;q:out std_logic);
end D_CODE;
architecture Behavioral of D_CODE is
begin
process(clk)
variable i : std_logic:='0';
begin
if(clk'event and clk = '1' ) then
case i is
--当i初值为0,触发器第一拍输出1
when '0'=> q<='1';i:='1';
--第一拍之后触发器的输出由输入决定
when others=> q<=d; end case;
end if;
end process;
end Behavioral;
--G1(t)、G2(t)和C/A码生成程序
entity D_GPS_CODE is
port(clk:in std_logic;g1:inout std_logic;a1:inout std_logic;g2:inout std_logic;a2:inout std_logic;ca:out std_logic);
end D_GPS_CODE;
architecture Behavioral of D_GPS_CODE is
component D_CODE
port(d,clk: in std_logic;q:out std_logic);
end component;
signal q1:std_logic_vector(0 to 10);
signal q2:std_logic_vector(0 to 10);
begin
a1<= q1(3) xor q1(10);
q1(0)<=a1;
--调用D触发器元件
dff1_1: D_CODE port map(q1(0),clk,q1(1));
dff1_2: D_CODE port map(q1(1),clk,q1(2));
dff1_3: D_CODE port map(q1(2),clk,q1(3));
dff1_4: D_CODE port map(q1(3),clk,q1(4));
dff1_5: D_CODE port map(q1(4),clk,q1(5));
dff1_6: D_CODE port map(q1(5),clk,q1(6));
dff1_7: D_CODE port map(q1(6),clk,q1(7));
dff1_8: D_CODE port map(q1(7),clk,q1(8));
dff1_9: D_CODE port map(q1(8),clk,q1(9));
dff1_10: D_CODE port map(q1(9),clk,q1(10));
---G1(t)信号
g1<=q1(10);
a2<= q2(2)xor q2(3)xor q2(6)xor q2(8)xor q2(9) xor q2(10);
q2(0)<=a2;
--调用D触发器元件
dff2_1: D_CODE port map(q2(0),clk,q2(1));
dff2_2: D_CODE port map(q2(1),clk,q2(2));
dff2_3: D_CODE port map(q2(2),clk,q2(3));
dff2_4: D_CODE port map(q2(3),clk,q2(4));
dff2_5: D_CODE port map(q2(4),clk,q2(5));
dff2_6: D_CODE port map(q2(5),clk,q2(6));
dff2_7: D_CODE port map(q2(6),clk,q2(7));
dff2_8: D_CODE port map(q2(7),clk,q2(8));
dff2_9: D_CODE port map(q2(8),clk,q2(9));
dff2_10: D_CODE port map(q2(9),clk,q2(10));
---G2(t)信号
g2<=q2(2) xor q2(6);
---C/A码
ca <= g1 xor g2;
end Behavioral;
在该程序的基础上分配好输入输出管脚后可下载实现C/A码硬件生成器。本文利用ISE自带的仿真器Isim,添加激励源后生成的C/A码仿真结果如图7所示。
图7 FPGA上C/A码生成器仿真结果
GPS卫星发送的D码即数据码,其速率较低,为50 bit/s,采用宽带的C/A码对其进行调制后实现D码扩频,而增大频宽,信号的信噪比会降低,因此GPS卫星信号几乎淹没在各种电磁噪声之中,要想捕获、识别乃至跟踪它都非常困难。通过以上仿真手段较好地模拟出GPS的C/A码形成过程和信号样式,有助于对GPS工作原理、卫星信号捕获和欺骗式干扰技术的研究[7]。
[1] 雷武虎. 卫星导航定位原理与干扰[M].北京:解放军出版社,2010.
[2] 徐绍铨,张华海.GPS测量原理及应用[M].武汉:武汉大学出版社,2008.
[3] Kaplan E D,Hegarty C J.GPS原理与应用[M].2版.寇艳红,译.北京:电子工业出版社,2007.
[4] 李明峰,冯宝红.GPS定位技术及其应用[M].北京:国防工业出版社,2006.
[5] 李亚峰,王新龙.一种GPS软件接收机信号快速捕获算法研究[J].航空兵器,2013,1:20-26.
[6] 陈科,王仕成.弱信号条件下GPS导航技术综述[J].第二炮兵工程学院学报,2012,26 (3):90-95.
[7] 葛含益,李伟.武器装备论证仿真模型规范体系总体设计研究[J] .军事运筹与系统工程,2008,22(3):50-55.
Implementation of Software Simulation and Hardware Simulation for GPS’ Pseudo-random Noise Code
Chen Lijun,Li Fang,Cui Jing
(Department of Information Engineering,Ordnance Engineering College,Shijiazhuang050003,China)
At present,in the four global satellite navigation and positioning systems,American GPS is the earliest and widely used system. GPS provides Standard Positioning Service (SPS) and Precise Positioning Service (PPS). For studying the navigation data of GPS and the Counter Technology to GPS,this paper introduces the basal theory of GPS’ Pseudo-random Noise Code and the circuit which produces the C/A code. Then it emulates the C/A code of GPS by MATLAB and FPGA. The software simulation by MATLAB uses the circular sentences to implement the m-sequence and the C/A code. The hardware simulation by FPGA produces a D-Trigger first,then it uses the D-Trigger and parallel sentences to implement the m-sequence and the C/A code. Although the two methods use different thinking and technologies,they get the same C/A code. GPS’ Pseudo-random Noise Code is the important segment to spread spectrum communication. This study to GPS’ Pseudo-random Noise Code will contribute to the research on capturing GPS signal and deception jamming to GPS.
GPS; pseudo-random noise code;C/A code; simulate;MATLAB;FPGA
1671-4598(2016)04-0226-04DOI:10.16526/j.cnki.11-4762/tp.2016.04.065
TP391.9
A
2015-10-27;
2015-11-21。
陈利军(1973-),男,四川邛崃人,硕士,主要从事计算机系统结构、嵌入式系统应用方向的研究。