卫星定位接收机载波跟踪的设计与实现
介绍了卫星定位接收机载波跟踪部分的设计和实现。在对比分析了载波频率跟踪(FLL)和载波相位跟踪(PLL)各自优点的基础上,提出一种易于通过FPGA实现的二阶FLL和三阶PLL相结合的载波跟踪方法。硬件实现采用Altera Cyclone II FPGA中的EP2C70。对该模块的Verilog硬件描述语言编程方法也进行了详细说明。实验测试结果表明该设计可以很好地满足动态性能和跟踪精度的要求。
关键词: 全球卫星导航系统;载波跟踪;FPGA;硬件描述语言
载波跟踪技术是各种卫星导航定位系统中卫星定位接收机基带处理部分的关键技术之一。随着FPGA器件规模的扩大、处理速度的提高、成本的降低,研究设计适合于FPGA实现的载波跟踪算法具有实际意义。
载波跟踪又分为载波频率跟踪(FLL)和载波相位跟踪(PLL)。常见的FLL是叉积自动频率跟踪,常见的PLL是科斯塔斯环。频率跟踪环的动态性能优于相位跟踪环,所以一些典型的军用高动态接收机均采用FLL环进行载波跟踪。但是在相同信噪比条件下,FLL的测量误差要大于PLL。如何兼顾动态跟踪性能和测量精度,是高动态卫星定位接收机载波跟踪设计的难点[1]。
1 载波跟踪方案设计
设计采用FLL辅助PLL的载波跟踪方式,首先采用动态性能好的FLL,消除大部分多普勒频移的影响,然后进入正常(高精度)跟踪模式,即采用跟踪精度高的PLL直接跟踪相位变化,提高跟踪精度。在容许预期动态影响的前提下,尽量采用窄滤波器噪声带宽以维持环路的高精度跟踪状态。当动态增强时,转入FLL跟踪,重复上述过程。即当动态性变化时,环路自动实现FLL与PLL跟踪方式的切换。这样既能保证动态性能,又能提高环路的跟踪精度[2,3]。方案框图如图1所示。
FLL采用CDPAFC鉴频算法,原理框图如图2所示。其输入为解扩后的值:
该鉴频算法消除了数据位的影响,鉴频器的鉴频范围为预检测积分时间的一半,鉴频曲线如图3所示。本系统中取预检测积分时间Tb=1 ms,鉴频范围为250 Hz。
由于FLL的跟踪精度低,当频率牵引到一定范围以内后,采用属于PLL的科斯塔斯环跟踪载波。科斯塔斯环原理框图如图4中虚线框所示。
科斯塔斯环的误差控制量:
由式(4)可见,调制在载波上的数据位的正负对科斯塔斯环的鉴相特性没有影响,环路呈正弦鉴相曲线。由于锁相环存在0°和180°两个相位稳定点,在载波跟踪环解调载波时会有相位模糊度的问题,导致数据位相位出现180°的翻转,该问题可以通过巴克码极性判断来解决。
由于存在速度和加速度引起的多普勒频移和多普勒频移的变化率,为了使稳态误差为零,需要采用二阶锁频环辅助三阶锁相环的方式[4]。
FLL与PLL切换的基本方法是判断跟踪后的频差是否小于预置门限。当E(k)连续N次小于某一门限时,即认为FLL已经锁定,PLL开始工作。具体算法如下:
在系统开始工作时,设置计数器初值为0,PLLWork清0,表示FLL开始工作,PLL未工作。
FLL工作时:
(1)当E(k)小于预置门限时,计数器开始计数;
(2)如果计数器还没有计数到N1时,E(k)大于预置门限,则计数器清0;
(3)如果计数器计数到N1,则表明FLL环已经锁定,可以转入PLL环,PLLWork置1,计数器清0。
PLL工作时:
(1)当PLL开始工作时,若E(k)大于预置门限,则计数器加1;
(2)如果计数器还没有计数到N2,E(k)小于预置门限,则计数器清0;
(3)如果计数器计数到N2,则表明PLL环失锁,此时切换到FLL环,PLLWork清0,计数器清0。
图5为双环自动切换载波跟踪的matlab仿真结果。初始频差50 Hz,频率变化率100 Hz/s。图中的折线为切换指示信号。由图可见切换前FLL工作,环路快速收敛;切换后PLL工作,环路进入高精度跟踪状态。
2 FPGA数字实现
实现选用的是Altera公司Cyclone II系列FPGA芯片EP2C70F672C7。为简化硬件设计,FLL和PLL可以共用同一个环路,见图6。载波跟踪模块主要由乘法器﹑加法器、寄存器等组成。
在设计时需要重点考虑以下两点:
(1)节省芯片资源。乘法是最耗费芯片资源的数学运算。一路信号载波跟踪需要9个18×18的乘法器,则12路共需要108个18×18个乘法器,而EP2C70中一共才有150个18×18的乘法器;另外PN码的捕获跟踪和下变频还需要乘法器,显然乘法器的资源不够用。因此在设计中采用了分时复用乘法器技术,节省芯片资源。
设计思想是:用一个比载波跟踪模块输入数据时钟高得多的时钟(如32倍频)去控制模块中的乘法器做乘法运算,这样可以在一个输入数据时钟周期中很短的一段时间(1/32)内完成1次乘法运算, 9个乘法运算可以分时进行,共用同一个乘法器,既节省了资源又不会造成大的延时。
(2)截位。由于在FPGA中采用定点数进行运算,而位数的多少直接影响到资源使用、运算速度以及运算精度,因此需要对数据进行截位处理。截位应尽可能少地保留符号位多保留有效数据位,但又要注意防止数据溢出。在本系统中,各个节点的数据位宽是通过SPW仿真确定的,既考虑了结果的正确性,又考虑了系统的性能。
QuartusII中常用的输入方式有文本输入方式和图形输入方式。对于图6这种具有清晰数据流的模块结构,用硬件描述语言文本输入方式实现比较好。Verilog HDL程序的写法可采用case语句。具体方法是:把载波跟踪模块工作时钟倍频为高速时钟,在case语句中判断高速时钟驱动的计数器的状态值,按图6中数据流一步一步地做数学运算。例如:在计数器为5’b00001状态时给乘法器的输入端赋值,在下一时刻5’b00010时取出结果,得到乘积,作为下一级运算的输入,同时给乘法器输入端赋新的乘数。下一时刻5’b00011取新的结果,做下级运算的输入。上述写法数据流程清晰,易读易懂,可以方便地实现资源分时复用。
3 硬件测试结果
用QUARTUS软件对整个定位接收机基带部分(包含载波跟踪)程序进行编译后下载到目标器件EP2C70F672C7,通过设置BD-2信号源来模拟接收机高速运动情况下的接收信号,用定位接收机对该信号进行载波跟踪测试,实测的结果见图7、图8。图7是在v=182 m/s、a=0 m/s^2、C/N=-133 dBm下,载波跟踪稳定后的I支路的数据。图8是滤波器输出的频率误差,稳定后的抖动方差小于0.7 Hz。符合设计要求。硬件测试结果表明载波跟踪部分工作正常,载波跟踪的FPGA实现是成功的。
本文介绍了一种易于通过FPGA实现的二阶FLL和三阶PLL相结合的载波跟踪设计方案。该方案的硬件实现采用Altera公司CycloneII系列FPGA中的EP2C70F672C7。文章对该模块的硬件描述语言(Verilog HDL)编程方法做了详细介绍,重点对节省芯片资源设计方法和截位处理做了说明,文章最后给出了实验测试结果。该设计目前已应用于北斗、GPS定位系统接收机中,工作稳定可靠。
0