中国科技论文在线
http://www.paper.edu.cn
GPS 系统 C/A 码的产生与捕获算法的仿真与研究
何 兴
武汉理工大学信息工程学院,武汉(430070)
E-mail:foryou.2001@163.com
摘 要:GPS 卫星发射 BPSK 调相的伪随机噪声序列 C/A 码,可以通过 C/A 码的捕获来测
距定位。本文介绍了 C/A 码的产生原理和循环相关捕获算法,在 Matlab 仿真环境下实现了
C/A 码的产生,并对捕获算法进行了仿真验证,成功的解算出 C/A 码起始点和载波频率,
试验证明循环相关算法可实现 GPS 信号的捕获,是一种适合 GPS 软件接收机工程实现的算
法。
关键词:GPS 导航;C/A 码;循环相关;捕获算法;Matlab 仿真
1 引言
GPS 导航定位系统是目前最先进、应用最广的卫星导航定位系统,近年来,软件 GPS
接收机正成为一个活跃的技术发展方向,软件接收机成本低,开发速度快,具有高度的可配
置性,在系统改进和新算法检验方面具有优势,对于新一代导航接收机的开发有着重要意义。
GPS 卫星向广大用户发送的用于导航定位的信号,是利用伪随机噪声码传送导航电文的
BPSK 调相信号。为了跟踪和解码 GPS 信号,首先要捕获到 GPS 信号,捕获过程就是要获
得输入信号的 C/A 码起始点和载波频率,然后传递给跟踪过程。本文基于软件方法,研究
GPS 卫星的 C/A 码的产生过程和循环相关捕获算法,并在 Matlab 仿真环境下实现 C/A 码的
产生和捕获。
2 C/A 码的产生
C/A 码是用于粗测距和捕获卫星信号的伪随机码,GPS 的 C/A 码由两个 10 级反馈移位
寄存器组合产生,其产生原理如图所示[1]。
图 1 C/A 码发生器
两个移位寄存器于每星期日子夜零时,在置 1 脉冲作用下处于全 1 状态,同时在频率为
f1=1.023MHz 的时钟脉冲驱动下,两个移位寄存器分别产生码长为 N=210-1=1023,周期为
1ms 的两个 m 序列 G1(t)和 G2(t)。这时 G2(t)序列的输出选择两个存储单元进行二进制相加后
输出,再将其与 G1(t)进行模二相加,将可能产生 1023 种不同结构的戈尔德序列 C/A 码。
- 1 -
中国科技论文在线
3 C/A 码捕获算法
http://www.paper.edu.cn
为了跟踪并解码 GPS 信号,必须使用捕获算法来搜索信号的出现,一旦信号被搜索到,
可以获取必要的参数并转入跟踪程序。有两个重要参数必须被测量:即 C/A 码周期的起始
点,以及输入信号的载波频率。一个采集到的数据集通常包括几颗卫星的信号,每个信号包
含具有不同起始时间的不同 C/A 码,以及不同的 Doppler 频率。针对某个特定的卫星信号,
捕获方法是找到 C/A 码的起始点,并使用这一信息解扩 C/A 码的频谱, 一旦频谱被解扩,
输出将成为连续波信号,它的载波频率也因此可以找到。
3.1 循环相关的捕获方法
捕获的目的就是检查输入信号和本地码的相关性,循环相关算法适用于软件接收机,由
于输入数据并非是连续的,因而这种算法十分适合数据块[2]。其主要思想是利用频域的乘法
特性代替时域的卷积运算,其结果只有 N 个点,其运算量远远小于 2N-1 个点计算量。
长度为 N 的输入序列 )(nx 的离散傅立叶变换为[3]:
kX
)(
=
1
N
∑−
n
=
0
jenx
)(
−
Nk
2
π
/
(1—1)
射频信号是复数,表示为
e π2 ,本地码信号由射频与 C/A 码乘积获得,捕获过程以
j
tf
i
1kHz 的步长搜索 fI ± 10kHz 的频率范围,总共有 21 个频率分量,本地码可表示为:
l
si
=
eC
s
j
tf
π2
i
i=1,2,…,21 (1—2)
两个长度相同的输入序列 )(nx 和本地码
)(nlsi 的互相关运算为:
nz
)(
=
1
N
∑−
m
=
0
mnlmx
(
+
(
)
si
)
互相关 )(nz 的 DFT 变换为:
kZ
)(
=
N
1
−
N
1
−
∑∑
=
0
m
=
0
n
1
−
N
emnlmx
(
)
+
(
)
si
−
j
Nkn
2
π
/
=
=
km
2
π
j
emx
)
(
∑
m
0
=
kLkX
)(
∗
)(
si
/
N
N
1
−
∑
n
=
0
emnl
)
si
+
(
−
j
Nmnk
2
(
π
/)
+
(1—3)
(1—4)
kZ
)(
=
∗
kLkX
)(
)(
si
=
LkX
)(
∗
k
)(
si
(1—5)
本地码信号与输入信号进行相关,如果它包含正确的 C/A 码和正确的频率分量,当达
到正确的码相位时,输出将形成峰值[4]。频域相关后,通过反傅立叶变换就可以得到时域结
果。
3.2 捕获算法的步骤
(1)对一长度的输入电文 )(tx 进行 FFT 变换,转换为频域
(2)只取前一半数据量的
;
)(kX ,并生成复共轭
∗)(kX
)(kX ;
- 2 -
中国科技论文在线
http://www.paper.edu.cn
(3)产生 if =下变频中心频率
10±
kHz
的 21 个频率分量,并与本地码相乘,获得多普
j
tf
π2
i
=
eC
s
l
si
)(kLsi ,也只取前一半数量的
;
)(kLsi ;
勒频移步进搜索本地相关信号,其生成公式为
)(nlsi 进行 FFT 频域变换,得到
∗)(kX
(4)对
(5)将
(6)对 )(kZ 进行反傅立叶变换,并求出其时域的绝对值,若最大值大于门限即为期望
)(kLsi 点对点相乘,结果为 )(kZ ;
与
值,第 i 个频率就是载波频率,第 n 位就是 C/A 码的起始点[5]。
4 仿真试验结果及分析
根据图 1 原理图,用 Matlab 仿真产生的第 21 号卫星的 C/A 码如下【6】。
21号卫星的C/A码
1
0.8
0.6
0.4
0.2
0
-0.2
0
20
40
60
80
100
120
140
160
180
图 2 第 21 号卫星产生的 C/A 码
在 Matlab 仿 真 环 境 下 , 采 用 16MHz 的 采 样 频 率 , 4.123968MHz 的 数 字 中 频 ,
4.123968MHz 的信号的中心频率,取 1ms 的电文数据进行处理即 16000 个数据点,对 21 号
卫星的 C/A 码进行捕获,输入信号的频谱如图 3 所示,射频与 C/A 码相乘得到的本地码频
谱如图 4 所示,相关捕获得到的结果在图 5 中可找到 C/A 码的起始点为 8486,表明初始相
位偏离了原 C/A 码 8486 个采样间隔,即可以计算出初始相位。21 号卫星的展开信号的频率
分量如图 6 所示,最大值发生在 K=4 处,其频率为 4.117575625686117MHz。
- 3 -
中国科技论文在线
http://www.paper.edu.cn
x 104
21卫星输入信号频谱
5
4.5
4
3.5
3
2.5
2
1.5
1
0.5
2000
4000
6000
8000
10000
12000
14000
16000
图 3 输入信号的频谱图
21号卫星本地匹配信号频谱
0
0
1200
1000
800
600
400
200
0
0
2000
4000
6000
8000
10000
12000
14000
16000
图 4 本地生成码频谱图
- 4 -
中国科技论文在线
http://www.paper.edu.cn
x 104
4
GPS=21max at8486
3.5
3
2.5
2
1.5
1
0.5
0
0
x 104
4
3.5
3
2.5
2
1.5
1
0.5
0
0
2000
4000
6000
8000
10000
12000
14000
16000
图 5 相关捕获的结果
GPS=21Freq=4117575.6257
5
10
15
20
25
图 6 卫星 21 的各个频率分量
5 结束语
随着软件无线电技术的发展以及 DSP 和 FPGA 芯片运算速度的提高,软件 GPS 接收
机彻底摆脱传统硬件方法的进程正逐步加快,在软件接收机新的设计概念下,我们可以不断
进行算法改进的研究和试验。本文着重研究了 C/A 码的产生和循环相关捕获及其在 Matlab
环境下的实现,循环相关算法能够为软件 GPS 接收机提供快速捕获能力 ,同时不损失搜索
到信号的灵敏度.初步的研究表明 ,对于多数卫星信号 ,循环相关算法仅使用 1ms 数据即可
实现捕获 ,从而为软件 GPS 接收机 ,提供了一种适用而高效的捕获方法.
- 5 -
中国科技论文在线
http://www.paper.edu.cn
参考文献
[1] 杨俊,武奇生.GPS 基本原理及其 Matlab 仿真[M] .西安:西安电子科技大学出版社,2006.
[2] Tsui J B.Fundamentals of global positioning system receivers:a software approach[M] .NewYork:
Wiley,2000.
[3] 郑君里, 应启珩, 杨为理.信号与系统[M] .北京:高等教育出版社,2000.
[4] Sophia Y Zheng.Signal Acquisition and Tracking for A Software GPS Receiver[D] .Blacksburg Virginia,
2005.
[5] PeterRinder, NicolajBertelsen . Design of A SINGLE FREQUENCY GPS SOFTWARE
RECEIVER[D] .Aalborg University ,2004.
[6] 李南南, 吴清, 曹辉林.MATLAB 7 简明教程[M] .北京:清华大学出版社,2006.
Simulation and Study on the Generation and Acquisition
Algorithm of C/A Code in GPS System
School of Information Engineering, Wuhan University of Technology, Wuhan, China (430070)
He Xing
Abstract
The C/A code transmitted from the GPS Satellites is a bi-phase modulated pseudo random noise
code ,we can use the C/A code to find the user location. In this paper,the generation principle and the
circular correlation acquisition algorithm of C/A code are introduced.The generation of C/A code is
implemented in the Matlab simulation environment,and simulation experiments is implemented to test
the function of the acquisition algorithm , in which the initial phase and carrier frequency of C/A code
is calculated successfully. The results prove the circular correlation acquisition algorithm is suitable for
soft ware GPS receiver.
Key words:GPS navigation; C/A code; circular correlation; acquisition algorithm; Matlab simulation
- 6 -