算法思路如下。在不同频率、不同C/A码相位进行二维搜索寻找最大相关峰。首先使本地载波发生器固定在期望的中频频点上,然后使C/A码发生器从码相位为1开始运行相关器1ms时间,保存并清空I、Q两路积分值,求I、Q两路积分值的平方和作为相关峰值。再令C/A码发生器从码相位2开始运行lms时间取得相关峰值,直到取得相位从1023开始运行的1ms时间相关峰值。使本地载波发生器频率增加一个频率步长,比如500 Hz,重复上述过程,直到将所有可能的频率范围和所有的码相位都搜索完为止。在搜索得到的二维平面上寻找最大相关峰的值与对应的频率和码相位值。如果最大相关值大于相关平面平均相关值16倍,则可以认为接收信号内包含该卫星信号,已经检测出其信号相关峰,记录下对应的频率和码相位供后续程序进行跟踪解码。最差情况下捕获时间可以由二维平面的相关峰值点数确定。静态定位的多普勒频偏在-5 kHz~+5 kHz,以500 Hz为频率间隔则需要在21个频点搜索,每个频点都需要1 023个码相位的搜索,则最差捕获时间约为21 s,即
2.3跟踪模块
跟踪模块的功能是:实现本地C/A码相位和载波的频率、相位与输入信号的C/A码相位和载波的嘲率、相位同步,输出I路中路积分信号供解码基带报文信号。算法思路如下。将码跟踪与载波跟踪视为独翻的两个过程。码跟踪使用超前延迟环反馈控制C/A码发生器调整码的相位。其中超前路(E)、中路(P)和延迟路(L)各相差半个码片,分别代表信号提前、准时和落后达到。经综合后,这些信号分别代表输入信号和一个本地码之间的相关性。具有最高相关值的信号被选中并保留下来,即当超前路的能量和延迟路的能量相同时可确定中路已与输入信号的码相位对齐。
载波跟踪是先使用FLL(锁频环)跟踪频率,待跟踪一段时间使频率抖动变小后,将锁定的频率送给PLL(锁相环)作为初始值,使用PLL对信号的相速度进行跟踪,经过一段时间跟踪稳定后,累积器的结果就可以用于解码基带电文数据。载波跟踪的I、Q路积分值使用中路的I、Q积分值。先将捕获得到的粗略频率作为FLL的初始值,使用I、Q积分值求得频率差来调整跟踪频率,待跟踪一段固定长时间可以确定频率已经很接近真实频率后,将锁定频率送给PLL作为初始值,使用PLL对信号的频率和相位进行追踪,待跟踪一段时间稳定后本地载波与输入信号的频率和相位将锁定,累积器的结果可以用于解码基带电文数据。综合码跟踪和载波跟踪的原理图见图3。

2.4导航电文解调、定位模块
为了解调出导航电文,需要进一步消除载波的相位误差。导航电文解调模块用以下算法消除误差,并由I′(k)给出当前导航电文的数据位。

式中:I(k)和Q(k)为I、Q分路的即时分支的第k次累加值;θk为载波相位误差估计值,θk=θk1-1+△k-1,且θ0=0,其中△θk为载波相位误差的估计残差,且△θk=sign(I′(K))Q′(k)。
3设计验证和仿真结果
为了验证设计模型,本文利用GPS信号模拟器产生的GPS中频信号作为输人信号,并在几个典型点上观察相应的模块输出波形。
信号模拟器可由MATLAB实现,并可对信号的信噪比、多普勒频率、码相位等参数进行调整。


本文使用的中频信号中心频率为16.8MHz。仿真结果见图4~图6。