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

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

假设给定以下已知参数:

  • 伪码循环周期: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)cf_{\text{code}}(t) = R_c \cdot \left 1 - \\frac{\\dot{\\rho}(t)}{c} \\rightfcode(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−ρ˙(ξ)cdξ\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ρ˙(ξ)

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)

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


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


相关推荐
小雨下雨的雨3 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
xieliyu.6 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
一条小锦吕*6 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化
数智工坊7 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫7 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
如竟没有火炬8 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
8Qi89 小时前
LeetCode 1143 & 718:最长公共子序列 / 最长重复子数组
算法·leetcode·职场和发展·动态规划
绿算技术9 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
MartinYeung510 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习