[学习] 卫星导航的码相位与载波相位计算

卫星导航的码相位与载波相位计算

假设给定以下已知参数:

  • 伪码循环周期:TcT_cTc(秒),或码长LLL(码片)与码率RcR_cRc(码片/秒),满足Tc=L/RcT_c = L/R_cTc=L/Rc
  • 伪码码率:RcR_cRc(码片/秒)
  • 载波频率:fcf_cfc(Hz)
  • 当前时刻ttt的伪距测量值:ρ(t)\rho(t)ρ(t)(米)
  • 光速:c=2.99792458×108c = 2.99792458 \times 10^8c=2.99792458×108 m/s

1. 码相位计算

1.1 基于传播延迟的直接计算

传播延迟:τ(t)=ρ(t)c\tau(t) = \frac{\rho(t)}{c}τ(t)=cρ(t)

码相位(以时间为单位):
ϕcode(t)=(τ(t)mod  Tc)(秒)\phi_{\text{code}}(t) = \left( \tau(t) \mod T_c \right) \quad \text{(秒)}ϕcode(t)=(τ(t)modTc)(秒)

码相位(以码片为单位):
ϕcode,chips(t)=(τ(t)⋅Rc)mod  L(码片)\phi_{\text{code,chips}}(t) = \left( \tau(t) \cdot R_c \right) \mod L \quad \text{(码片)}ϕcode,chips(t)=(τ(t)⋅Rc)modL(码片)

1.2 基于卫星发射时间的计算

卫星发射时间:ttx=t−τ(t)t_{\text{tx}} = t - \tau(t)ttx=t−τ(t)

码相位(更精确形式,考虑整周模糊度):
ϕcode(t)=(ttx⋅Rc)mod  L(码片)\phi_{\text{code}}(t) = \left( t_{\text{tx}} \cdot R_c \right) \mod L \quad \text{(码片)}ϕcode(t)=(ttx⋅Rc)modL(码片)

或等价地:
ϕcode(t)=(ttxTc−⌊ttxTc⌋)⋅L(码片)\phi_{\text{code}}(t) = \left( \frac{t_{\text{tx}}}{T_c} - \left\lfloor \frac{t_{\text{tx}}}{T_c} \right\rfloor \right) \cdot L \quad \text{(码片)}ϕcode(t)=(Tcttx−⌊Tcttx⌋)⋅L(码片)

1.3 连续时间码相位模型

设t0t_0t0为参考时刻,对应的码相位为ϕcode(t0)\phi_{\text{code}}(t_0)ϕcode(t0),则:
ϕcode(t)=[ϕcode(t0)+∫t0tfcode(ξ)dξ]mod  L\phi_{\text{code}}(t) = \left[ \phi_{\text{code}}(t_0) + \int_{t_0}^{t} f_{\text{code}}(\xi) d\xi \right] \mod Lϕcode(t)=[ϕcode(t0)+∫t0tfcode(ξ)dξ]modL

其中fcode(t)f_{\text{code}}(t)fcode(t)为受多普勒影响的码率:fcode(t)=Rc⋅[1−ρ˙(t)c]f_{\text{code}}(t) = R_c \cdot \left[ 1 - \frac{\dot{\rho}(t)}{c} \right]fcode(t)=Rc⋅[1−cρ˙(t)]

2. 载波相位计算

2.1 基本载波相位公式

载波相位(以周为单位,N为整周模糊度):
ϕcarrier(t)=N+fc⋅ρ(t)c(周)\phi_{\text{carrier}}(t) = N + \frac{f_c \cdot \rho(t)}{c} \quad \text{(周)}ϕcarrier(t)=N+cfc⋅ρ(t)(周)

载波相位(以弧度为单位):
ϕcarrier,rad(t)=2πN+2πfc⋅ρ(t)c(弧度)\phi_{\text{carrier,rad}}(t) = 2\pi N + \frac{2\pi f_c \cdot \rho(t)}{c} \quad \text{(弧度)}ϕcarrier,rad(t)=2πN+c2πfc⋅ρ(t)(弧度)

2.2 基于传播延迟的载波相位

载波相位(小数部分):
ϕcarrier,frac(t)=(fc⋅τ(t))mod  1(周)\phi_{\text{carrier,frac}}(t) = \left( f_c \cdot \tau(t) \right) \mod 1 \quad \text{(周)}ϕcarrier,frac(t)=(fc⋅τ(t))mod1(周)

或:
ϕcarrier,frac(t)=(fc⋅ρ(t)c)mod  1(周)\phi_{\text{carrier,frac}}(t) = \left( \frac{f_c \cdot \rho(t)}{c} \right) \mod 1 \quad \text{(周)}ϕcarrier,frac(t)=(cfc⋅ρ(t))mod1(周)

2.3 连续时间载波相位模型

载波相位变化率(考虑多普勒):
ϕ˙carrier(t)=fc⋅[1−ρ˙(t)c]\dot{\phi}_{\text{carrier}}(t) = f_c \cdot \left[ 1 - \frac{\dot{\rho}(t)}{c} \right]ϕ˙carrier(t)=fc⋅[1−cρ˙(t)]

积分形式:
ϕcarrier(t)=ϕcarrier(t0)+∫t0tfc⋅[1−ρ˙(ξ)c]dξ\phi_{\text{carrier}}(t) = \phi_{\text{carrier}}(t_0) + \int_{t_0}^{t} f_c \cdot \left[ 1 - \frac{\dot{\rho}(\xi)}{c} \right] d\xiϕcarrier(t)=ϕcarrier(t0)+∫t0tfc⋅[1−cρ˙(ξ)]dξ

3. 考虑卫星钟差和相对论效应的修正公式

3.1 卫星发射时间的精确计算

ttx=t−ρ(t)c−δtsat(ttx)+δtrelt_{\text{tx}} = t - \frac{\rho(t)}{c} - \delta t_{\text{sat}}(t_{\text{tx}}) + \delta t_{\text{rel}}ttx=t−cρ(t)−δtsat(ttx)+δtrel

其中:

  • δtsat\delta t_{\text{sat}}δtsat:卫星钟差
  • δtrel\delta t_{\text{rel}}δtrel:相对论效应修正

3.2 修正后的码相位

ϕcode,corr(t)=[ttx⋅Rc⋅(1+δfsat/fnom)]mod  L\phi_{\text{code,corr}}(t) = \left[ t_{\text{tx}} \cdot R_c \cdot (1 + \delta f_{\text{sat}}/f_{\text{nom}}) \right] \mod Lϕcode,corr(t)=[ttx⋅Rc⋅(1+δfsat/fnom)]modL

3.3 修正后的载波相位

ϕcarrier,corr(t)=N+fcc[ρ(t)−c⋅δtsat(ttx)+c⋅δtrel]\phi_{\text{carrier,corr}}(t) = N + \frac{f_c}{c} \left[ \rho(t) - c \cdot \delta t_{\text{sat}}(t_{\text{tx}}) + c \cdot \delta t_{\text{rel}} \right]ϕcarrier,corr(t)=N+cfc[ρ(t)−c⋅δtsat(ttx)+c⋅δtrel]

4. 接收机中的实现公式

4.1 数字NCO控制字计算

对于码NCO:
Mcode=⌊fcode⋅2Ncodefclk⌋M_{\text{code}} = \left\lfloor \frac{f_{\text{code}} \cdot 2^{N_{\text{code}}}}{f_{\text{clk}}} \right\rfloorMcode=⌊fclkfcode⋅2Ncode⌋

其中NcodeN_{\text{code}}Ncode为码NCO相位累加器位宽,fclkf_{\text{clk}}fclk为系统时钟频率。

对于载波NCO:
Mcarrier=⌊fcarrier⋅2Ncarrierfclk⌋M_{\text{carrier}} = \left\lfloor \frac{f_{\text{carrier}} \cdot 2^{N_{\text{carrier}}}}{f_{\text{clk}}} \right\rfloorMcarrier=⌊fclkfcarrier⋅2Ncarrier⌋

4.2 初始相位设置

码NCO初始相位:
ϕcode,NCO=⌊ϕcode(t0)⋅2NcodeL⌋\phi_{\text{code,NCO}} = \left\lfloor \phi_{\text{code}}(t_0) \cdot \frac{2^{N_{\text{code}}}}{L} \right\rfloorϕcode,NCO=⌊ϕcode(t0)⋅L2Ncode⌋

载波NCO初始相位:
ϕcarrier,NCO=⌊ϕcarrier,frac(t0)⋅2Ncarrier⌋\phi_{\text{carrier,NCO}} = \left\lfloor \phi_{\text{carrier,frac}}(t_0) \cdot 2^{N_{\text{carrier}}} \right\rfloorϕcarrier,NCO=⌊ϕcarrier,frac(t0)⋅2Ncarrier⌋

5. 重要关系式总结

  1. 码相位-载波相位关系
    ϕcarrier(t)fc=ϕcode(t)Rc+常数\frac{\phi_{\text{carrier}}(t)}{f_c} = \frac{\phi_{\text{code}}(t)}{R_c} + \text{常数}fcϕcarrier(t)=Rcϕcode(t)+常数

  2. 多普勒频移
    fd=−fc⋅ρ˙(t)c=−Rc⋅ρ˙(t)c⋅fcRcf_d = -f_c \cdot \frac{\dot{\rho}(t)}{c} = -R_c \cdot \frac{\dot{\rho}(t)}{c} \cdot \frac{f_c}{R_c}fd=−fc⋅cρ˙(t)=−Rc⋅cρ˙(t)⋅Rcfc

  3. 伪距变化率与相位关系
    ρ˙(t)=−cfc⋅ϕ˙carrier(t)\dot{\rho}(t) = -\frac{c}{f_c} \cdot \dot{\phi}_{\text{carrier}}(t)ρ˙(t)=−fcc⋅ϕ˙carrier(t)

这些公式构成了导航接收机中码环和载波环跟踪的基础数学模型,实际实现中还需考虑电离层、对流层延迟、接收机噪声等误差源。


研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)


相关推荐
じ☆冷颜〃1 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
想进部的张同学1 小时前
hilinux-3599---设备学习---以及部署yolo
学习·yolo·海思
数据大魔方1 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE31 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
楚来客1 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
HyperAI超神经2 小时前
【vLLM 学习】Rlhf
人工智能·深度学习·学习·机器学习·vllm
Echo_NGC22372 小时前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
会员果汁2 小时前
leetcode-动态规划-买卖股票
算法·leetcode·动态规划
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——二进制求和
算法·leetcode·哈希算法·散列表·结构与算法