GPS信号的捕获(PMF+FFT方法)
GPS信号的捕获(PMF+FFT方法)
目标
- 获取GPS信号的频率偏移和码相位
程序流程
读取/生成GPS信号
GPS的导航信号模型为 x(nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)x(nT_s) = A*D(nT_s)C(nT_s)cos(2\pi(f_{IF} + f_d)nT_s+\theta) x(nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)
其中,D(nTs)D(nT_s)D(nTs) 为导航电文,此程序中只读取了导航电文中的一个bit(1ms);C(nTs)C(nT_s)C(nTs)为C/A码;fIFf_{IF}fIF为中频;fdf_dfd为多普勒频移;TsT_sTs为抽样间隔,Fs=1/TsF_s=1/T_sFs=1/Ts为抽样频率
混频,得到I路信号和Q路信号
基础知识,三角函数和差化积、积化和差
sin(α)∗cos(β)=1/2∗(sin(α+β)+sin(α−β))sin(\alpha)*cos(\beta) = 1/2 * (sin(\alpha + \beta) + sin(\alpha - \beta)) sin(α)∗cos(β)=1/2∗(sin(α+β)+sin(α−β))
cos(α)∗cos(β)=1/2∗(cos(α+β)+cos(α−β))cos(\alpha)*cos(\beta) = 1/2 * (cos(\alpha + \beta) + cos(\alpha - \beta)) cos(α)∗cos(β)=1/2∗(cos(α+β)+cos(α−β))
sin(α)∗sin(β)=1/2∗(cos(α+β)−cos(α−β))sin(\alpha)*sin(\beta) = 1/2 * (cos(\alpha + \beta) - cos(\alpha - \beta)) sin(α)∗sin(β)=1/2∗(cos(α+β)−cos(α−β))
设本地载波信号为 sin(2πfIF∗nTs)sin(2 \pi f_{IF} * nT_s)sin(2πfIF∗nTs) 和 cos(2πfIF∗nTs)cos(2 \pi f_{IF} * nT_s)cos(2πfIF∗nTs) ,导航信号与本地载波混频得到I路和Q路混频信号
I路
SI=x(nTs)∗cos(2πfIF∗nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)∗cos(2πfIF∗nTs)=A∗D(nTs)C(nTs)∗1/2∗(cos(2π(2fIF+fd)nTs+θ)+cos(2πfd+θ))\begin{align} S_I & = x(nT_s)*cos(2 \pi f_{IF} * nT_s) \\ & = A*D(nT_s)C(nT_s)cos(2\pi(f_{IF} + f_d)nT_s+\theta) * cos(2 \pi f_{IF} * nT_s) \\ & = A*D(nT_s)C(nT_s) * 1/2 * (cos(2\pi(2f_{IF} + f_d)nT_s+\theta) + cos(2\pi f_d + \theta)) \\ \end{align} SI=x(nTs)∗cos(2πfIF∗nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)∗cos(2πfIF∗nTs)=A∗D(nTs)C(nTs)∗1/2∗(cos(2π(2fIF+fd)nTs+θ)+cos(2πfd+θ))Q路
SQ=x(nTs)∗sin(2πfIF∗nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)∗sin(2πfIF∗nTs)=A∗D(nTs)C(nTs)∗1/2∗(sin(2π(2fIF+fd)nTs+θ)−sin(2πfdnTs+θ))\begin{align} S_Q & = x(nT_s)*sin(2 \pi f_{IF} * nT_s) \\ & = A*D(nT_s)C(nT_s)cos(2\pi(f_{IF} + f_d)nT_s+\theta) * sin(2 \pi f_{IF} * nT_s) \\ & = A*D(nT_s)C(nT_s) * 1/2 * (sin(2\pi(2f_{IF} + f_d)nT_s + \theta) - sin(2\pi f_dnT_s + \theta)) \\ \end{align} SQ=x(nTs)∗sin(2πfIF∗nTs)=A∗D(nTs)C(nTs)cos(2π(fIF+fd)nTs+θ)∗sin(2πfIF∗nTs)=A∗D(nTs)C(nTs)∗1/2∗(sin(2π(2fIF+fd)nTs+θ)−sin(2πfdnTs+θ))低通滤波
设 K=A∗D(nTs)C(nTs)∗1/2K = A*D(nT_s)C(nT_s) * 1/2 K=A∗D(nTs)C(nTs)∗1/2
则I信号 SI=K∗(cos(2π(2fIF+fd)nTs+θ)+cos(2πfd+θ))S_I = K * (cos(2\pi(2f_{IF} + f_d)nT_s+\theta) + cos(2\pi f_d + \theta)) SI=K∗(cos(2π(2fIF+fd)nTs+θ)+cos(2πfd+θ))
Q路信号 SQ=K∗(sin(2π(2fIF+fd)nTs+θ)−sin(2πfdnTs+θ))S_Q = K*(sin(2\pi(2f_{IF} + f_d)nT_s + \theta) - sin(2\pi f_dnT_s + \theta)) SQ=K∗(sin(2π(2fIF+fd)nTs+θ)−sin(2πfdnTs+θ))
可以看出I/Q两路信号都有两个主要的频率分量, 2π(2fIF+fd)2\pi(2f_{IF} + f_d)2π(2fIF+fd) 和 2πfd2\pi f_d2πfd ,分别对应GPS导航信号与本地载波的和频与差频。如果这时滤掉
和频
保留差频
,然后找到差频的频率,就是多普勒频移。降采样,减少不必要的计算
在经过低通滤波之后,信号中保留着
多普勒频移
、伪码
和数据
,其中速率最高的伪码的码率为1023kbps,根据奈奎斯特采样定理,此时数据的采样率只要高于1023*2就可以保证数据的有效性。为了尽可能的降低运算量,可以进行降采样,把采样率从原来的26MSPS降低到2046SPS。伪代码如下:
/** fs -- 原始采样率* fs_re -- 降采样后的采样率* N -- 原始数据的采样点数* cnt -- 重采样后数据的下标 **/ temp = -1;for(int i = 0; i < N; i++) {cnt = 向下取整(i * fs_re / fs);if(temp == cnt - 1){data_re(cnt) = data(i);temp = cnt;} }
相干积分
经过低通滤波和降采样后的数据里面主要有两种成分,伪码和多普勒频移。因为伪码的频率再在频谱上均匀分布,只有去掉伪码才能将多普勒频移找出来。伪码调制再载波信号中,是一种双极性不归零的信号(GPS导航电文也是一种双极性不归零的信号)。要去掉伪码,就需要利用双极性不归零信号的性质。
在BPSK调制中,数字信号是双极性不归零的信号。比如
1 0 1 0 1 1 0 0 需要转化为
1 -1 1 -1 1 1 -1 -1 再进行调制。
在捕获GPS信号时,需要本地生成一个标准的伪码信号,也需要是双极性不归零的信号。假设伪码就是上文中的10101100,在伪码对齐的情况下,两个相同的伪码相乘,$ 1*1=1 $ 、 $ -1 * -1 = 1 $。那么
1 -1 1 -1 1 1 -1 -1 和
1 -1 1 -1 1 1 -1 -1 对应位相乘的结果就是
1 1 1 1 1 1 1 1 伪码全部变成1就代表全部变成了直流分量,然后在做FFT或者分组求和后再做FFT就可以得到多普勒频移。再实际的操作中,需要将本伪码不断的循环右移,再相乘后做FFT,然后记录FFT的结果。将记录的结果绘制为立体图如线图所示
其中尖峰所在的x坐标和y坐标对应的坐标就是码相位和多普勒频移,图中使用256点FFT。找到最高点,计算频率偏移和相位偏移
遍历记录的FFT结果,找到最高点,计算对应的频率和码相位,就是多普勒频移和码相位。
说明
- 此文描述都是我个人理解,如有错误请大佬指正
- Matlab源码和使用的数据将会上传到Gitee和Github。
Gitee: https://gitee.com/chentianya000/gps_-pmf-fft.git
GPS信号的捕获(PMF+FFT方法)相关推荐
- gps 捕获 matlab,基于FFT的GPS信号快速捕获方法
基于FFT的GPS信号快速捕获方法 李继忠 李巍 (北京遥感设备研究所,北京100039) 摘要:设计在高动态环境下工作的GPS接收机,其难点之一便在于对卫星伪码的快速捕获. 针对缩短GPS接收机捕获 ...
- 【GPS信号跟踪捕获】基于FPGA的GPS系统跟踪捕获算法的Verilog实现
1.软件版本 2.本算法理论知识 本课题的主要使用verilog实现GPS信号的捕获和跟踪过程.GPS的捕获和跟踪的现有资料非常多,总结来讲,其基本结构为下图所示: 捕获模块如下图所示: 跟踪环路如下 ...
- m低信噪比下GPS信号的捕获算法研究,分别使用matlab和FPGA对算法进行仿真和硬件实现
目录 1.算法概述 2.仿真效果预览 3.MATLAB/FPGA部分代码预览 4.完整MATLAB/FPGA程序 1.算法概述 GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和 ...
- GPS信号捕获的MATLAB_FPGA仿真
由于C/A码长lms,所以至少要用lms的电文来捕获,但在实际中,1ms的电文仍有可能发生导航点相位偏移.因此,使用两组连续的10ms电文来捕获,就保证了在某一组电文中未含有相位偏移. 我们将一个信号 ...
- 基于matlab的GPS信号相关检测算法仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 全球定位系统(Global Positioning System,GPS),是一种以人造地球卫星为基 ...
- GPS系统跟踪捕获算法的Verilog实现
使用verilog实现GPS信号的捕获和跟踪过程.GPS的捕获和跟踪的现有资料非常多,总结来讲,其基本结构为下图所示: 捕获模块如下图所示: 跟踪环路如下图所示: 具体的一些论文的实现方法和上面的结构 ...
- 【GPS识别】低信噪比环境下GPS信号识别的MATLAB仿真
1.软件版本 MATLAB2021a 2.本算法理论知识 如图GPS系统的星座部分是由21颗工作卫星和3颗在轨备用卫星组成,其高度为20183km,这24颗卫星均匀分布在6个等间隔的.相对轨道面倾角为 ...
- GPS信号捕获基本原理
GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和导航电文采用BPSK技术去调制载波. GPS使用的两个L波段两种载频: 1 GPS搜索捕获原理 为了跟踪和解码GPS信号,首先要 ...
- 【GPS仿真】基于matlab GPS信号捕获跟踪【含Matlab源码 2126期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GPS仿真]基于matlab GPS信号捕获跟踪[含Matlab源码 2126期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...
- 基于matlab的GPS信号捕获仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 全球定位系统gps是一种可以在全球范围内为用户全天候提供实时.连续.高精度的位置.速度和时间信息的卫星导航系统,其主要终端设备 ...
最新文章
- 媲美光纤!WiFi传输速度已可达100Gbps
- 【微信小程序企业级开发教程】快递查询实例
- Selenium常用API的使用java语言之7-控制浏览器操作
- html编译软件推荐,3款容易上手的HTML5编辑工具推荐~
- Module not found: Error: Can‘t resolve ‘sass-loader‘ in E:\IdeaProject\xinguan\xinguan
- c语言编译无错误但不能输入输出,第2章-C语言版输入输出.ppt
- 小谈Online-game服务器端设计(3)
- 戴着口罩也要开心过年吖!
- java 十进制 左移,java移位运算符之十进制转二进制
- linux应用程序启动时加载库错误问题
- 使用Flash air操作本地文件
- WebStorm快捷键
- C语言求三角形斜边长
- 带上问题来看:主流技术Java、Python怎么?基本功又该怎么学?(什么是MySQL、Linux、算法?又该怎么用?)
- flex 移动开发 html5,[ html5 ] 移动端适配方案 flex布局+rem布局
- 老熊一亩三分地里的Oracle工具
- node-sass安装失败 error D:\xxx\xxx\node_modules\node-sass: Command failed.(window + mac M1 pro)
- 搜狗大数据总监、Polarr 联合创始人关于深度学习的分享交流
- 重庆新地标佛罗伦萨小镇将开业;雅高宣布2021年开业新酒店计划;阅文集团出售懒人听书股权​ | 美通企业周刊...
- [设计模式]单例模式的几种不同写法比较
热门文章
- TaxoNN: ensemble of neural networks on stratified microbiome data for disease prediction阅读报告
- echarts-wordcloud 热词云使用
- Real-Time Rendering——Chapter 10Local Illumination局部照明
- 九位SEO专家分享他们对Google核心更新的看法
- LSTM调参经验(细读)
- 1 人抵 1 万名黑客的阿里女守护神,私底下竟然是这个样子!
- W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合
- Android平台下JNI调用第三方so库
- QQ会员注册完整代码
- 【CSDN|每日一练】Longest Continuous Increasing Subsequence