基于FPGA的GPS信号快速捕获方法实现
- 格式:pdf
- 大小:794.34 KB
- 文档页数:5
基于
FPGA的
GPS信号快速捕获方法实现3
刘亿民
,宋学瑞
(中南大学信息科学与工程学院
,湖南长沙
410083)
摘 要
:介绍了一种基于平均相关器的
GPS信号快速捕获算法
,通过
VHDL语言描述在
FPGA上实现了该算法。平均相关器是一种将输入的
5000点
GPS样本信号平均化为
1024点样
本
,然后通过
FFT方法实现
GPS信号快速捕获的基带相关器。这种相关器可以一步搜索到所有
可能的码相位偏移
,大大提高了捕获速度
,比较好地满足了实时处理的要求。
关键字
:GPS;FPGA;捕获
;采样平均
中图分类号
:P228 文献标识码
:A 文献标识码
:10082
9268(
2006)
062
00422
05
1 引 言
捕获卫星信号的时间是评价
GPS接收机的主
要性能指标
,一种实现快速捕获的方法是使用基于
快速傅立叶变换的相关器
,这种方法可以一步搜索
到所有可能的码移
,从而加快捕获速度[1]
。
C/A码
周期为
1ms,如果中频采样频率为
5MHz,即每
1ms
有
5000个样本
,进行
5000点的
FFT相关函数计算
将导致计算量巨大、设计复杂、接收机成本增高等问
题[2]
。如果能在不降低信号信噪比的情况下
,将每
毫秒
5000点的中频采样数据下采样到每毫秒
1024
点
,就可解决上述问题。通过
1024点的
FFT模块
进行频域软件信号处理是硬件实现
C/A码捕获的
主要思想[3]
。
2
GPS信号捕获
GPS接收机在接收
GPS卫星信号时
,先将
L波
段的载频下变频至中频信号
,再进行解扩、解调等处
理。在解扩解调之前
,GPS接收机必须搜索载波频
率偏移和
C/A码码移
,即进行
C/A码捕获
,然后进
行卫星信号的跟踪和锁定[4]
。
当在
GPS接收机中采用基于
FFT的快速码并
行相关检测技术时
,相应的自相关函数可以用下式
来表示
:
R[m]=6L
n=0x[n]・
CA[(
n+m)
]=x[n]
CA[-n]=f-1
(
fx[n])・
f3(
CA[n]))
式中
,
R[m]表示得到的自相关序列
;x[n]表示输入
的采样数据
;CA[n]表示本地
C/A码
;L为
C/A码
的长度
,m为本地码的码移数
,表示卷积
;f表示
傅立叶变换
;f3
(
CA[n])表示本地
C/A码序列傅
立叶变换的共轭
;
f-1
表示反傅立叶变换。
5000点
FFT对于硬件实现来说是非常昂贵的
,
这可能是频域处理接收机目前并不是很流行的原因
之一。
Xilinx公司已经开发出处理
1024点的
FFT
模块。该模块可以进行复数
FFT变换
,XN_RE、
XN
_IM分别表示输入数据的实部和虚部
,XK_RE、
XK_
IM分别表示输出数据的实部和虚部
,FWD_INV引
脚的配置决定
FFT或
IFFT变换模式
,START为启
动信号
,其他引脚都可以根据用户的需要来配置和
使用。该模块的详细操作时序如图
1所示。按照时
序图规定的时序关系将相应的信号分别送入
FFT
模块
,就可以方便的实现信号的
FFT处理。
原始
C/A码的码率为每毫秒
1023点
,如果接
收到的信号可以被恢复到与
C/A码同样的速率
,那
么就可以使用
1024点的
FFT模块来计算。一种使
用
1024点
FFT模块计算平均相关的方法是通过改
良
C/A码
,重新调节接收序列和本地
C/A码序列
至
1024个样本每毫秒以适应
FFT模块的大小。将
来自接收机前端的以
5000Msps的采样速率采样并
24GNSSWorldofChina/2006.
63收稿日期
:20062
082
15
基金项目
:国家
863项目(
2001AA613050)
,国家自然科学基金(
40204001)地理空间信息工程国家测绘局重点实验室项
目(
B2531,200604)量化后的信号下采样至
1024点每毫秒
,同时将本地C/A码也做同样的处理
,就可将改进的两路码序列
进行相关处理。两个改进的码序列代替了原始
C/A码序列
,直接送入
1024点的
FFT模块
,从而高效率地完成相关处理。
图
1
FFT模块的操作时序
GPS信号
C/A码的周期是
1ms,中频采样信号
频率是
5MHz,5000个采样数据点覆盖了
1ms的时
域
,也就是说
5000个采样数据点代表一个完整的
C/A码序列
,每个码元由
4个或
5个采样数据点代
表。其中
,5个采样数据对应一个
C/A码码元的情
况占绝大多数。可以通过一定数量的
5个采样数据
的集合和一定数量的
4个采样数据的集合来将
5000
点的采样数据平均化成
1024点
,但是这时所得到的
码序列不一定能很好地近似表达一个
C/A码
,除非
原先的
5000个采样数据中的第一个采样数据正好
对应于
C/A码第一个码片的第一个采样值
,但这种
概率非常小
,尤其是在冷启动的情况下。因为没有
足够的信息来决定哪
4个或
5个点组成一组并被平
均(除非有一种方法可以知道样本和码元的相对位
置)
,所以只能对多个不同的相对位置进行计算
,通过比较来得到一个相对正确的值。因为
C/A码是
一个循环序列
,所以
5个连续采样点中必定有一个
是正确的平均起始点
,这样将得到
5个包含
1024个
平均样本的序列
,其中必定有一个序列能给出
C/A
码的一个很好的近似表达。这种方法需要进行
5次
1024个数据点的
FFT处理
,所需要的时间比单次对
5000个数据点作
FFT处理的方法要少
,而且降低了
系统的复杂性和成本[5]
。
3 基于
FPGA的平均相关器
C/A码
捕获电路实现
GPS平均相关器捕获电路由数控振荡器、平均
器、本地码产生器、复数乘法器、
FFT/IFFT、最大值
检测器等组件组成。图
2是基于平均方法的
GPS
捕获电路在
FPGA上实现的顶层模块图:
图
2 捕获电路顶层模块图
342006.6/全球定位系统 用一个
5000×12位的
RAM来储存样本数据
,
在完成对
5000个数据的采集后
,所采集的数据被送
到载波去除电路。本地载波产生器用来产生
2路正
交信号
sin(ω
t)和
cos(ω
t)
,载波去除电路的输出信号
被送到采样平均电路
,将数据下采样到
1024点
,再
送到
1024×
32位的存储器中。将这些数据通过
1024点的复数
FFT转换至频域
,并与本地码的共轭
FFT相乘
,最后使用一个复数
IFFT将其变回时域。最大值检测器用来检查
IFFT的
1024路输出中的最
大值。这个过程重复四次以上
,每次都从不同的起
始点开始。检查所有的五个循环后
,最大值检测器
将最大值与标准值相比较以判断是否找到真正的极
值
,如果没有探测到
,将使用新的搜索单元
,利用不
同的频率偏移值重复上述过程。直到找到真正的最大值为止。
图
3 平均器模块框图
顶层模块图中的平均器模块的实现如图
3所
示。平均算法选择每个
C/A码元由
4或
5个样本
来代替
,其中有
120个码元由
4个样本每码元取代
,
余下的
904个码元由
5个样本每码元取代
,因此这
种平均算法大部分时间进行平均
5个样本运算。用
一个
133
120的
RAM存储
4样本平均发生的码元起始地址
,一个
13位的计数器用来计数所有的
5000
个样本
,当计数器和
RAM的值相匹配时
,累加器进
行
4个样本平均
,同时
RAM的地址增加
,指向下一
个四样本平均操作的起始地址。当
RAM和计数器
的值不匹配时
,累加器进行
5个样本的平均。
图
4 最大值搜索器框图
图
4为最大值搜索器实现图。反傅立叶变换
后
,必须从
1024个复数结果中搜索相关最大值
,找
到最大值发生的地方和最大值的大小以及载波相
位。对于最大值搜索器最重要的信息并不是最大值
本身的值
,而是最大值的位置。分别计算实部和虚
部的平方
,然后相加可以得到一个很大的平方值
,首
先存取的最大值为零
,每个时钟周期可以产生一个新的平方和值
,这个新的值与存储在电路中的最大
值相比较
,如果新的值大于原始值
,就将其替代寄存
器中的最大值
,地址值将使用计数器来计算
,搜索器
中有两个计数器
,因为有一个用来检查地址值
,一个
用来检查起始点。起始点计数器从零开始计到四
,
另一个计数器从
0到
1023,搜索
IFFT输出的五个
循环中的每一个。样本中的码相位可以由以下公式
44GNSSWorldofChina/2006.6