m基于FPGA的GPS收发系统开发,包括码同步,载波同步,早迟门跟踪环,其中L1采用QPSK,L2采用BPSK

news2024/11/20 20:18:55

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       最早的GPS包含L1和L2两个频段,其中L1上调制CA码,P码以及导航电文,L2上调制P码和导航电文。在实际接收到的GPS信号中,我们除了能够接受到CA码和P码外,还能检测到L1和L2两种载波信号。GPS双频发送器的基本构架如下所示:

        使用CA码和P码两种码来区分双频道中的两种不同的频道。但是P码周期非常长,美国用P码周期是140多天,而简化后的民用版本也要7天多,我们无法在仿真或者实际测试的时候花那么多时间去验证P码的捕获,所以这里,我们将P码部分做了下简化,使用伪随机序列周期为2048bit,来代替P码部分。

       一般情况下,导航电文的频率为50hz,CA码的频率为1M,P码的频率为10M。这里,为了测试的需要,我们需要降低频率来进行测试。整个发送端,按如下的结构设计:

       通过捕获模块获得初始的频偏值,然后进行载波同步。与此同时,通过码同步,完成相位的捕获。最后进入跟踪阶段。

       先介绍一下捕获的基本原理:

       本地码生成器以C/A码标称频率产生C/A码与接收到的采样信号相关累加,一个积分周期(通常1个码周期)后,相关峰与检测门限比较,如果相关峰大于门限,则认为捕获成功,得到对应的码相位估计;如果相关峰小于门限,码发生器自动将本地码码相位向前或向后跳动1/2或1/4个码片,然后继续相关累加检测,最多在 或 个伪码周期后找到与本地伪码同步的输入伪码的相位状态( 即为一个码周期内码片的数目),以实现伪码的捕获。下面对步进相关法进行简单介绍,其原理图见图1。

跟踪部分:

其内部详细结构如下所示:

2.仿真效果预览

算法仿真:MATLAB 2010b

FPGA设计:ISE12.2

FPGA仿真:Modelsim6.5SE

   

   

导航电文和CA码及P码异或之后的信号。

导航电文和CA码及P码异或之后的信号,通过成型滤波器之后的效果。

这个最后发送出去的QPSK,BPSK以及相加之后的射频信号。

最后捕获跟踪之后的信号,放大看如下所示:

一开始的逐渐变大的过程就是锁定过程

3.MATLAB核心程序

`timescale 1ns / 1ps
module GPS_Rec(
               i_clk,
					i_rst,
					i_QPSK,
					i_BPSK,
					//Capture
					o_Ca_index,
					o_CA,
               o_abs_addCA,
					o_P_index,
					o_P,
					o_abs_addP,
					o_fre_est_Ca,
					o_fre_est_P,
					//Tracking
					o_I_L1,
					o_Q_L1,
					o_I_L2,
					o_Q_L2,	
					o_Dwen_rec_L1,
					o_Dwen_rec_L2
	           );
 
input              i_clk;
input              i_rst;
input signed[15:0] i_QPSK;
input signed[15:0] i_BPSK;
//Capture
output       [9:0] o_Ca_index; 
output signed[1:0] o_CA; 
output signed[21:0]o_abs_addCA;
output       [10:0]o_P_index; 
output signed[1:0] o_P; 
output signed[23:0]o_abs_addP;
output signed[23:0]o_fre_est_Ca;
output signed[23:0]o_fre_est_P;
 
//Tracking
output signed[15:0]o_I_L1;
output signed[15:0]o_Q_L1;
output signed[15:0]o_I_L2;
output signed[15:0]o_Q_L2;
output signed[1:0] o_Dwen_rec_L1;
output signed[1:0] o_Dwen_rec_L2;
 
wire clk_ca;
wire clk_ca_2code;
wire clk_p;
wire clk_p_2code; 
 
//2 time ca clock
CLOCK_DCM2 CLOCK_DCM2_u(
								.i_clk          (i_clk), 
								.i_rst          (i_rst), 
							   .o_clk_dwen     (), 
							   .o_clk_ca       (clk_ca), 
							   .o_clk_ca_2code (clk_ca_2code), 
							   .o_clk_p        (clk_p),
								.o_clk_p_2code  (clk_p_2code)
							  );
 
 
//CAPTURE
//CAPTURE
//frequency capture								
wire signed[9:0] o_Ca_index; 
wire signed[1:0] o_CA; 
wire signed[21:0]o_abs_addCA;			
		
frequency_capture_channel1 frequency_capture_channel1_u(
    .i_clk          (i_clk), 
    .i_clk_ca       (clk_ca), 
    .i_clk_ca2times (clk_ca_2code), 
    .i_rst          (i_rst), 
	 .i_QPSK         (i_QPSK),
	 .o_fre_est      (o_fre_est_Ca),
    .o_I_filter     (), 
    .o_Q_filter     (), 
    .o_Ca_index     (o_Ca_index), 
    .o_CA           (o_CA), 
    .o_abs_addIQ    (o_abs_addCA)
    );
 
 
wire signed[10:0] o_p_index; 
wire signed[1:0]  o_p; 
wire signed[23:0] o_abs_addP;	
frequency_capture_channel2 frequency_capture_channel2_u (
    .i_clk          (i_clk), 
    .i_clk_p        (clk_p), 
    .i_clk_p2times  (clk_p_2code), 
    .i_rst          (i_rst), 
    .i_BPSK         (i_BPSK), 
	 .o_fre_est      (o_fre_est_P),
    .o_I_filter     (), 
    .o_Q_filter     (), 
    .o_p_index      (o_P_index), 
    .o_p            (o_P), 
    .o_abs_addIQ    (o_abs_addP)
    );
 
 
 
//TRACKING
//TRACKING
 
 
wire signed[15:0]o_I_filter1;
wire signed[15:0]o_Q_filter1;
wire signed[15:0]o_I_filter2;
wire signed[15:0]o_Q_filter2;
 
Frequency_track_tops Frequency_track_tops_u(
    .i_clk       (i_clk), 
    .i_rst       (i_rst), 
    .i_QPSK      (i_QPSK), 
    .i_BPSK      (i_BPSK), 
    .i_FRE_index1(o_fre_est_Ca), 
	 .i_FRE_index2(o_fre_est_P), 
    .o_I_filter1 (o_I_L1), 
    .o_Q_filter1 (o_Q_L1), 
    .o_I_filter2 (o_I_L2), 
    .o_Q_filter2 (o_Q_L2)
    );
 
//CA capture
wire signed[1:0]Dwen_rec_L1;
CA_early_late_track_tops CA_early_late_track_tops_u(
    .i_clk      (clk_ca_2code), 
    .i_clk_ca   (clk_ca), 
    .i_rst      (i_rst), 
    .i_CA_index (o_Ca_index+1), 
    .i_Idin     (o_I_L1), 
    .i_Qdin     (o_Q_L1), 
    .o_dout     (o_Dwen_rec_L1)
    );
	 
//P capture
wire signed[1:0]Dwen_rec_L2;
P_early_late_track_tops P_early_late_track_tops_u (
    .i_clk     (clk_p_2code), 
    .i_clk_p   (clk_p), 
    .i_rst     (i_rst), 
    .i_P_index (o_P_index+1), 
    .i_Idin    (o_I_L2), 
    .i_Qdin    (o_Q_L2), 
    .o_dout    (o_Dwen_rec_L2)
    );
endmodule
01_118m

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语雀模板测试

Markdown 和快捷键全覆盖 💡 Tips:语雀支持全功能 markdown 语法,可以点击文档编辑页右下角小键盘查看全部支持的语法和快捷键。 支持导入导出 markdown 文件。支持自动识别粘贴的 markdown 格式内容转换为富文本。 行内代码 💡 …

Apache HTTPD 多后缀解析漏洞

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件: AddType text/html .html AddLanguage zh-CN .cn 其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言&…

DBCO四嗪试剂特点整理:Me-Tetrazine-DBCO,甲基-四嗪-二苯并环辛炔

【中文名称】甲基-四嗪-二苯并环辛炔 【英文名称】 Me-Tetrazine-DBCO 【CAS号】N/A 【分子式】C29H24N6O2 【分子量】488.55 【基团】DBCO基团 【纯度】95% 【规格标准】1g,5g,10g,包装灵活,可进行相应的封装。 【是否接受定制…

Linux进程的数据结构

在Linux里面,无论是进程还是线程,到了内核里面统一叫任务(task),有一个统一的结构task_struct进行管理。 在程序执行过程中,一旦调用到系统调用,就需要进入内核继续执行,那么讲用户…

5.DI之注解配置

1.编写Spring框架核心配置文件applicationContext.xml 在项目目录“/src/main/resources”下新建applicationContext.xml文件&#xff0c;具体代码如下。 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework…

HashMap1.8也会发生死循环—记录

目录 代码 jstack 分析 什么是哈希表 在讨论哈希表之前&#xff0c;我们先大概了解下其他数据结构在新增&#xff0c;查找等基础操作执行性能 数组&#xff1a;采用一段连续的存储单元来存储数据。对于指定下标的查找&#xff0c;时间复杂度为O(1)&#xff1b;通过给定值进…

web课程设计网页规划与设计:HTML+CSS美妆设计题材——雅诗兰黛(5页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

制作移动端整页滚动动画

制作移动端整页滚动动画 需要用到 rem7.5.js(rem适配) pageSlider.js(控制动画的js文件) 基于zepto&#xff0c;引入zepto.js文件 animate.css(动画样式) base.css(公共样式) 下面看一下页面结构 <div class"section sec1"style"background-image:url(./ima…

Java设计模式 - 管道模式

管道模式是责任链模式的常用变种之一&#xff0c;但是管道模式和责任链模式有一个关键的区别&#xff0c;在看一些博客的时候并没有体现出来出来&#xff0c;很多人都把责任链模式当做管道模式来说。 定义 管道模式使用有序的Stage(或者Handler)来顺序的处理一个输入值&#…

以智能视觉驱动智慧出行,看中科创达如何持续深耕汽车市场

当前&#xff0c;360全景环视&#xff08;AVM&#xff09;正在往丰富的ADAS功能、透明底盘功能、不同等级的自动泊车功能等领域拓展&#xff0c;全景环视市场的多元化增长路径已经全面开启。 高工智能汽车研究院监测数据显示&#xff0c;2022年1-9月中国市场&#xff08;不含进…

工厂应该如何批量打印送货单和产品标签

01基本需求 图1是公司的出货明细表&#xff0c;要求按图2的样式批量打印标签&#xff0c;然后将标签张贴在产品包装箱上&#xff0c;否则客户不收货。 其中A7单元格用于存放条形码&#xff0c;条形码用于存放产品的订单号。 图1 订单表 图2 标签模板样式 02操作步骤 利用E…

【2023春招Java岗面试】 90% 会问到的 200+Java 面试题汇总(含答案解析),一定要抓住重点

前言 很多朋友问&#xff0c;有没有整理今年的一些面试题&#xff0c;最近抽时间整理了一份 Java 面试题。或许这份面试题还不足以囊括所有 Java 问题&#xff0c;但有了它&#xff0c;我相信足以应对目前市面上绝大部分的 Java 面试了&#xff0c;因为这篇文章不论是从深度还…

简单讲解Linux PSCI框架

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 介绍 PSCI, Power State Coordination Interface&#xff0c;由ARM定义的电源管理接口规范&#xff0c;通常由Firmware来实现&#xff0c;而Linux系统可…

014 | 探讨京族民间传说中的海洋文化特质 | 大学生创新训练项目申请书 | 极致技术工厂

&#xff08;一&#xff09;研究目的 京族是我国56个民族中唯一一个生活在海边的少数民族&#xff0c;这一特殊的少数民族位于我国西南沿海边陲&#xff0c;有着独具特色的海洋文化。渔民的海神信仰、特殊的舞蹈和乐器积淀了京族丰富的历史文化。以海洋地域为背景、世世代代以海…

神经网络的应用(分类和预测)——python

神经网络的应用一.数据预处理 ​ 由于神经网络输入数据的范围可能特别大&#xff0c;导致神经网络收敛慢、训练时间长。因此在训练神经网络前一般对数据进行预处理(不妨假设这里的指标都是效益型的(即都是正项指标))&#xff0c;一种重要的预处理的处理手段是归一化处理&#…

CMake中set_property/get_property的使用

CMake中的set_property命令用于在给定作用域(scope)内设置命名属性&#xff0c;其格式如下&#xff1a; set_property(<GLOBAL |DIRECTORY [<dir>] |TARGET [<target1> ...] |SOURCE [<src1> ...][DIRECTORY <…

小程序AP配网和AK配网教程(开源)

小程序AP配网和AK配网教程&#xff08;开源&#xff09; 一、 Airkiss配网的实现方式 ​ Airkiss配网我们采用插件的形式&#xff0c;非常简单方便。感谢半颗心脏大佬的开源插件。 1. Airkiss 简介 AirKiss是微信硬件平台为Wi-Fi设备提供的微信配网、局域网发现和局域网通讯…

将两个数组进行竖直(水平)方向的拼接 vstack()和hstack()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将两个数组进行竖直(水平)方向的拼接 vstack()和hstack() [太阳]选择题 以下关于Python代码的选项说法错误的一项是? import numpy as np myArray1np.array([1,2,3]) print("【…

主线程与分支线程的访问、修改

任务1&#xff1a;定义一个全局变量 int a10&#xff0c;主线程能否访问到&#xff0c;分支线程能否访问到&#xff1b; 任务2&#xff1a;分支线程中修改上述的a 20, 问主线程中访问该a&#xff0c;是10还是20; 任务3&#xff1a;在主线程定义一个局部变量int b1&#x…

代码随想录刷题day59 503.下一个更大元素II;42. 接雨水

代码随想录刷题day59 503.下一个更大元素II&#xff1b;42. 接雨水 单调栈的一些应用。 503.下一个更大元素II 503. 下一个更大元素 II - 力扣&#xff08;Leetcode&#xff09; 还是下一个最大元素&#xff0c;主要是掌握循环数组中利用%取余的这个操作&#xff0c;在循环…