文献标识码: A
文章编号: 0258-7998(2014)06-0137-03
目前,采用FPGA实现的DSP系统与利用传统DSP处理器相比,在高速与实时性,系统的重配置与硬件可重构性以及单片DSP系统的可实现性等方面具有突出优势[1]。而DSP Builder是Altera公司的一个面向DSP开发的系统级工具,内嵌Matlab的一个Simulink工具箱,使得DSP算法的电路实现可以充分利用Simulink的图形化界面,具有直观、高效的特性,简化了硬件实现流程[2]。采用DSP Builder作为设计数字电路的工具,是现代DSP系统设计的发展方向之一。
GPS L1频点和BD2 B1频点是卫星导航系统中公开的民用信号,以此为基础的软件接收机得到广泛而深入的研究。目前,并行码相位算法在用高级语言实现的软件接收机中广泛应用,在运算速度得到保证的前提下,与串行捕获算法相比可以极大地提高捕获卫星的速度。但是目前大多数嵌入式实时卫星接收机由于计算能力和资源的限制,而只能采用串行捕获的方法。另外,采用C/C++或者Matlab等高级语言实现的软件接收机虽然在捕获速度和精度上满足要求,但是大多数只能实现事后处理,达不到实时处理的要求。即使实现了实时处理,用整台计算机完成接收机的功能成本过高,而且体积重量较大。但FPGA在运算的并行特性以及内部集成的逻辑资源方面有着巨大优势,保证了实时处理的可实现性。
对于RX3007 GPS/BD2双模双通道射频模块,1 ms的中频数据量就达到了16 368个点,原始的算法必须执行一次16 368个点的FFT和IFFT组合,而163 68个点的FFT将极大地消耗LEs和RAM资源,这对FPGA十分不利。因此必须改进捕获算法,将运算量和资源消耗量降至最低。相比参考文献[3]中自行设计浮点型FFT的方式,本文在DSP Builder的图形化界面中以第三方可定制FFT IP核为核心搭建基于改进并行码相位算法的GPS/BD2双模接收机快速捕获电路,实现双模双通道快速捕获,能极大地缩短开发周期,减少资源消耗,提高计算效率。
1 并行码相位捕获算法原理
卫星接收机捕获算法的实现与射频前端紧密关联,本文采用广州润芯公司的RX3007双模双通道射频模块,上电后输出频率为4.092 MHz的GPS和BD2两路2 bit中频数字信号,采样时钟为16.368 MHz。
并行码相位捕获算法的原理如图1所示。先将中频信号进行载波剥离,采集整数倍毫秒时间内的数据进行FFT变换;然后将FFT结果与本地伪码的FFT取共轭后的值逐点执行复数乘法;最后对所得结果进行IFFT变换,求取复数的幅值,进行捕获门限判决[4]。
设长度都为N的两个信号x(n)和y(n),x(n)代表输入信号,y(n)代表本地伪码,信号x(n)与y(n)的相关值为:
从而可将相关运算转换为频域的乘法运算。一旦算出了Z(k),则其时域的结果就可以通过傅里叶逆变换得到,即:
2 算法改进及仿真
以GPS为例,平均降采样[5]主要是采用一个期望的小频率时钟对原始数据重采样,对一个周期内的数据进行平均。但是降采样时对这个时钟要求较高,不方便实现[6]。将载波去除之后的16 368个数据降采样至1 024点,要进行16次15个点的平均操作,其余均为16个点的平均。为方便实现和节省资源,本文采用固定位置和只进行累加的方式,即先找出所有的对15个点累加操作的起始位置并存储起来备用,将16 368个点的位置与之比较,如果相同则进行连续15个点的累加操作,其余情况下均进行连续16个点的累加。本地C/A码先上采样至16.368 MHz,然后采取同样的方式进行下采样。为减少存储伪码FFT结果的位数,对下采样后的伪码累加值做除法运算,以降低平均采样后的幅值,最后执行1 024点的FFT。由于硬件电路中全是整型操作,为了便于存储处理以及减少存储所占的空间,综合考虑精度和资源消耗两方面因素,最终将所有32颗卫星的本地伪码FFT结果扩大5倍并取整,存储备用。另外,考虑弱信号条件和捕获速度,采用4 ms非相干累积的方式提高信噪比。BD2 GEO卫星C/A码速率为2.046 MHz,没有调制NH码,所以必须降采样至2 048点,执行2 048点FFT/IFFT组合,但捕获过程中的其他操作同GPS类似。本设计的目标是对中频数据进行适当预处理使之能够调用Altera的FFT IP核执行FFT和IFFT变换组合,由于FFT IP核采用块浮点的处理方式,运算过程中在精度和资源占用之间的折中,数据位宽和旋转因子固定,每一级蝶形变换都会根据情况对数据进行移位,如果超出数据位宽,则低位数值将会被丢弃。考虑到这种情况,最后的门限判决采用主次峰值比值超过阈值的方法。图2为GPS/BD2改进捕获算法的Matlab仿真验证结果。
分别用改进算法和原始捕获算法对同一组通过USB2.0采集到的中频数据进行处理,两者捕获得到的卫星一样,各卫星多普勒频率一样,初始码相位精度也在正负半个码片之内。这说明改进的捕获算法不仅大大降低了计算量,实现起来更加容易,而且仍然能够很好地捕获卫星。
3 硬件电路设计及验证
快捕电路主要由平均采样模块average_sample、FFT/IFFT模块fft_my、本地伪码存储模块CA_FFT、复数乘法模块complex_product、时序控制电路及累加判决六大部分组成,各模块工作的参考时钟为16.368 MHz。图3显示了完整电路的其中一部分, 整个电路的工作流程如图4所示。
(1)FFT /IFFT模块
本设计采用FFT和IFFT依照时序轮流在一个FFT IP核中执行的方式,节省了一个FFT处理器,降低了资源消耗。GPS捕获中IP核输入数据位宽旋转因子精度定为18 bit,BD2中精度为20 bit。由于采用主次峰值比值的检测算法,IFFT的输出结果可以不必除以变换点数而直接用于累加判决模块,另外,在信号较强情况下利用1 ms数据进行判决的过程中,IP核的指数输出exp可不予考虑,这样既节省了资源又降低了电路的复杂性。在执行单次FFT/IFFT变换组合的过程中,首先将IP核的inverse信号置高,等待平均采样模块采集完1 ms数据,从RAM中读取数据,依次产生sop和eop脉冲,执行FFT,将所得结果取共轭后依次与预存在ROM中对应卫星的本地伪码FFT结果相乘并暂存结果,然后将inverse信号置低,执行IFFT。
(2)平均采样模块
本设计利用平均采样模块将16.368 MHz的数据降采样至1.024 MHz和2.048 MHz,该模块包括本地载波NCO子模块carrier_gen,15点和16点累加子模块add_1516,RAM模块,累加点数判决子模块index_judge和相应的时序生成电路。其中载波NCO模块基于LUT设计,LUT预存8个数据代表正余弦波的一个周期,数据位宽为3 bit,输入不同的频率控制字将输出不同频率的本地载波。其对应关系为:
其中,fcar为输出的本地载波频率,fclk为输入时钟,M为频率控制字,N为相位累加的数据位宽(本设计N取32)。M由频率控制字选择模块生成,遍历±10 kHz范围内以400 Hz步进的所有对应频率控制字,在捕获过程中完成对本地载波频率的调整。其余子模块在时序电路的控制下完成15点或16点数据累加功能,最终数据分为I支路和Q支路分别暂存在两个1 024×6 bit RAM中。
(3)其他模块
本地伪码存储模块存储的是预先计算好的各卫星伪码被下采样之后的FFT结果,按照实部和虚部分别存放在两个ROM中。对GPS卫星而言,伪码FFT结果扩大5倍取整后的数据需用10 bit表示, 而BD2则需用11 bit表示。复数乘法模块的功能是将本地预存的C/A码FFT结果与FFT IP核执行FFT之后取共轭的结果相乘,然后进行暂存,为执行IFFT准备数据,根据实际情况对数据位宽进行截取,使之等于IP和输入精度。时序控制电路实现了对inverse信号的精确控制以及对各生成地址的计数器的使能和驱动。累加判决完成最终的I2+Q2累加,找出最高峰值和非相邻次高峰,寄存最高峰值的偏移量并进行门限判决。
图5为GPS和BD2快捕电路仿真得到I2+Q2的值,横轴为采样点的偏移值,纵轴为幅值。主次峰值的比值都超过了2,说明捕获到卫星;主峰偏移量分别为644和206,说明快捕电路通过运算得到的初始码相位与Matlab中的结果一致,算法改进效果明显。最终,使用Signal Compiler将图形模块转化成VHDL语言,在QuartusII软件中编译成功后下载配置文件至目标器件EP3C120F780C8N。实际测试时与华讯HX6330 GPS/BD2双模接收机对比,快捕电路可以在2 s之内对所有GPS和BD2卫星完成一次盲捕,两者捕获得到的卫星号基本一致。
改进的捕获算法不仅大大降低了运算量,减少资源消耗,便于硬件电路的实现,而且设计出来的电路能够在单片FPGA内以较高的精度迅速对GPS和BD2卫星同时进行捕获,为捕获之后的跟踪环路留下宝贵的逻辑资源。同时,本设计也为将来添加NIOS II多处理器系统完成信号跟踪解调及导航解算从而在单片FPGA内部实现双模导航接收机的全部功能奠定了基础。
参考文献
[1] 潘松,黄继业,王国栋.现代DSP技术[M]. 西安:西安电子科技大学出版社,2003.
[2] 杨守良.基于DSP Builder的插值滤波器的设计及FPGA实现[J].微型机与应用,2013,32(1):54-56.
[3] 刘健.基于FPGA的高速浮点FFT的实现研究[J]. 微型机与应用,2012,31(14):79-81.
[4] AKOS D M. 软件定义的GPS和伽利略接收机[M].杨东凯,张飞舟,张波,译.北京:国防工业出版社,2009.
[5] STARZYK J A, ZHU Z. Averaging correlation for C/A code acquisition and tracking in frequency domain[J].MWSCAS 2001, Dayton, OH, 2001:905-908.
[6] 赵丽.基于FPGA平台的GPS信号捕获与跟踪算法研究与实现[D]. 南京:南京邮电大学,2012.