零基础入门导航系列一之书籍学习《A Software-Defined GPS and Galileo Receiver: A Single-Frequency Approach》书籍学习(2)
零基础入门导航系列一之书籍学习《A Software-Defined GPS and Galileo Receiver: A Single-Frequency Approach》书籍学习(2)
文章目录
零基础入门导航系列一之书籍学习《A Software-Defined GPS and Galileo Receiver: A Single-Frequency Approach》书籍学习(2)序言 (Preface)第一章 信号与系统 (Signals and Systems)第二章 GPS信号 (GPS Signals)码跟踪原理
MATLAB代码结构代码整体流程setting文件结构捕获函数跟踪函数`postNavigation`函数
GNSS信号仿真信号参数设置Simulink设置
**参考文献**
本博客仅摘编、翻译和学习部分重点内容,不是原文的1:1翻译。
带括号的小号字体部分为作者的个人理解。
内容顺序不完全遵照原书,持续更新。
序言 (Preface)
软件定义接收机(SDR)技术已发展十余年。Dennis Akos(Stanford SCPNT)在1997年实现了第一个完整的GPS软件接收机。此后,众多研究团队持续贡献,SDR逐渐成为接收机行业的技术热点。
SDR的核心目标是构建灵活、开放式架构的接收机,使各模块参数可动态配置,便于算法开发和新技术集成。
SDR架构采用宽带A/D转换器,捕获所有信道信号,通过通用处理器上的软件完成下变频和解调。这样,信号采集点靠近天线,数据通过数字信号处理获得定位结果。
SDR是算法开发和设备集成的理想平台。
本书选择MATLAB作为开发语言,因其在技术院校中广泛应用,易学且便于图形展示。
本书主要内容包括:
GNSS软件无线电总体架构介绍基于MATLAB和示例数据集的完整GPS软件接收机实现可动态调整参数并实时观察效果可选USB GNSS前端硬件,实现与MATLAB联动采集(具体订购和使用说明见配套DVD)
本书聚焦单频(L1)C/A码GPS接收机实现,原因包括:
架构简洁易懂通过轨道、时钟和电离层校正,以及SBAS(如EGNOS/WAAS),L1精度可媲美双频接收机未来宽带GNSS信号和欧盟Galileo系统将在L1波段提供更多性能提升Galileo采用BOC调制,读者可提前了解新信号类型
书中还讲解了前端模块设计,如何将天线信号分离成各个卫星信道进行独立跟踪。
第一章 信号与系统 (Signals and Systems)
本章介绍线性时不变系统等基础理论,为后续GNSS信号处理做支撑。内容基础,略去不赘述。
第二章 GPS信号 (GPS Signals)
GPS信号在UHF频段(500 MHz – 3 GHz)上的L1和L2频率发射,均由基准频率
f
0
=
10.23
MHz
f_0 = 10.23; ext{MHz}
f0=10.23MHz 派生。
*用C/A码和导航数据对L1载波进行BPSK调制,图中为PRN 1的Gold码前25个码片。* *用C/A码和导航数据对L1载波进行BPSK调制,图中为PRN 1的Gold码前25个码片。*
码跟踪原理
GPS接收关键问题之一是码跟踪,常用**早-晚锁相环(DLL)**实现。相关器结构通过设置不同时间偏移,分别获取早信号和晚信号,组合误差信号驱动环路调整,消除跟踪误差。(详见第7章)
MATLAB代码结构
代码整体流程
数据读取与采集:首先读取数据文件的短段(数毫秒),传递给采集模块,检测GPS信号、估算频率及码相位,结果存储于
结构。通道初始化:
acqResults
函数根据采集结果初始化信号通道,禁用未分配卫星的通道,清理历史数据,为新运行做准备。信号跟踪:按块读取信号样本,传递给跟踪模块,完成信号跟踪、位边界检测、导航数据解码,星历信息存于
preRun
结构,跟踪结果存于
eph
结构,可指定跟踪时长。导航解算:
trackResults
函数处理跟踪结果,识别子帧、定位传输时间、估算伪距,并计算接收机的ECEF坐标(地心地固坐标系),最终可转换为UTM或WGS-84坐标,并绘制结果。
postNavigation
setting文件结构
所有模块参数统一存储在settings结构中,实现集中管理和灵活调用。例如:
GPS中频:
采样频率:
IFfrequency
处理时长:
samplingFrequency
(如设为37,000ms,覆盖所有6s子帧)跟踪块大小:
msToProcess
通道数量:
processBlockSize
numberOfChannels
通过
函数初始化或更新设置参数,确保依赖关系正确。
initSettings
捕获函数
采用并行码相位搜索捕获算法,快速检测所有可用卫星信号参数。采集函数以0.5kHz频率步进,在多普勒空间内依次搜索,每步执行并行码搜索,保存相关结果,再查找最大相关值和次高峰值,计算峰值比率作为信号检测依据。
若峰值比足够高,通过后相关FFT方法进一步精细估算载波频率,为PLL环路跟踪做准备。
可指定搜索卫星PRN范围,结果存于
结构。
acqResults
跟踪函数
跟踪函数对每个通道分配GPS信号,处理信号块,返回
(跟踪结果)和更新的通道结构。包含当前载波频率、码相位、PRN号、环路滤波器状态等信息,实现信号块连续处理。
trackResults
包含每毫秒的信号属性和六个校正器、环路校正器输出,供后续导航解算及结果分析。可执行
trackResults
命令绘制指定通道结果。
plotTracking
postNavigation
函数
postNavigation
该函数识别比特转换及起始位置,获取并解码星历信息(主用子帧1~3,可扩展至4、5),随后调用伪距测量和位置计算功能,输出伪距和接收机坐标。
GNSS信号仿真
信号参数设置
开发GPS接收机算法时,使用真实采样数据不便于特性控制,宜采用模拟信号数据。
理想的L1 GPS信号模拟器需包含:
中频
采样率
Intermediate Frequency
可为每颗卫星定义PRN、多普勒频移、码相位P(Y)码和导航数据可简化为-1/1数字信号,速率分别为10.23MHz和50Hz
Sampling Frequency
若需真实导航数据序列,模拟器应支持自定义输入。
Simulink设置
采用MATLAB Simulink开发GPS信号模拟器,界面直观,功能丰富,并可与M文件无缝集成。
Simulink实现为两级设计:
上层:初始化各卫星信号参数,配置保存数据文件下层:实现各卫星信号生成,包括C/A码、导航数据、P(Y)码、噪声等成分
仿真器可配置多个卫星(如图B.4),每颗卫星可设定不同PRN、码相位、多普勒频移等参数,便于算法测试与验证。
参考文献
[1] A Software-Defined GPS and Galileo Receiver[M]. Boston, MA:
Birkhäuser, 2007.