\qquad HD-GR导航软件的初始化在主程序中进行,主要完成以下处理:
- 设置射频前端;
- 初始化基带模块;
- 初始化与卫星星历、通道跟踪、以及通道分配有关的参数和结构(参见第4.4节“信号捕获和跟踪”和第4.5节“星历/历书解码”)
4.3.1 设置射频前端
\qquad 在HD-GP接收机的前端模块(HD-2769-2RF-2)中,两个射频芯片(MAX2769-1, MAX2769-2)的参考时钟是同源的,信号来自同一个16.368 MHz TCXO,都希望输出中心频率为4.092 MHz的IF。不过,参考设计AGRS_GP_1对它们的应用方式有所不同,下面予以简介。
1、设置MAX2769-1
\qquad MAX2769-1在芯片预置状态下使用,目标是把GPS L1射频信号下变频为基带信号。具体做法是:在AGRS_GP_1项目的FPGA逻辑设计中,将MAX2769-1的PGM引脚连接到逻辑高,即设置为预置状态;将它的SPI接口的三个引脚(SCLK, SDATA, CS)都连接到逻辑高,以选择芯片预置状态7。具体Verilog代码实现参见顶层模块AGRS_GP_1.v。有关MAX2769芯片预置状态的定义参见数据表“MAX2769: Universal GPS Receiver”中的表3。
2、设置MAX2769-2
\qquad MAX2769-2的目标是将1561.098MHz的BDS B1I射频信号下变频为基带信号,芯片预置状态不支持这个频率,因此需要应用SPI接口对芯片进行编程。为此,AGRS_GP_1项目加入了以下支持:
- 在FPGA逻辑设计中,添加了外围组件spi_max2769_2,以便导航软件通过它来编程MAX2769-2。
- 在FPGA逻辑设计中,将MAX2769-2的PGM引脚连接到逻辑低,即设置为使用SPI接口来配置MAX2769-2。具体Verilog代码实现参见顶层模块AGRS_GP_1.v。
- 在导航软件中,使用组件spi_max2769_2支持的接口函数,将预先计算好的BDS B1I射频信号的配置参数设置到MAX2769-2。具体代码实现参见源文件agrs_gp_1_ucos.c中的main(…)函数,以及源文件spi_max2769.h和spi_max2769.c。下面对有关配置参数的计算予以说明。
\qquad 为了让芯片MAX2769支持处理BDS B1I射频信号,需要通过设置MAX2769的频率合成器的整数分频比来调整MAX2769的LO。已知BDS B1I 信号的载波频率为1561.098MHz,HD-2769-2RF-2射频前端的TCXO频率为 f T C X O = 16.368 f_{TCXO} =16.368 fTCXO=16.368 MHz,IF输出的中心频率为4.092 MHz。选择频率分频比为 R D I V = 16 RDIV = 16 RDIV=16,则可按以下步骤计算整数主分频比:
f
L
O
=
1561.098
−
4.092
=
1557.006
\qquad f_{LO} = 1561.098 - 4.092= 1557.006
fLO=1561.098−4.092=1557.006
f
C
O
M
P
=
f
T
C
X
O
/
R
D
I
V
=
16.368
/
16
=
1.023
\qquad f_{COMP} = f_{TCXO} /RDIV = 16.368/16 = 1.023
fCOMP=fTCXO/RDIV=16.368/16=1.023
N
D
I
V
=
f
L
O
/
f
C
O
M
P
=
1557.006
/
1.023
=
1522
\qquad NDIV = f_{LO}/f_{COMP} = 1557.006/1.023 = 1522
NDIV=fLO/fCOMP=1557.006/1.023=1522
由 R D I V = 16 RDIV = 16 RDIV=16和 N D I V = 1522 NDIV = 1522 NDIV=1522可知,应将整数分频比,即芯片寄存器DIV的新值,配置为BE4080h。
\qquad 有关MAX2769芯片配置参数的完整信息参见数据表“MAX2769: Universal GPS Receiver”。
4.3.2 初始化基带模块
\qquad 为了让GNSS基带模块能够正确处理数字中频信号和产生累积中断,需要导航软件将一些工作参数写入基带模块寄存器,包括:累积中断寄存器(PROG_ACCUM_INT)、TIC信号寄存器(PROG_TIC_DIV)、以及PPS分频信号寄存器(PROG_PPS_DIV)。注意,在写入这些寄存器前后,应该分别设置RESET寄存器一次,以复位包括时基功能在内的整个基带模块。下面列出这些参数的计算公式以及将用于写入寄存器的计算结果,有关代码参见源文件agrs_gp_1_ucos.c中的main(…)函数。
1、基带模块参数
\qquad 计算导航软件工作参数要用到以下基带模块参数值:
- IF信号中心频率:4.092 MHz
- IF信号采样频率:16.368 MHz
- 基带模块时钟频率:16.368×6 MHz
它们在头文件constants.h中进行了定义。
2、累积中断周期
\qquad 累积中断周期ACCUM period = (p + 1) /clock frequency,其中p为写入基带模块寄存器PROG_ACCUM_INT的值。对于16.368×6 Mhz时钟频率的基带模块:
p = ( 16.368 × 6 × 1 0 6 × A C C U M _ p e r i o d ) – 1 \qquad p = (16.368×6×10^6×ACCUM\_period) – 1 p=(16.368×6×106×ACCUM_period)–1
当中断周期ACCUM_period为800μs时,p = 78565。
3、TIC信号周期
\qquad TIC信号周期TIC period = (p + 1) /clock frequency,其中p为写入基带模块寄存器PROG_TIC_DIV的值。对于16.368×6 Mhz时钟的基带模块:
p = ( 16.368 × 6 × 1 0 6 × T I C _ p e r i o d ) – 1 \qquad p = (16.368×6×10^6×TIC\_period) – 1 p=(16.368×6×106×TIC_period)–1
当TIC信号周期TIC _period为100ms时,p = 9820799。
4、PPS分频信号周期
\qquad PPS分频信号周期PPS_DIV period = (p + 1) /clock frequency,其中p为写入基带模块寄存器PROG_PPS_DIV的值。对于16.368×6 Mhz时钟的基带模块:
p = ( 16.368 × 6 × 1 0 6 × P P S _ D I V _ p e r i o d ) – 1 \qquad p = (16.368×6×10^6×PPS\_DIV\_period) – 1 p=(16.368×6×106×PPS_DIV_period)–1
当PPS分频信号周期PPS_DIV_period为1ms时,p = 98207。