基于凌华科技与System Generator的GPS快速捕获算法的实现与验证

•    作者

刘恩晓,男,1983.08生人,现为哈尔滨工业大学通信技术研究所博士生在读,主要研究方向为卫星导航接收机及其抗干扰技术研究

•    应用领域

导航接收机关键算法的硬件实现

•    挑战

目前在GPS接收机中,对码的捕获一般有两种方法:串行搜索方法和并行搜索方法。串行搜索方法硬件实现简单,但其捕获时间较长,每更改一次本地码相位,就需要花费1ms,完成一个搜索约2min左右时间。导航接收机在很多应用领域要求高的数据更新率,这就要求捕获时间变得更短才行。目前GPS信号捕获电路的主要实现手段是通过使用DSP芯片,DSP可以通过C语言编写程序,属于软件工作,可以在较高的层次进行设计,为设计工作提供了方便。但是此种实现方法不利于知识产权的保护,也不利于生产专门的芯片。因此本文采用FPGA来实现。而FPGA资源有限,如何通过复用来满足资源占用是一个关键问题。此外,导航信号强度远远低于噪声,接收SNR仅有-20dB,准确采集中频数据对算法的验证至关重要。

•    解决方案

重点研究了在SDR(Software Defined Radio)平台上实现频域捕获算法,基于SDR平台和FFT来实现并行快速捕获算法。本文使用Xilinx公司的系统级建模工具System Generator完成了对XCVFX60FF1152这款V4 系列的FPGA芯片编程,完成了频域捕获算法的硬件实现。在设计中采用时分复用技术,使整个设计方案只采用一个FFT核,并且使用了一种新的复数乘法方案,节约了硬件资源。为了避免系统热噪声的影响而准确采集导航数据,本系统设计时使用ADLINK公司生产的数字化仪PCI-9846H进行卫星信号采集,使用Xilinx公司提供的编程软件——System Generator,读取采集数据,在Matlab下的Simulink中进行系统设计调试,然后直接生成硬件描述语言下载到FPGA中。

   1. 引言 GPS接收机必须复现待捕获的卫星所发射的PN码,然后必须移动这个复现码的相位,直到与卫星的PN码发生相关为止。当接收机所复现的码与输入的卫星码相匹配时,有最大的相关值。当复现码的相位与输入的卫星码的相位在任何一边的偏移超过1个码片时,有最小的相关。这就是GPS接收机捕获或跟踪卫星信号时在码相位域内检测卫星信号的方式。这样GPS信号的捕获和跟踪过程是二维的信号复现过,如图1所示。图中横坐标为码相位,纵坐标为多普勒频槽。

 

图1二维C/A码搜索图案

典型情况下码相位以1/2码片的增量被搜索。每个码相位搜索增量是一个码片分格。每个频率的分格大概是Hz,其中是搜索逗留时间(逗留时间越长频率分格越小)。一个码分格和一个多普勒分格合并起来成为一个方格。在码域内,GPS接收机完成自相关的过程是,首先搜索希望卫星的相位,然后调节复现码发生器的基码标称速率,以补偿由于接收机和卫星之间视距动态在卫星PRN码上所引起的码相位延迟,从而实现对卫星码状态的跟踪。码相关的过程用被相移的复现码与输入的卫星码实时相乘,然后积分和累加而实现。GPS接收机的目标是使其复现码的瞬时相位于所希望的卫星的码相位保持最大的相关。

接收机还必须调整其复现的载频信号,以使其与所希望的卫星频率相匹配,否则在距离域内的信号的相关过程将因为GPS接收机频率响应的滚降特性而受到严重的衰减,后果是永远也捕获不到信号。即使接收机在搜索过程中成功捕获了信号,如果失去了对卫星频率的跟踪,也会接着失去对码的跟踪。因此,GPS接收机首先搜索希望卫星的载波多普勒频率,然后跟踪这颗卫星的载波多普勒状态,以在载波多普勒域完成载波的匹配过程。

捕获过程认为为0,接收机对接收信号和本地信号进行相关处理。即

(1)

 

(2)

 

其中,是第个相干积分时间,和分别是相干累积采样点数和第一个采样的位置。输出表示如下:

(3)

(4)

其中是累积时间内信号的幅度,是导航数据,是接收信号与本地信号的频差,是相位差,是本地码与接收码相关值,和分别是I、Q两路信号相 关后的加性高斯白噪声,均值为0,方差为。为C/A码自相关函数,。当时,与成比例,是码片长度。

构成复相关函数,令其模值的平方为检测变量。当最大的大于一个给定门限,则认为信号被捕获了,其最大值相对应的就是伪随机码的码延迟时间,就是载波的多普勒频移。下面分析的统计特性,以后分析捕获性能时要经常用到。

(5)

(6)

代表了由多普勒频移和码相位带来的相关值的降低。信号部分不依赖于相位误差。

噪声部分用来表示,则

(7)

(8)

很显然,平方操作改变了噪声的统计特性,与式(3)、(4)相比,均值已经不再是零。并且噪声的方差增加了,由式(8)可进行计算。检测变量的统计特性与SNR相关。

2. 频域快速捕获算法

2.1 频域捕获原理

随着硬件技术的发展,FFT的运算速度越来越快。在现代通信,无线电导航,精密定位,精密时间测量和传递、授时等方面都要求对无线电信号进行实时相关处理。为了做到信号的快速捕获,GPS接收机引入FFT算法来计算相关值。在每一个频槽同时计算出所有码相位的相关值,可以使捕获时间尽可能的缩短。

FFT搜索算法是基于数学特性:时域的卷积等价于频域的相乘[9]91-93。传统的两个抽样序列之间的关系是按如下方式实现

(9)

式中作为延迟的函数,是和之间的函数。但是如果直接计算相关值,其运算量非常大,正比于序列长度的平方。若果通过频域来计算,其运算量将大幅度减少,运算时间变短。其数学原理如下:

(10)

式中表示卷积,代表傅里叶反变换,代表傅里叶变换的共轭,为输入信号的频谱,为本地伪码的频谱。基于上述公式推导,设计基于FFT的并行捕获原理框图如图2所示。

 

图2 基于FFT的并行捕获原理框图

伪码并行FFT算法的搜索过程与匹配滤波法相似(但速度比匹配滤波法快),即:在估计的多普勒频率点进行一次FFT搜索全部伪码相位,功率最大值和门限值比较,若最大值大于门限值,则表明信号捕获,给出信号所在位置的码相位和多普勒频率,进入信号跟踪阶段,如果最大值小于门限值,则表明信号未捕获,通过控制逻辑改变多普勒搜索单元,重复上述过程。由于FFT具有把能量集中到一个单元上的特性,所以FFT的并行搜索方式,不但搜索时间短,而且可以在低信噪比下捕获信号。

2.2 频域捕获的步骤

伪码并行FFT算法的具体过程如下:

(1)     中频信号采样后经数字下变频,交给FFT模块。其中I、Q两支路分别为实部和虚部进行复数FFT运算。

(2)     在FFT单元中,对进来的数据做分段处理,分段的长度L决定一次并行运算的长度,与捕获概率、捕获时间有很大的关系。

(3)     对本地产生的扩频码进行FFT运算,并取其复共轭。

(4)     把数据段和地址段的FFT结果相乘,然后进行IFFT运算。

(5)     对IFFT的结果取模值,存储结果。

   对结果进行捕获判决,找出累加后一帧中最大点与设定的门限比较,如果高于门限值,进行一次捕获检验,确定是真的捕获后交与后面跟踪支路。

2.3 频域捕获运算量分析

由于FFT算法的使用,使得相对时域的搜索算法相比,运算量大幅下降。以码长为1023讨论,对一路的接收信号序列和本地信号序列的相关函数在时域的表达式为:

(11)

相关间隔设定为1个码片。在时域直接计算1023个相关函数值,所需乘法次数为:

(12)

所需加法的次数为:

(13)

可以看出时域捕获计算量太大。若在接收信号序列和本地序列的末尾添上1个0,构成点序列。可以利用FFT方便的计算出它们的离散傅里叶变换和,而相关函数在频域计算表达式为:

(14)

在频域计算相关函数值所需的FFT次数为3次,即对中频信号做一次FFT,对本地信号做一次FFT,再对做一次IFFT,所需乘法运算次数为:

(15)

所需加法运算的运算次数为:

(16)

在频域计算1023个相关函数值所需的乘法运算次数缩减为在时域运算的1.57%,所需要的加法运算次数缩减为在时域运算的2.94%。可见该算法对运算量有明显的减少。

3.算法实现与实验验证

本文中的导航信号来源于安捷伦4438C信号模拟器,射频前端采用SiGe公司的SE4150芯片,数据采集采用ADLINK公司的PCI-9846H高速高分辨率数字化仪,该数字化仪具有4通道,16bit量化和40MSps的数据采集能力,板载512MHz的SDRAM,采集后将数据通过PCI存储dat格式文件到计算机中,完全满足实验需求。数字处理平台选用的是国防科技大学空间仪器研究中心开发的通用软件无线电(SDR)开发平台。

软件平台是Xilinx公司的System Generator,其特点是可以通过Simulink在高层实现硬件编程。System Generator是Xilinx公司的系统级建模工具,在很多方面扩展了MathWorks公司的Simulink平台,提供了适合硬件设计的数字信号处理(DSP)建模环境,加速、简化了FPGA的DSP系统级硬件设计。目前,基于System Generator的设计方法已在复杂系统实现中展现出强大的潜能。System Generator 在DSP工程师和FPGA工程师之间架起了一座桥梁,使得它在两个领域都得到广泛应用。对于DSP工程师来说,通过Simulink的设计,System Generator即可自动完成硬件比特流的产生,而不需要了解比特流的产生细节。对于FPGA工程师来说,System Generator并没替代HDL的实现方式,而是简化了繁琐的编程过程,让设计者把精力放在系统的关键模块上。

3.1 系统设计

如果一个系统的所有模块在System Generator模块库中能找到,那么使用System Generator实现整个系统设计将非常方便。用户只需要点击Generator按钮即可产生所需要的所有文件,这些文件包括以下几个。

(1)  该设计的全部HDL代码。

(2)  Clock Wrapper,包括系统时钟和Clock Enable信号的产生。

(3)  Testbench,用于ISE下仿真测试文件,可以对比Simulink下的仿真结果。

(4)  工程脚本文件,允许不同综合工具(比如XST和Synplify)操作System Generator产生的HDL代码。

(5)  其他文件,ISE通过这些文件使用System Generator产生的代码。

   使用System Generator进行FPGA开发的主要流程如图3所示。

 

3.2 硬件开发平台

国防科技大学空间仪器工程研究中心的通用软件无线电(SDR)开发平台,采用Xilinx公司的Virtex-4系列的XC4VFX60FF1148这款FPGA芯片和TI公司的TMS320C6455-1G这款DSP芯片作为主处理器。图4及为SDR平台。此外,此开发平台上还集成了

(1)  AD9287,四通道,8比特量化串行输出,A/D转换器。

(2)  AD9432,单通道,12比特量化并行输出,A/D转换器。

(3)  AD9777,二通道,16比特并行输入,D/A转换器。

(4)  VME总线模块。

(5)  外扩SpiFlash,总容量64Mbit。

 

 

 

图4 SDR平台

   本设计方案采用了FPGA芯片作为处理器芯片,其内部资源如表1所示,可以看出此款 FPGA芯片资源丰富,为基于FFT的快速捕获算法的实现提供了很好的条件。

表1 XC4VFX60FF1148片内资源列表

Configurable Logic Blocks (CLBs)

XtremeDSP Slices

Block RAM

Array

Rowtimes;Col

Logic Cells

Slices

Max Distributed RAM (Kb)

18 Kb

Blocks

Max Block RAM (Kb)

128×52

56880

25380

395

128

232

4176

DCMs

PMCDs

PowerPC Processor

Ethemet MACs

RocketIO Transceiver Block

TotalI/O Banks

Max User I/O

12

8

2

4

16

13

576

   3.3 实验结果

设置模拟器输出GPS 4号卫星导航信号,SNR=-19dB,多普勒频偏+1kHz;ADLINK新建任务,设置ch0为工作通道,生成dat文件存储到本地计算机,40MHz的采样速率采集大于1s时长。

SiGe公司的SE4150芯片输出中频为16.368MHz,对DDS(Direct Digital Synthesizer)位数要求较高,所以对采集的数据进行预处理:经数字变频将中频降到1.25MHz。对于2MHz的带宽,对数据不等间隔抽取降采样,等效为4.096MHz的采样速率,并重新量化为8bit位宽。将预处理的数据打开到工作区以待System Generator读取调用。

System Generator的总体设计如图5所示,主要包括以下几个功能模块:数据读取模块,4096点FFT/IFFT模块,扫频模块,信号产生模块,复数取模模块,复数乘法模块,FFT结果存储模块,捕获判决模块,逻辑控制模块,本地数据与中频数据选择模块(FFT数据与IFFT数据选择模块,系统控制信号产生模块)等。

 

图5 系统总体结构图

   System Generator 可以自动生成可在ISE中处理的寄存器传输级(Register Transfer Level, RTL)和IP核代码,在ISE中完成Xilinx执行工程后生成位流文件,最后下载到FPGA完成整个设计流程。表2给出了经ISE综合后本设计方案的硬件消耗情况。

从表中可以看出本设计方案所占用的芯片内的各项硬件资源平均在20%以下,这主要是因为,本设计方案采用了时分复用技术在整个设计方案中只采用一个FFT/IFFT核。从报告中可以看出系统的所支持的最大时钟频率为93.458MHz。

表2 本设计方案利用的硬件资源

Logic Utilization

Used

Available

Utilization

Number of Slices

5295

25280

20%

Number of Slice Flip Flops

6171

50560

12%

Number of 4 input LUTs

6462

50560

12%

Number of bonded IOBs

91

576

15%

Number of FIFO16/RAMB16s

36

232

15%

Number of GCLKs

1

32

3%

Number of DSP48s

44

128

34%

   使用System Generator的Hardware Co-simulation功能,实现SDR平台与PC交互通信,SDR平台读取PC中的数据,并将运行结果返回给PC从而在PC上观察分析实验结果,如图6所示。

 

图6 PC机与SDR 间Hardware Co-simulation实验

图7为输入的待捕获信号以及本地信号的波形图。其中自上而下分别是待捕获信号的实部,本地信号实部,待捕获信号的虚部,本地信号的虚部,这里已经对待捕获信号进行了归一化处理。

 

图7 系统输入数据波形图

图8为FFT/IFFT模块的输入数据波形图。其中图a)为待运算数据的实部,图b)为待运算数据的虚部,而图c)为控制FFT/IFFT模块开始工作的start端输入的信号,图d)为控制其进行FFT还是IFFT运算的fwd_inv端输入的信号。输入的运算数据分为3部分:本地信号FFT运算结果与待捕获信号FFT运算结果复共轭相乘得到的数据,下一次相关运算所需的本地信号,下一次相关运算所需的待捕获信号。可以看到每当一部分数据输入时,start端都会出现一个脉冲以使模块开始进行运算,同时fwd_inv端输入信号控制进行FFT运算还是IFFT运算。由于本地信号FFT运算结果与待捕获信号FFT运算结果复共轭相乘得到的数据要进行IFFT运算,所以当这部分数据输入时,fwd_inv端输入的是0,代表进行的运算是IFFT运算。

 

图8 FFT/IFFT模块输入数据波形图

图9为FFT/IFFT模块的输出数据波形图。其中图a)为运算结果的实部,图b)为运算结果的虚部,图c)为xk_index端输出数据波形,图d)为标志着运算结束的edone端输出数据波形。运算结果分为三部分:本地信号FFT运算结果与待捕获信号FFT运算结果复共轭相乘得到的数据进行IFFT运算的结果待捕获信号FFT运算结果,本地信号FFT运算结果。从图中可以看出由于待捕获信号的信噪比SNR=-19dB,其信号频谱已完全淹没于噪声中。FFT/IFFT模块完成一次运算,edone端会在输出结果的前一个时钟周期输出一个脉冲,而当运算结果输出时,xk_index端也会随之输出运算结果的序列号。

 

图9 FFT/IFFT模块的输出数据波形图

图10为最终得到的捕获结果波形图,而图11为最终捕获到的码相位延时和多普勒频槽。可以看出在SNR=-19dB时,本设计方案得到了很好的相关峰。最终捕获得到的码相位延时为2000,多普勒频槽为7,即捕获到的DDS模块的频率字为40032,其对应的载波频率为1.251MHz。这与输入的待捕获数据的参数一致。所以从仿真结果上可以证明,本设计方案能够进行GPS信号的捕获,同时进一步证明了基于FFT的频域快速捕获算法是正确有效的。

 

图10 捕获结果波形图

 

图11 最终捕获结果

4. 结论

本文详细阐述了如何通过ADLINK结合System Generator构建验证快速捕获算法。本设计方案总体可分为FFT/IFFT模块,扫频模块,信号产生模块,复数运算模块,FFT结果存储模块,捕获判决模块,以及最复杂的逻辑控制模块等7个模块。并且在设计的过程中只采用个一个FFT/IFFT核,很大程度上节约了硬件资源。同时还采用了一种新颖的复数乘法设计方案。从本章可以看出基于System Generator的硬件开发方法避开了繁琐的编写代码的过程,简单明了,模块化很强,是一种快速有效的开发手段。

同时,本文通过Hardware Co-simulation对本设计方案进行了验证。最终能够对SNR=-19dB的待捕获信号进行正确的捕获。验证了本设计方案的正确性与实用性。