一种基于fpga分步码相位细化的gnss信号的捕获方法

文档序号:1741203 发布日期:2019-11-26 浏览:29次 >En<

阅读说明:本技术 一种基于fpga分步码相位细化的gnss信号的捕获方法 (A kind of catching method of the GNSS signal based on the refinement of FPGA substep code phase ) 是由 孙娟娟 陈蒙琪 黄学政 王永 王兴 吴子涵 于 2019-06-18 设计创作,主要内容包括:本发明涉及一种基于FPGA分步码相位细化的GNSS信号的捕获方法,包括步骤如下:(1)首先进行粗捕获。将全部接收数据与本地产生的载波混频、完整的伪随机码进行相关,找到最大相关值,若最大相关值符合捕获阈值,获取载波与粗略的码相位,进行精捕获,否则重复步骤(1)。(2)精捕获。将步骤(1)中的载波与粗码相位值反馈到控制器中,控制器控制截取部分接收信号与步骤(1)得到的本地载波混频,消除载波的影响后与部分伪随机码进行相关,得到精度更高的码相位。本发明可以减小捕获的计算量,缩短捕获时间,提高码相位精度的同时没有增加其他计算模块,节约硬件资源。(The present invention relates to a kind of catching methods of GNSS signal based on the refinement of FPGA substep code phase, comprise the following steps that (1) is slightly captured first.It is related to locally generated carrier frequency mixing, progresss of complete pseudo noise code by data are all received, maximum related value is found, if maximum related value meets capture threshold value, obtains carrier wave and rough code phase, progress essence capture, otherwise repeatedly step (1).(2) essence capture.Carrier wave in step (1) is fed back with thick code phase values into controller, controller control interception part receives signal and is mixed with the local carrier that step (1) obtains, it is related to the progress of part pseudo noise code after the influence of elimination carrier wave, obtain the higher code phase of precision.The present invention can reduce the calculation amount of capture, shorten capture time, not increase other computing modules while improving code phase precision, save hardware resource.)

一种基于FPGA分步码相位细化的GNSS信号的捕获方法

技术领域

本发明涉及一种基于FPGA分步码相位细化的GNSS信号的捕获方法,属于卫星定位导航技术领域。

背景技术

卫星定位技术在日常生产生活、军事领域都有着广泛的应用,可以提供全天候实时定位、导航、授时服务。卫星定位系统由三个部分组成,包括空间星座部分、地面监控部分和用户接收设备部分。其中用户接收设备用来接收卫星信号,进行卫星信号的捕获、跟踪、位置解算等处理,最终实现卫星定位。接收设备中捕获处理的目的是为了识别所有的用户可见星,获得粗略的卫星信号的载波频率和码相位,为跟踪环路提供初始值,是实现卫星定位的先决条件。

到目前为止,利用软件实现的用户接收机已经非常成熟,它可以快速的开发较复杂的算法、有良好的灵活性,但是,受到信号处理速度慢的限制。

FPGA有丰富的硬件资源,信号并行处理,计算速度较快,兼具灵活性高和开发周期短的特点,因此,研究接收机的FPGA实现具有重要的意义。

在传统捕获算法的FPGA实现中,需要处理的数据量受到卫星中频信号采样率的影响。采样率越高,单位时间内的数据量越大,导致计算量、所需硬件资源超标,因此在开始处理数据时往往需要将数据进行下采样处理。下采样虽然会减少计算量和资源需求量,但会影响数据与本地码的相关特性,导致输出的载波频率和码相位值有一定的误差。当误差过大时,后续跟踪环路不能锁定,使得该捕获结果不可用。

现有的减小码相位误差的方法多为频域搜索完成后在时域内减小搜索步长重新进行搜索,这种方式捕获时间长,消耗资源大。

发明内容

针对现有技术的不足,本发明提供了一种基于FPGA分步码相位细化的GNSS信号的捕获方法。

本发明将捕获分为粗捕获和精捕获两个步骤。粗捕获为下采样的并行码相位搜索捕获方式,在获得粗捕获的码相位和载波频率后,从粗码相位前一个码片的位置开始获取部分点数的数据,去掉载波的影响后,与部分本地伪随机码进行相关,找到最大相关值对应的精确码相位。这种分步的码相位细化捕获方式既可减小码相位的误差,又复用了原有的捕获模块,减小捕获时间,节省硬件资源。

术语解释:

1、混频:是指利用非线性运算,把两个不同频率的信号进行混合,得到第三个频率的信号的过程。在本发明中,利用乘法器将用余弦信号调制的输入信号与本地产生的正、余弦信号进行相乘,达到混频的目的。

2、正交混频,是指将输入信号与正交的正、余弦信号相乘混频。

本发明的技术方案为:

一种基于FPGA分步码相位细化的GNSS信号的捕获方法,运行于捕获系统,所述捕获系统包括本地振荡器、下采样模块、傅里叶变换模块、本地伪随机码发生器、逆傅里叶变换模块、控制器;本地振荡器用来产生正交的正、余弦本地载波信号;下采样模块用来将高采样率的长信号平均下采样为短信号;傅里叶变换、逆傅里叶变换模块实现相对应的数学运算;本地伪随机码发生器用来产生不同卫星的本地伪随机码;控制器用来根据上一次捕获的结果,控制下一次捕获的数据获取、下采样率、部分本地伪随机码获取。输入信号与本地振荡器产生的正交两路载波信号相乘混频后,下采样模块分别对两路输出信号进行下采样,下采样后的两路信号分别作为傅里叶变换模块的实部输入信号、虚部输入信号进行傅里叶变换得到中间信号一;同时本地伪随机码发生器产生本地伪随机码,经过下采样模块下采样后输入至傅里叶变换模块,输出信号取共轭后得到中间信号二,上述中间信号一与中间信号二相乘后输入至逆傅里叶变换模块进行傅里叶反变换,然后进行取模-平方运算后输出相关值,进行捕获判断,将判断结果输入到控制器,控制下一次捕获。包括步骤如下:

A、粗捕获:

(1)取采样频率为fs的N点GNSS信号r(n),分别与本地振荡器产生的正、余弦载波信号 sin(2πfcarry)、cos(2πfcarry)相乘进行混频,得到I、Q两路数据;所述N点GNSS信号是指包含一个完整伪随机码周期的信号;所述一个完整伪随机码周期包含码片数为n;fs≥2fI,fI为所处理的数字信号的中心频率;fcarry=fI-|fDoppler|+Δ·i,fDoppler为多普勒效应产生的频偏,通常为± 10KHz;Δ为载波频率搜索的步长,人为设定,一般选为500Hz;i=0,1,2,...,2×fDoppler/Δ;

(2)将步骤(1)得到的I、Q两路数据分别进行M点的均匀下采样后,分别作为实部、虚部,进行M点的傅里叶变换FFT;M为2的整数幂,且M<N;

(3)将本地产生的采样频率为fs的伪随机码进行M点的均匀下采样后,傅里叶变换FFT运算后取共轭;

(4)将步骤(2)的傅里叶变换FFT结果与步骤(3)的伪随机码共轭结果相乘,为Y(k),进行M点的逆傅里叶变换IFFT;

(5)将步骤(4)的结果取模平方,得到GNSS信号与本地载波、本地伪随机码的相关值序列,找到相关值序列中的最大值Max和次大值Second_Max,若Max≥3×Second_Max,判断粗捕获完成,本地载波的频率就是粗捕获的载波值,最大值Max在相关值序列中的位置为粗码相位值,进入步骤(6),否则,返回步骤(1),将步骤(1)中i加1,更改本地振荡器产生的正交载波信号的频率,进行下一频率的搜索;

B、精捕获:

(6)将步骤(5)粗捕获得到的载波值和粗码相位值反馈到控制器中,控制器控制数据的输入,从粗捕获得到的粗码相位值的前一码片的位置开始读取N′点部分GNSS信号数据,M≤N′<N,与粗捕获得到的载波值进行正交混频,去除载波的影响,得到I1、Q1两路数据;

(7)将步骤(6)的I1、Q1两路数据在控制器的控制下进行M点的均匀下采样后,分别作为实部、虚部进行M点的傅里叶变换FFT;

(8)控制器控制本地伪随机码发生器,以频率fs采样后,取与步骤(6)同样长度N′的部分伪随机码,做M点的均匀下采样,进行傅里叶变换FFT运算后取共轭;

(9)将步骤(7)中傅里叶变换FFT之后的数据与步骤(8)中傅里叶变换FFT之后取共轭的数据相乘,做逆傅里叶变换IFFT运算;

(10)将步骤(9)的运算结果取模平方,得到GNSS信号与本地载波、本地伪随机码的相关值,找到最大相关值对应的位置,若该位置与上次捕获得到的码相位的差小于一个码片的距离,判断此次精捕获有效,最大相关值对应的位置为本次精捕获得到的码相位,当N′=M时,结束精捕获;否则,返回到步骤(6),将本次精捕获的码相位前一码片的位置作为下一次精捕获开始读取数据的位置,减小数据长度继续进行精捕获。

根据本发明优选的,所述M点的均匀下采样,包括步骤如下:

进行FFT运算的数据必须为2的整数幂,当进行FFT运算的数据量过大时,完成计算所需的时间和消耗的硬件资源都过大,因此一般都需要将数据进行下采样处理。

N/M=m,m为下采样后每个数据点包含的原数据点个数,即下采样的倍数;

当m为整数时,每m个数据求和,作为一个数据点;

当m不是整数时,有如下关系式,如式(I)所示:

式(I)中,a,b分别是最接近m的整数,x是需要连续a点数据求和的次数,y是需要连续b点求和的次数,将a,b点求和均匀的分布在整个数据中,完成均匀下采样。在精捕获过程中,数据长度可以选择为2的整数幂,方便下采样,同时不影响码相位细化程度。

根据本发明优选的,所述控制器用于控制每次精捕获不同长度的数据输入,包括步骤如下,

A、第一次精捕获:根据粗捕获得到的粗码相位值IndexCA,0<IndexCA<M,从位置pos1开始读取N′点数的数据,pos1=ceil(N/M)×IndexCA-ceil(N/n),ceil(·)为向上取整函数, M≤N′<N-pos1;第一次精捕获中最大相关值对应的位置为第一次精捕获得到的码相位 Index′CA

B、第二次精捕获:根据第一次精捕获得到的码相位Index′CA,0<Index′CA<M,从位置pos2 开始读取N″点数的数据,M≤N″<N′,pos2=pos1+ceil(N′/M)×Index′CA-ceil(N/n);

以此类推,直至N″....′=M,即细化到最高精度结束。

根据本发明优选的,所述控制器用于控制每次精捕获过程中的不同长度数据的M点均匀下采样,包括步骤如下:控制器根据上述输入数据的点数,计算下采样倍数。

C、第一次精捕获的下采样倍数为N′/M=m′,根据m′的数值,进行M点的均匀下采样;

D、第二次精捕获的下采样倍数为N″/M=m″,根据m″的数值,进行M点的均匀下采样;

以此类推,直至N″....′=M,即细化到最高精度结束。

根据本发明优选的,所述控制器用于控制每次精捕获过程中不同长度的本地伪随机码产生,包括步骤如下:控制器控制本地伪随机码发生器产生采样频率为fs的伪随机码,之后取与上述输入数据量长度相同的部分伪随机码进行M点的均匀下采样。

根据本发明优选的,M点的傅里叶变换FFT的变换公式如式(II)所示:

式(II)中,k=0,1,2,...,M-1,x(m)为要进行FFT运算的离散序列,X(k)为离散傅里叶变换结果,j为虚数单位。

根据本发明优选的,M点的逆傅里叶变换IFFT的变换公式如式(III)所示:

式(III)中,m=0,1,2...,M-1,y(m)为逆傅里叶变换得到的离散序列;j为虚数单位。

本发明的有益效果为:

1、本发明一种基于FPGA分步码相位细化的GNSS信号捕获方法,粗捕获过程中采用下采样的方式,减少FFT运算的点数。FFT的计算点数与计算量、捕获时间、硬件资源成正比,减少FFT的点数,将很大程度的减小捕获的计算量,节约捕获时间,减少硬件资源。

2、本发明一种基于FPGA分步码相位细化的GNSS信号捕获方法,精捕获过程取部分数据、部分伪随机码进行相关运算,减小运算量,相比于粗捕获提高了码相位的精度。

3、本发明一种基于FPGA分步码相位细化的GNSS信号捕获方法,精捕获复用了粗捕获的运算模块,没有增加新的硬件资源消耗。

附图说明:

图1是本发明一种基于FPGA分步码相位细化的GNSS信号的捕获方法的原理框图。

图2是本发明一种基于FPGA分步码相位细化的GNSS信号的捕获方法的整体流程图。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步描述,但不限于此:

实施例

一种基于FPGA分步码相位细化的GNSS信号的捕获方法,如图2所示,运行于捕获系统,如图1所示,捕获系统包括本地振荡器、下采样模块、傅里叶变换模块、本地伪随机码发生器、逆傅里叶变换模块、控制器;本地振荡器用来产生正交的正、余弦本地载波信号;下采样模块用来将高采样率的长信号平均下采样为短信号;傅里叶变换、逆傅里叶变换模块实现相对应的数学运算;本地伪随机码发生器用来产生不同卫星的本地伪随机码;控制器用来根据上一次捕获的结果,控制下一次捕获的数据获取、下采样率、部分本地伪随机码获取。输入信号与本地振荡器产生的正交两路载波信号相乘混频后,下采样模块分别对两路输出信号进行下采样,下采样后的两路信号分别作为傅里叶变换模块的实部输入信号、虚部输入信号进行傅里叶变换得到中间信号一;同时本地伪随机码发生器产生本地伪随机码,经过下采样模块下采样后输入至傅里叶变换模块,输出信号取共轭后得到中间信号二,上述中间信号一与中间信号二相乘后输入至逆傅里叶变换模块进行傅里叶反变换,然后进行取模-平方运算后输出相关值,进行捕获判断,将判断结果输入到控制器,控制下一次捕获。本实施例以在GPS接收机中数字中频信号处理部分的应用为例,包括步骤如下:

A、粗捕获:

(1)取采样频率为fs=16.3676MHz的16368点GNSS信号r(n),分别与本地振荡器产生的正、余弦载波信号sin(2πfcarry)、cos(2πfcarry)相乘进行混频,得到I、Q两路数据;fI为所处理的数字信号的中心频率;fcarry=fI-|fDoppler|+Δ·i,fDoppler为多普勒效应产生的频偏,为±10KHz;Δ为载波频率搜索的步长,人为设定,为500Hz;i=0,1,2,...,2×fDoppler/Δ;

(2)将步骤(1)得到的I、Q两路数据分别进行1024点的均匀下采样后,分别作为实部、虚部,进行1024点的傅里叶变换FFT;

(3)将本地产生的采样频率为fs=16.3676MHz,数据长度为16368的伪随机码(C/A码)进行1024点的均匀下采样后,1024点傅里叶变换FFT运算后取共轭;

(4)将步骤(2)的傅里叶变换FFT结果与步骤(3)的伪随机码(C/A码)共轭结果相乘,为 Y(k),进行1024点的逆傅里叶变换IFFT;

(5)将步骤(4)的结果取模平方,得到GNSS信号与本地载波、本地伪随机码(C/A码)的相关值序列,找到相关值序列中的最大值Max和次大值Second_Max,若Max≥3×Second_Max,判断粗捕获完成,本地载波的频率就是粗捕获的载波值fI,最大值Max在相关值序列中的位置为粗码相位值IndexCA(0<IndexCA<1024),进入步骤(6),否则,返回步骤(1),将步骤(1)中 i加1,更改本地振荡器产生的正交载波信号的频率,进行下一频率的搜索;

粗捕获过程中采用下采样的方式,减少FFT运算的点数。FFT的计算点数与计算量、捕获时间、硬件资源成正比,减少FFT的点数,将很大程度的减小捕获的计算量,节约捕获时间,减少硬件资源。当输入信号采样频率为fs=16.3676MHz,信号长度为1ms时,不进行下采样处理的话需要进行16368点的FFT运算;下采样到1024点后只需进行1024点FFT,运算点数减小16倍。

B、精捕获:

(6)将步骤(5)粗捕获得到的载波值f和粗码相位值IndexCA反馈到控制器中,控制器控制数据的输入,从粗捕获得到的粗码相位值的前一码片的位置pos1开始读取8192点部分GNSS信号数据,与粗捕获得到的载波值进行正交混频,去除载波的影响,得到I1、Q1两路数据;pos1=16× IndexCA-16。

(7)将步骤(6)的I1、Q1两路数据在控制器的控制下进行1024点的均匀下采样后,分别作为实部、虚部进行1024点的傅里叶变换FFT;

(8)控制器控制本地伪随机码发生器,以频率fs=16.3676MHz采样后,取与步骤(6)同样长度8192的部分伪随机码(C/A码),做1024点的均匀下采样,进行傅里叶变换FFT运算后取共轭;

(9)将步骤(7)中傅里叶变换FFT之后的数据与步骤(8)中傅里叶变换FFT之后取共轭的数据相乘,做逆傅里叶变换IFFT运算;

(10)将步骤(9)的运算结果取模平方,得到GNSS信号与本地载波、本地伪随机码的相关值,找到最大相关值对应的位置,若该位置与上次捕获得到的码相位的差小于一个码片的距离,判断此次精捕获有效,最大相关值对应的位置为本次精捕获得到的码相位,此时进行捕获的数据长度为 8192,大于下采样的1024点,得到的码相位值仍存在下采样产生的误差,需继续细化。

(11)进行第二次精捕获。将步骤(10)第一次精捕获得到的码相位Index′CA反馈到控制器中,控制器控制数据的输入。从粗捕获的码相位前一码片的位置pos2开始读取4096点部分数据,与粗捕获得到的载波进行正交混频,去除载波的影响得到I、Q两路数据,其中pos2=pos1+8× Index′CA-16。

(12)将步骤(11)的I、Q两路数据在控制器的控制下进行1024点的均匀下采样后,分别作为实部、虚部进行1024点的FFT。

(13)控制器控制本地伪随机码发生器,以频率fs=16.3676MHz采样后取与步骤(11)同样长度4096的部分伪随机码(C/A码),做1024点的均匀下采样,进行FFT运算后取共轭。

(14)将步骤(12)中FFT之后的数据与步骤13中FFT之后取共轭的数据相乘,做IFFT运算。

(15)将步骤(14)的运算结果取模平方,得到接收数据与本地载波、伪随机码(C/A码)的相关值。找到满足阈值要求的最大相关值对应位置,作为较高精度的码相位Index″CA(0< IndexCA″<1024),此时进行捕获的数据长度为4096,大于下采样的1024点,得到的码相位值仍存在下采样产生的误差,仍需继续细化。

(16)第三次精捕获。将步骤(15)第二次精捕获得到的码相位Index″CA反馈到控制器中,控制器控制数据的输入。从粗捕获的码相位前一码片pos3的位置开始读取2048点部分数据,与粗捕获得到的载波进行正交混频,去除载波的影响得到I、Q两路数据,其中pos3=pos2+4× Index″CA-16。

(17)将步骤(16)的I、Q两路数据在控制器的控制下进行1024点的均匀下采样后,分别作为实部、虚部进行1024点的FFT。

(18)控制器控制本地伪随机码发生器,以频率fs=16.3676MHz采样后取与步骤(16)同样长度2048的部分伪随机码(C/A码),做1024点的均匀下采样,进行FFT运算后取共轭。

(19)将步骤(17)中FFT之后的数据与步骤(18)中FFT之后取共轭的数据相乘,做IFFT运算。

(20)将步骤(19)的运算结果取模平方,得到接收数据与本地载波、伪随机码(C/A码)的相关值。找到满足阈值要求的最大相关值对应位置,作为较高精度的码相位Index″′CA(0< Index″′CA<1024),此时进行捕获的数据长度为2048,大于下采样的1024点,得到的码相位值仍存在下采样产生的误差,仍需继续细化。

(21)第四次精捕获。将步骤(20)第三次精捕获得到的码相位Index″′CA反馈到控制器中,控制器控制数据的输入。从粗捕获的码相位前一码片的位置pos4开始读取1024点部分数据,与粗捕获得到的载波进行正交混频,去除载波的影响得到I、Q两路数据,其中pos4=pos3+2× Index″′CA-16。

(22)控制器控制本地伪随机码发生器,以频率fs=16.3676MHz采样后取与步骤21同样长度1024的部分伪随机码(C/A码),进行FFT运算后取共轭。

(23)将步骤(21)中FFT之后的数据与步骤(22)中FFT之后取共轭的数据相乘,做IFFT运算。

(24)将步骤(23)的运算结果取模平方,得到接收数据与本地载波、伪随机码(C/A码)的相关值。找到满足阈值要求的最大相关值对应位置,为较高精度的码相位Index″″CA(0<Index″″CA<1024),此时进行捕获的数据长度为1024,等于下采样的1024点,得到的码相位值不存在下采样产生的误差,精捕获完成,得到的码相位最终结果为pos5=pos4+Index″″CA

本发明精捕获过程取部分数据、部分伪随机码进行相关运算,减小运算量,相比于粗捕获提高了码相位的精度。同样的,当输入信号采样频率为fs=16.3676MHz,信号长度为1ms时,粗捕获时将包含16368个点的完整信号下采样到1024点,码相位分辨率为16×1/fs,若第一次精捕获取 8196点数据,将其下采样到1024点,此时的码相位分辨率为8×1/fs,码相位精度较粗捕获提高了一倍,随着第二次、第三次等多次精捕获的进行,码相位精度随着采样点数、下采样倍数的减小而增大,直至达到最高的码相位精度,即码相位分辨率为1/fs

本实施例中,步骤(2)、(3)中16368点数据进行1024点均匀下采样过程如下:

解为:

即需要16次连续15点求和,1008次连续16点求和。为了使数据均匀下采样,将16次连续 15点求和位置均匀的分布在整个数据段中,位置如附表1:

表1

本实施例中,步骤(7)、(8)中8192点数据进行1024点下采样如下:8192/1024=8,为整数,因此直接将连续的8个数据求和作为采样后的一个数据点即可。

同理,本实施例中,步骤(12)、(13)中4096点数据进行1024点下采样如下:4096/1024=4,直接将连续的4个数据求和作为采样后的一个数据点即可。

同理,本实施例中,步骤(17)、(18)中2048点数据进行1024点下采样如下:2048/1024=2,直接将连续的2个数据求和作为采样后的一个数据点即可。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于RTK改进技术的标准时间亚纳秒级授时方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类