以SoC FPGA为设计平台的北斗卫星信号跟踪算法的设计

可编程逻辑

1360人已加入

描述

0 引言

全球导航卫星系统(Global Navigation Satellite System,GNSS)是维护国家安全、发展经济的重要基础设施,是体现国家综合国力以及现代化大国国际影响力的重要标志 。发展支持北斗导航系统的接收机终端是北斗导航系统不可或缺的组成部分。目前中国正在大力发展北斗卫星导航系统(BDS),因此大力研究与设计基于BDS的北斗卫星导航接收机成为北斗卫星导航系统重要的环节。

半导体集成快速发展,目前已经向着融合硅片方向发展。FPGA也毫不例外地朝这个方向走去,通用处理器、具有ASSP和DSP功能的IP不断集成到FPGA中;FPGA技术的不断创新与突破,以及硅融合架构产品的推出,必然使FPGA应用于许多先前不曾涉足的领域 。随着技术的进步,SoC高集成度的单芯片化的接收机开发将成为未来卫星导航接收机发展的主要方向。

1 SoC硬件系统设计

系统采用Intel 28 nm工艺的低功耗Cyclone V 5CSEM5F31C6N SoC FPGA作为主控芯片。基于SoC FPGA的载波跟踪环路的硬件系统设计如图1所示。

跟踪算法

SoC System主要由2部分组成,包括Qsys System(嵌入式系统)部分的硬件设计和基于Verilog HDL的FPGA System(FPGA逻辑单元系统)硬件设计。

1.1 Qsys System设计

根据图1设计,利用Qsys工具搭建完成Qsys系统,其互联情况如图2所示。

跟踪算法

系统各部分功能设计如下:

(1)clk_0为外部时钟、复位输入,为PLL提供TCXO-50M时钟输入以及系统的复位信号。

(2)pll_0为图1中的PLL,它提供6个时钟,outclk0与outclk5提供给Qsys中各组件使用;outclk1为片外SDRAM提供时钟;其余3个时钟向外输出,为FPGA System中各模块的驱动时钟。

(3)sdram是图1中SDRAM Controller,用于控制片外的SDRAM芯片,它作为Nios II Gen2 Core的内存。

(4)epcs是图1中EPCS Flash Controller,控制外部Flash,作为Nios II Gen2 Core的程序存储器。

(5)jtag_uart_0是图1中JTAG Controller,与PC主机上的Eclipse SBT的调试端口相连接,用于程序的运行监控与调试。

(6)sysid是图1中System ID,保证软件程序版本与Qsys系统版本保持一致。

(7)timer_0是图1中Interval Timer,可用于Nios II Gen2 Core内核时钟,也可用于测试程序运行时长,根据测算的时长进行相应的测试与调试。

(8)LED是图1中LED Controller,该处PIO核设计为输出功能,输出数据的位宽设置为6 bit,控制FPGA System的6个LED,用于测试和提示系统的运行状态。

(9)Clock是图1中Avalon-MM Clock Crossing Bridge,用于连接在Avalon总线上且分属不同时钟域内IP核间的数据传输与通信。

(10)INIT5与INIT6是图1中Interrupt Controller,该处PIO核设置为中断信号输入功能,INIT5与INIT6位宽设计为1 bit,中断方式设置为边沿(上升沿)触发。INIT5与INIT6分别用来接收由FPGASystem产生的2个中断信号。

(11)aFloa是图1中Floating Point Hardware,用于Nios II Gen2 Core的浮点运算硬件加速。

(12)SoC_TO_FPGA_V2_1_0是图1中地址数据通信IP,该接口用于FPGA System与Qsys System间数据的双向传输 。

(13)hps_0是图1中的HPS System,hps_0作为后期定位解算与图形界面的主CPU。由于要求支持Linux系统,需要设置其部分外设,包括EMAC、QSPI、SD/MMC、USBOTG、SPI、UART、I2C以及部分GPIO等外设。

(14)nios2_gen2_0是图1中的Nios II Gen2 Core,设计为基带信号处理系统的主CPU。

(15)Dual_ram图1所示的Dual-port RAM,提供HPS与Nios II Gen2 Core之间数据的通信;HPS、Nios II Gen2 Core和Dual-port RAM关系框图如图3所示。

跟踪算法

图4给出了Qsys系统各组件位于System Interconnet Fabric的地址分配情况。

跟踪算法

1.2 FPGA System设计

FPGA System主要由SPI控制模块、高速数据接口、时间基准模块、捕获模块、跟踪模块、串口模块和地址译码与数据通道选择模块组成。各部分功能如下:

(1)SPI控制模块用于控制射频板产生1 550 MHz本振载波信号,与天线接收信号进行混频,产生3.098 MHz的中频数据。

(2)高速数据接口用于获取射频前端高速ADC量化产生I/Q两路8 bit数据,每路截取高4 bit数据用于基带处理。

(3)时间基准模块用于产生2个中断信号,包括0.5 ms和20 ms中断。

(4)捕获模块用于卫星捕获,捕获通道为单通道设计。

(5)跟踪模块用于卫星的跟踪,目前跟踪通道数设计为24通道。

(6)串口模块用于调试信息与导航电文的输出。

(7)地址译码与数据通道选择模块用于对地址进行译码,并根据地址信息选择不同的数据通道。

2 载波环路设计

2.1 载波环鉴别器

由于卫星信号中调制有导航电文,这使得接收到的中频信号会在数据比特电平发生跳变时产生180°的相位跳变,因此为了保持环路的稳定,必须要消除180°的相位跳变。由于COSTAS J P发明的鉴相器能够不受数据比特的影响,因此他发明的该鉴相器被称为科斯塔斯鉴相器(或Costas鉴相器),而使用这些鉴相器的锁相环称为科斯塔斯环(或Costas环) 。

本设计锁相环鉴别器采用经典的Costas环鉴相器Qp×Ip,其具有在信噪比较低的情况下有近似优化的鉴相性质、输出结果与幅值的平方成正比、计算量较小以及鉴相斜率受信号幅度的影响较大等特点 。

本文设计锁频环鉴别器采用叉积鉴频器Pcross/(t2-t1),其具有在低信噪比情况下有接近优化的鉴频特性、斜率正比于信号幅度的平方、计算量最小以及受信号幅度影响较大等特点 。

2.2 环路滤波器

跟踪算法

跟踪算法

跟踪算法

3 载波环软件设计

软件程序设计思想是将跟踪环路的处理程序放置于0.5 ms中断中,0.5 ms中断依次对各个通道进行查询,根据当前跟踪通道状态选择执行牵引还是跟踪:若为牵引状态,将调用牵引子程序;若为跟踪状态,将调用跟踪子程序。其运行流程如图6所示。

跟踪算法

牵引子程序包含从FPGA读取I/Q相关幅值,计算功率后分别调用码环、锁频环以及锁相环处理子程序,对码环、锁频环以及锁相环经鉴频与鉴相、环路滤波处理后,更新FPGA内部的码NCO和载波NCO,并根据位同步情况设置当前通道状态:若同步成功,将当前通道设置为跟踪状态;若同步不成功,将对牵引次数进行统计,如果超过统计门限,将通道设为关闭,通道重捕初始化,然后跳出牵引子程序,否则直接跳出牵引子程序。牵引处理子程序如图7所示。

跟踪算法

跟踪子程序包含从FPGA读取I/Q相关幅值,计算功率后分别调用码环、锁相环处理子程序,对码环、锁相环经鉴相、环路滤波处理后,更新FPGA内部的码NCO和载波NCO,并根据帧同步情况设置任务状态:若同步成功,将获取导航电文处理任务压入到任务队列中;判断相位锁定状态,若相位锁定失败,则将通道状态设置为牵引状态,然后跳出跟踪子程序。跟踪处理子程序如图8所示。

跟踪算法

4 测试结果

信号进入牵引后,利用Nios II SBT for Eclipse采集锁频环环路滤波器输出值,并利用MATLAB仿真出锁频环环路滤波器输出值随时间的变化,如图9所示。从图中可以看出,0时刻时,频率误差绝对值约为100 Hz;0~300 ms区间段,环路输出的瞬时频率误差绝对值随时间逐渐变小;在300 ms时刻开始,环路输出的瞬时频率误差绝对值接近于0,然后由锁相环路接管,进一步对相位误差进行处理。

利用Nios II SBT for Eclipse采集锁相环环路滤波器输出值,并利用MATLAB仿真出锁频相环环路滤波器输出值随时间的变化,如图10所示。根据第3节跟踪子程序设计,精密跟踪阶段经过牵引阶段消除频率误差的影响后再用锁相环进行精密跟踪。从图中可以看出,锁相环相位误差范围基本在±15°以内波动。

5 结论

本文根据基带信号处理的要求,采用SoC FPGA作为设计平台,在单个芯片上完成了北斗卫星信号跟踪算法的设计,并对相应的载波环路算法进行了测试和验证。结果表明,该跟踪算法完全满足北斗卫星导航接收机的实时性要求。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分