基于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