这个实现使用了多种软硬件平台,包括MATLAB、QTcreator等。发射通道是在Ubuntu虚拟机使用QTcreator编译代码控制的,接收通道在window下利用MATLAB实现的,整个下来花了两天左右的时间才完成。

一、硬件及配置

硬件使用的是zedboard+fmcomms2,在硬件端运行的是官方支持MATLAB开发的SD卡系统,下载和配置都使用MATLAB官方的软件包设置guide。运行guide时,由于我的电脑不能识别出SD卡,因此我只能直接通过MATLAB脚本下载系统到SD卡。

软件包:

设置时使用的代码段,通过学习硬件支持包中的函数来运行的:

dev = sdrdev('AD936x');
downloadImage(dev,'BoardName','ZedBoard and FMCOMMS2/3/4','SDCardLocation','H:')

二、代码编译和运行

开源的支持软件无线电的GPS信号模拟软件应该有不少,我使用的是下面这个代码:

https://github.com/Mictronics/pluto-gps-sim

这个工程是在 gps-sdr-sim工程的基础上开发的,挺好用的,我修改了一些配置和参数直接就可以运行。

运行命令:-e brdc1520.20n -c 3967283.15,1022538.18,4872414.48 -U "ip: 192.168.3.2" -A -70.0  -T  "now"

星历文件brdc1520.20n是在http://mgex.igs.org/IGS_MGEX_Data.php网页history里面的bkg或ign都可以下载。网络配置和上一篇博客一致。

至于工程编译的一些问题这里就不详细描述了,大家应该可以解决。我自己写了一个Cmakelists文件构建了用QTcreator构建了可编译的工程,调试运行比较方便,因为涉及多线程有些地方不能加断点调试,还需要学习一下相关的调试方法。

三、信号接收

信号接收用的是MATLAB支持包中的zynqRadioToneReceiverAD9361AD9364ML.m代码。做了较大的修改,首先是参数设置:

RadioBasebandRate = 10e6;
CenterFrequency = 1.5754e9;
ToneFrequency = 20e3;

其次,由于硬件端的发射通道已经在使用中,因此注释掉

%sdrTransmitter();

当然我加了一些代码,包括使用filterdesign工具设计了滤波器。

designCustomFilter(sdrReceiver);
filtnv = { ...
'BasebandSampleRate',sdrReceiver.BasebandSampleRate, ...
'filtPathRates',sdrReceiver.filtPathRates, ...
'filtCoefficients',sdrReceiver.filtCoefficients, ...
'filtCoefficientSize',sdrReceiver.filtCoefficientSize, ...
'filtDecimInterpFactor',sdrReceiver.filtDecimInterpFactor, ...
'filtGain',sdrReceiver.filtGain, ...
'filtRFBandwidth',sdrReceiver.filtRFBandwidth, ...
'filterConfigStruct',sdrReceiver.filterConfigStruct ...
}
save 'mycustomfilter' 'filtnv'
load mycustomfilter
sdrReceiver.UseCustomFilter = true;

最终显示的结果如下图

能够很清晰的看到伪码调制。

四、信号生成代码的关键修改(坑)

开始使用MATLAB收信号时怎么设置参数都不行,后来检查了信号仿真代码,发现信号生成代码里对硬件设置有bug:

iio_channel_attr_write_bool(iio_device_find_channel(phydev, "altvoltage0", true), "powerdown", false); // Turn OFF RX LO  //orignal is true

关闭了RX LO!修改为上述再编译就好了。

另外你想看到清晰的时域波形,就只能发送一颗卫星的信号,所以设置参数最多发一个就行了。

五、后续

在用gnss-sdr(https://github.com/gnss-sdr/gnss-sdr)接收的时候遇到点问题,首先是最新版本的编译通过了,但运行时总是报内存泄露,调了半天,因为不熟悉ProtoBuf 就放弃了。使用了2018年下载的版本进行编译通过了,但运行时报错_Signal_Source: Undefined implementation for block,发现编译时设置-ENABLE_FMCOMMS2=ON居然没用,只能在Cmakelists文件里 set(ENABLE_FMCOMMS2 ON)。运行参数文件为 -config_file "/home/wangjie/gnss/gnss-sdr/conf/gnss-sdr_GPS_L1_fmcomms2_realtime.conf"。运行比较顺利,只不过在室内捕获到信号跟踪不上。

在使用这个软件接收机接收生成的代码居然也不行,还在找原因。

软件无线电zedboard+fmcomms2实现GPS信号模拟和接收相关推荐

  1. GPS的信号强度以及matlab信号模拟

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 GPS的信号强度以及模拟 GPS信号强度 GPS信号的简易仿真 GPS信号强度 GPS的民用C/A码,从卫星发出来的时候,信号只有27 ...

  2. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》开题报告

    基于HackRF开发GPS信号仿真模拟器 1. 研究意义 随着GPS卫星导航定位系统在现在社会得到越来越广泛的应用,一个能够定量评估.可以模拟不同环境.并具有足够精度的卫星信号仿真模拟器为GPS终端设 ...

  3. m基于VDLL的矢量型GPS信号跟踪算法matlab仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 载波跟踪环是传统独立式GPS接收机最脆弱的环节,针对弱信号环境下其比伪码跟踪环路更容易失锁的 ...

  4. LimeSDR mini实现GPS信号接收

    LimeSDR mini实现GPS信号接收 作者微信公众号:小卫星 操作系统: Ubuntu18.04 LTS 0.起因 LimeSDRmini既然包含了GPS频段(L1 1575.42MHz),那就 ...

  5. android模拟器GPS信号设置

    在模拟器上获取GPS信息时,使用Location loc = LocationManager.getLastKnownLocation("gps");来获取location信息,但 ...

  6. 听说INCA可以读手机GPS信号。你真的知道原理吗?

    ​从零开始新世界生活! 耕耘于内燃机行业的新手攻城狮. 正题开始! 本文的主题:关于INCA读取手机GPS信号的实现原理. 引言以及概要:早在一年前,我曾经发过一篇文章,讲诉了INCA如何实时从手机中 ...

  7. 汽车应用和GPS综合测试中GPS/GNSS模拟测试新方案

    通过模拟进行GPS综合测试是一种简单.快速.有效的方式,虹科最新发布GPS/GNSS模拟器具有高级测试功能,只需一次路测,就可以进行多次重复模拟,并通过记录和回放进行修改.虹科HK-GSG系列GPS/ ...

  8. 伪造GPS信号就能把无人车带沟里?百度Apollo工程师实验证明:自动驾驶没那么好骗...

    鱼羊 编辑整理 量子位 报道 | 公众号 QbitAI 人在亦庄,手机却定位到了东北旺? 可能不是你的手机出了问题,而是遇到了GPS信号欺骗. 那么,问题来了: 全靠传感器的自动驾驶系统,要是遇上了伪 ...

  9. 【GPS信号】GPS信号的读取以及kalman滤波预测

    根据论文中的要求,我们所需要的经度纬度和高度来自GPS信号的中的GPGGA的数据.所以提取这三个信息主要是对GPGGA中的数据进行整理. GPGGA的数据格式如下所示: 然后关于卡尔曼滤波的,也参考我 ...

最新文章

  1. 解析equals(Object obj)和compareTo(T obj)
  2. 终端安全工具 gartner 排名
  3. icmp基于tcp还是udp_面试爱考、编程必会基础!TCP/IP必知必会10大问题……
  4. 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
  5. swagger访问开关配置
  6. matlab调用库函数,Matlab调用函数的详细操作
  7. 穿越障碍物JAVA编程_JAVA 基础编程练习题1 【程序 1 不死神兔】
  8. 计算机的数据通信的概念,计算机数据通信基础知识.ppt
  9. python关闭文件-python_文件的打开和关闭
  10. 【智能优化算法】基于基于遗传算法实现认知无线电优化求解附matlab代码
  11. 树莓派安装拼音输入法(此处为谷歌拼音输入法)
  12. 【Java代码笔记】
  13. 家里内网穿透远程控制学校电脑
  14. 视频渲染靠cpu还是显卡 视频渲染的作用是什么
  15. 这是我见过最好的唐诗,而且通俗易懂5
  16. 高德地图——货车导航
  17. 微信支付开发准备工作和详细步骤
  18. 【计算机毕业设计】541鲜花商城系统
  19. python钉钉机器人发送excel附件_python 钉钉机器人发送消息
  20. Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档

热门文章

  1. 【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境
  2. 铁搭基站图像分析识别仪表抄表设备厂家技术规范
  3. Live2D使用分享
  4. Sql Server数据库由于未知原因丢失的恢复方法
  5. 一种会发光的扎带标签 lassorfid新品
  6. 高并发场景下的库存更新
  7. php有什么岗位职责,php工程师岗位职责包括什么
  8. Gor-查询接口压力测试
  9. 透过源码领悟GCC到底在干些什么(收集整理)
  10. SpringBoot(一)