- 博客(233)
- 资源 (7)
- 收藏
- 关注
原创 全网稀缺资源!GPS 接收机硬件平台及源码来袭
这款 GPS 接收机,是笔者的心血之作,完全拥有自主产权,目前正计划申请软件著作权。大家不用担心使用限制,只要不公开传播,接收机代码可自由用于购买者的产品和项目中。经常关注笔者公众号文章的朋友,对《从零开始研发 GPS 接收机系列》一定不陌生,文章详细记录了接收机的研制过程和实现方案。尽管已多年未直接从事导航领域工作,但凭借深厚的知识积累,笔者独立完成了除 PVT 解算部分(借鉴 RTKLIB)外的整个 FPGA 部分、ARM 部分的捕获控制、跟踪环路、位同步、帧同步、电文解析等工作。
2025-03-29 17:03:02
1289
原创 从零开始研发GPS接收机连载——17、北斗B1信号的接收
笔者一直也想对北斗信号进行接收来着,但一直苦于没有信号源而迟迟未动手,之前购买的Harkrf One只能模拟GPS L1的信号,没有一个方便的信号源那只能接收天上的信号了。但笔者家里阳台只能看到一小半边天,接收环境不太理想。总不能跑到房顶去调试吧,那被邻居看到了还以为我在搞啥神秘的活动可不好。这不趁着十一假期又能回老家了,老家房子有自家房顶天台,趁这个机会可以开展几天测试了。为了调试方便,特意买了一根15米的线缆,直接将房顶天线引导了书房,简直是太方便了,终于不用把笔记本抬到天台了。
2025-03-29 16:55:34
908
原创 从零开始研发GPS接收机连载——16、接收天上卫星信号成功定位
这两天回了趟县城老家,这不我的GPS接收机也带回来了。为啥要把它也带回来呢?因为老家房子有天顶啊,在大城市哪里能找到这么一块干净的天空呢。虽然之前已经通过模拟器成功的定位,但还是希望能够实际测试一下对天的接收,毕竟这才是最有说服力的。
2025-03-29 16:50:19
430
原创 从零开始研发GPS接收机连载——15、使用新射频成功打卡日本地标
话说笔者花了一笔巨资买了一个指甲盖般大小的MAX2771射频板,我把这个板让我老婆猜猜这东西多少钱,他们说这是几十块钱的东西吧。搞得我亚历山大,要是用不起来那又得说话糟蹋钱了。不过最终幸好,这钱没打水漂,最终还是用起来了。
2025-03-29 16:47:16
959
原创 从零开始研发GPS接收机连载——14、使用新射频继续GPS接收机研发
话说从零开始研发GPS接收机这个系列已经暂停好一阵了,想着是不是也应该继续践行下一步计划了。在上一篇文章中所提的下一步计划希望做的是:1、更换新的射频板,用GPS天线进行实际信号接收2、拿着这个demo跑跑车,检验检验效果3、把北斗信号也接收下来准备接下来一一来进行实现。毕竟前面做的只是模拟的GPS信号的接收,这个阶段要做一个真正的接收机,接天上的信号,实现可移动。到时候再用个盒子包装一下,“老鸟”牌接收机也就可以出炉了。
2025-03-29 16:40:36
418
原创 FPGA经验谈系列文章——9、块储存器的高效使用
如果只想使用1Kb怎么办?因此我们尽量规划好存储资源的使用,特别是在存储资源紧张的时候合理规划,不要浪费,小存储需求可以采用SLICEM中的LUT构建的分布式RAM来解决。在BlockRAM元件中还存在一些FIFO的逻辑控制电路,包括写指针、读指针、跨时钟域处理的电路,这些都是属于BlockRAM中的内嵌资源,当例化FIFO18E1或者FIFO36E1原语的时候,则会被使用到,同时我们看到,两个FIFO18E1不能同时例化到同一个BlockRAM中,因为BlockRAM内只有一套FIFO的逻辑控制电路。
2024-11-21 14:54:51
897
原创 FPGA经验谈系列文章——8、复位的设计
剑法往往有着固定的招式套路,而写代码似乎也存在类似的情况。就笔者所经历的诸多项目以及所接触到的不少工程师而言,大家在着手书写时序代码之前,几乎都会习惯性地先写上这样一个 “开头”,当然了,笔者自己在很长一段时间内也是如此行事的。这种写法在绝大多数的情形下确实不会引发什么问题,然而,存在并不一定就意味着完全合理。
2024-11-21 14:38:35
595
原创 FPGA经验谈系列文章——7、预估逻辑级数
了解一些常用模块的逻辑级数是比较重要的,特别是对于时钟频率要求高的时候,此时一般对于代码的逻辑级数具有非常高的要求,不能超过多少级,对于某些可能导致逻辑级数高的代码需要进行提前处理。只有了解了大致的逻辑级数的判断,设计起来则了然于胸,知道如何去优化。因为这里只是总结了Kintex-7系列的FPGA,其他系列的FPGA内部结构以及芯片制程都有所不同不能直接套用Kintex-7的结论,读者可以根据自己使用的FPGA器件也去进行一些总结,知道这些逻辑级数信息将有助于设计出更高效的代码。
2024-11-20 15:01:05
573
原创 FPGA经验谈系列文章——4、常用代码的逻辑级数预估(加法器)
现在我们知道,想要FPGA的主频跑得高,那么工程的逻辑级数要尽量低才行,但一个大的逻辑工程如此的庞大,代码已经编写完成再来考虑逻辑级数那就有一点晚了,因为很多功能都是时序强相关,改了一个地方可能牵扯到更多的地方要跟着改,工程大了改起来就痛苦了。因此想要FPGA设计的逻辑级数低,从每个代码块就需要开始注意了,因此可以把常见的一些语法块所综合的逻辑级数总结起来。这样我们不仅大致知道逻辑级数的范围,同时优化代码的时候也知道从哪里下手。
2024-11-18 21:01:05
292
原创 GPS L1信号捕获跟踪MATLAB仿真(终极版)
本节将介绍捕获跟踪MATLAB仿真完整版。里面用到的捕获方法为短时相关+FFT捕获;跟踪环路为锁频+锁相+码环;该实现直接采用笔者《从零开始研发GPS接收机》系列中近期FPGA实现的参数,保持与FPGA设计的一致性。例如中频:3.992e6,采样率:16.369MHzMATLAB仿真中的的跟踪环中环路参数和环路结果、相关时间均与硬件实现保持一致。《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。。
2024-11-13 09:51:32
1019
原创 短时相关+FFT捕获方法的MATLAB仿真
对于算法类的工程,FPGA设计,仿真先行,再没搞清楚整个信号处理原理和流程之前,切莫盲目开始FPGA RTL。对于导航接收机而言,接收机的第一步就在于能够捕获到信号,才能进行后面的跟踪、解算等等。笔者所做的《从零开始研发GPS接收机》的工作中,使用的方法就是这种短时相关+FFT的捕获方法。从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
2024-09-04 20:30:48
1675
3
原创 GPS跟踪环路MATLAB之——完整跟踪环(锁频环+锁相环+码环)
从事卫星导航基带处理的童鞋都知道,跟踪环路属于整个卫星导航信号处理中的精华之中的精华。接收机通过跟踪环在本地能够准确的复现接收到的信号的载波和伪码,是后续能够正确定位解算的关键步骤。整个跟踪环路将分成三小节,数字锁频环、数字锁相环和码环。其中数字锁频环和锁相环属于载波跟踪环。笔者所做的《从零开始研发GPS接收机》的工作中所使用的跟踪环路也将会在这里提到从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
2024-09-03 23:20:59
1319
原创 GPS跟踪环路MATLAB之——码环(码元同步)
从事卫星导航基带处理的童鞋都知道,跟踪环路属于整个卫星导航信号处理中的精华之中的精华。接收机通过跟踪环在本地能够准确的复现接收到的信号的载波和伪码,是后续能够正确定位解算的关键步骤。整个跟踪环路将分成三小节,数字锁频环、数字锁相环和码环。其中数字锁频环和锁相环属于载波跟踪环。笔者所做的《从零开始研发GPS接收机》的工作中所使用的跟踪环路也将会在这里提到从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
2024-09-03 23:15:15
1702
原创 GPS跟踪环路MATLAB之——数字锁相环
从事卫星导航基带处理的童鞋都知道,跟踪环路属于整个卫星导航信号处理中的精华之中的精华。接收机通过跟踪环在本地能够准确的复现接收到的信号的载波和伪码,是后续能够正确定位解算的关键步骤。整个跟踪环路将分成三小节,数字锁频环、数字锁相环和码环。其中数字锁频环和锁相环属于载波跟踪环。笔者所做的《从零开始研发GPS接收机》的工作中所使用的跟踪环路也将会在这里提到《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
2024-08-11 11:04:09
1478
原创 GPS跟踪环路MATLAB之——数字锁频环
从事卫星导航基带处理的童鞋都知道,跟踪环路属于整个卫星导航信号处理中的精华之中的精华。接收机通过跟踪环在本地能够准确的复现接收到的信号的载波和伪码,是后续能够正确定位解算的关键步骤。整个跟踪环路将分成三小节,数字锁频环、数字锁相环和码环。其中数字锁频环和锁相环属于载波跟踪环。笔者所做的《从零开始研发GPS接收机》的工作中所使用的跟踪环路也将会在这里提到《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
2024-08-11 10:40:12
1619
原创 GPS L1信号捕获以及载噪比估计matlab
对于算法类的工程,FPGA设计,仿真先行,再没搞清楚整个信号处理原理和流程之前,切莫盲目开始FPGA RTL。对于导航接收机而言,接收机的第一步就在于能够捕获到信号,才能进行后面的跟踪、解算等等。笔者所做的《从零开始研发GPS接收机》的工作中,需要首先确认射频ADC是否正常工作,检测的手段就是通过FPGA采集ILA数据首先在MATLAB上进行捕获。因此我们需要一个MATLAB程序,首先能够对自己生成的信号能够捕获,然后就可用于采集实际信号来判断ADC中是否包含了卫星信号。
2024-08-05 12:47:27
1043
原创 CPRI协议的理解——CPRI中的扰码
CPRI中有两种情况会需要用到扰码,一种是在8B10B线路编码的速率上数据添加了扰码。一种是64B66B编码。
2024-06-17 14:49:18
1093
原创 CPRI协议理解——控制字内容
接下来开始捋一下控制字的内容。汇总就是这个表格了。看起来似乎很多内容,但有些实际上是一些厂商特定的控制信息,这些是不需要太关注的。需要关注的只要有如下:同步相关:Ns = 0这一行慢速C&M:Ns = 1这一行版本、控制信号、P指针:Ns = 2这一行。FastC&M就是 Ns=P指针到63了这一行。其他的内容并不是通用的,或者保留的那就不需要关注。同时还要关注下Z表示法与XsNs标志的对应关系。
2024-06-17 11:20:04
1598
原创 CPRI协议理解——帧格式中的计数标识
CPRI协议是一个流式协议,数据不间断的传输,在我们要了解CPRI到底要传输种类繁多的内容之前。我们可以先了解CPRI的一个传输框架,我们暂且不管到底传输了些什么实际内容,我们先从最简单的计数器开始讲起。CPRI的数据就是通过这些计数器来控制将不同数据放在指定的的计数下面流式传播。而接收端也是解出计数器,根据计数器的特定位置解出对应的数据,看起来不难是不是。
2024-04-20 18:48:18
1093
原创 Aurora 协议学习理解与应用——Aurora 64B66B协议学习
Aurora 协议描述了通过 Aurora channel传输用户数据,该通道由一个或多个 Aurora lane组成。每个 Aurora lane都是串行数据连接,可以是全双工,也可以是单工。通过channel进行通信的设备称为channel partners。Aurora 接口允许用户应用程序通过 Aurora 通道传输数据。每个 Aurora 接口上的用户接口未在本规范中定义。Aurora通道包含下面这些属性:1、数据通过 Aurora 通道以帧的形式传输。
2024-04-17 13:26:11
8017
原创 Aurora 协议学习理解与应用——Aurora 8B10B协议学习
Aurora 8B/10B 协议描述了通过 Aurora 8B/10B Channel传输用户数据。一个 Aurora 8B/10B Channel由一个或多个 Aurora 8B/10B lanes组成。每个 Aurora 8B/10B lane都是全双工串行数据连接。通信的双方称为Partners。与其他例如SRIO称为Master和Slave不同,这里Partners说明双方是对等的关系。Aurora 8B/10B 协议接口通过用户接口与用户应用程序传输数据和控制。
2024-04-16 21:01:54
4144
1
原创 VB语言回忆录——到了是该放弃VB语言的时候了么
4年前(2020年),微软 NET 团队在开发者博客中宣布,他们虽然还会继续在 .NET 5.0 上支持 Visual Basic ,但不再将 VB 作为一门独立的语言发展。VB这个语言我从接触到现在也将近十七八年了,虽然一直都是停留在初级的阶段,但作为一个自己的纯爱好,虽然技术上一直没有太大的进步,但也一直没有生疏,它一直在我的工作发挥着作用,甚至是锦上添花。
2024-03-10 14:27:17
1410
1
原创 vivado如何生成一个模块的带原语的网表
有时候我们想生成一个网表文件,但vivado默认是会生成一个dcp的文件,加密性时非常好的,但又过于黑盒子了,而通过原理图按钮只能看到原理图图形,如果将原理图生成全部是原语的文本呢。
2024-02-29 08:30:07
1039
原创 Gowin FPGA的使用——GW2A系列rPLL
使用GUI来配置rpll还是很明了的,这个不需要太多说明就能直接使用了,我主要是要搞清楚原语的使用以及rPLL的内部结构。
2024-01-17 16:06:38
1755
原创 LTPI协议的理解——4、LTPI链路初始化以及运行
整个LTPI协议实现过程中,我认为最复杂的也就是LTPI的链路建立的过程 以及异步信号(特别是IIC)的传输事务的控制和响应以及对IIC接口线的操作。我们前面已经大致提到了各个阶段的帧定义,那么接下来我们继续来理解整个LPTI协议的初始化到运行的流程是怎样的LPTI协议的实现,主要是要注意各种状态的跳转,各种异常的检测,以及一些调试分支都要考虑到,所以协议都要细细的研读,否则很慢把所有细节都把握清楚。
2023-12-29 11:41:52
2595
原创 LTPI协议的理解——2、LTPI实现的底层架构
前面讲了LTPI的定义和大概结构,接下来继续理解LTPI硬件实现的底层架构1、类似于高速收发器中需要字节对齐,K码检测,这个协议也涉及到这些2、用到了8B/10B编码,那么帧内容应该都是以字节为单位进行组帧,同时在帧的头部设置为K comma用于判断是什么类型的帧,尾巴加上CRC校验,CRC校验的内容是不包含K Comma的其他内容2、GPIO UART这些因为是直通的,因此可以直接进行采样3、而I2C和DATA BUS这些是需要交互的,不能像GPIO UART那么简单的操作。
2023-12-29 09:19:32
2718
原创 LTPI协议的理解——3、LTPI协议的帧定义
前言各种帧格式速率协商阶段能力确认阶段运行阶段总结手册中各种帧写的位置有点乱,不好查询,这里进行一下汇总LTPI协议就是通过上述帧来传输数据的,一开始是使用检测帧来互相交换速度信息,通过速度帧来协商确认,选定一个各自都存在的最高速度来运行LVDS信号,速度协商完成之后。开始发送能力广告帧,交换两端的能力信息,然后SCM发送配置帧,如果HPM的能力满足配置帧的话则发送有效接受帧,这样两端就进入了运行状态。
2023-12-28 15:33:37
1658
原创 LTPI协议的理解——1、LTPI协议的定义和结构
定义DC-SCM 2.0 LTPI 结构GPIO通道I2C/SMBus通道Uart通道OEM通道数据通道总结LTPI (LVDS Tunneling Protocol & Interface,LVDS 隧道协议和接口)是一种协议和接口,设计用于在 HPM 和 SCM 之间传输各种低速信号。它不仅支持 GPIO 的隧道传输,还支持 SMBus、I2C、UART 等低速串行接口的隧道传输。它还可以通过额外的专有 OEM 接口进行扩展,并为 HPM CPLD 和 SCM CPLD 之间的原始数据隧道提供支持。
2023-12-28 14:50:07
6191
原创 Gowin FPGA工程modelsim功能仿真和时序仿真
下面记录一下modelsim功能仿真和时序仿真的操作步骤,学习新器件的第一步,当然是要知道怎么进行IP核的仿真了。
2023-08-23 13:05:51
2895
1
原创 Xilinx DDR3学习总结——4、添加读写功能
前言APP端口读写测试前面modelsim已经仿真成功了了DDR3的初始化,但其他端口都设置成了0,现在就需要对其读写端口进行操作了。
2023-08-12 20:53:03
1046
原创 Xilinx DDR3学习总结——3、MIG exmaple仿真
前言仿真前面我们直接把exmaple例程稍加修改就进行了抢先上板测试,证明了MIG模块工作时正常的,但后续如果需要添加读写功能的话,还是需要先进行仿真,因此我们还是先要把modelsim仿真弄起来。
2023-08-12 20:08:42
1106
原创 Xilinx DDR3学习总结——2、MIG exmaple直接上板
前言修改内容上板上一篇,我们生成了一个example,example的测试激励看起来都比较复杂,仿真先不看,实际上,这个example稍加改动就可以直接上板了。这里我们就是查看MIG IP输出的init_calib_complete信号。
2023-08-12 19:34:35
1643
原创 Xilinx DDR3学习总结——1、MIG核设置
前言开发板 DDR信息MIG 设置话说之前从来没有使用过DDR,工作中的项目都是流式处理的,没有一个大存储的需求,应该图像处理中DDR用的会比较多一些,但是一个这么常用的东西不预先学习一下也不像话,在这里,也就记录一下学习的过程。参考其他优秀的博主的文章,现学现会。
2023-08-12 16:52:55
1707
原创 Gowin FPGA学习记录——前言
现在用国产FPGA的厂家是越来越多了,和以前的同事聊天,很多公司都陆陆续续有了一些使用国产FPGA的项目,用的人多了,自然而然整个生态就建立起来了。工作一两年中,也有国产FPGA厂家过来推销,虽然说的怎么怎么好,但我们都知道国产的东西,那肯定是不怎么稳定的,还是让别人先去当小白鼠吧,因此国产FPGA基本上不怎么受待见。现在FPGA的这种发展势头在十年前那是不敢想象的,记得我刚毕业的时候,还有个叫京微雅格的国产FPGA公司,那应该是我最早听到的国产FPGA的名字了。4、IP核的使用学习。
2023-07-13 23:07:38
882
原创 xilinx srio ip学习笔记之axistream接口
srio 的IQ接口都是基于axistream的,以前没怎么用过axistream的接口,或者说没怎么用过复杂条件下的axistream的接口,今天就来总结和改造一下包括以下信号axistream 一边是发送端,一边是接收端。接收端的时序还比较好判断,只要判断tvalid准备好了,只要发送一个tready,那么tvalid和tready同时为高的时候,ireq_tdata就可以采集下来。
2023-02-15 10:28:39
1538
3
《FPGA信号处理系列文章——多相滤波器解决Xilinx工程问题》中的COE文件
2022-01-01
P码相关处理文档.rar
2021-10-24
serdes_12g.rar
2021-10-17
SERDES_10G.rar
2021-10-16
SERDES_3G.rar
2021-10-16
AD9364下变频链路仿真.rar
2021-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人