本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

温馨提示:“开源SDR实验室”是北京的。

前面几个教程中,我们使用相对简单易用的数据流编程环境Pothos对SDR的软件定义过程进行了简单介绍,本教程我们将尝试在一些基于代码的示例中进行更深入地了解。

目录

一、快速回顾

二、知识断档

三、进一步深入学习

四、GNU Octave

五、幅度键控(ASK)

六、还是一个黑盒子

七、本文小结

八、有用链接和联系方式


一、快速回顾

维基百科对软件无线电的定义为:软件无线电(SDR)是一种无线电通信系统,通常在硬件(例如混频器、滤波器、放大器、调制器/解调器、检测器等)中的典型组件由软件来实现。

现在可能是迄今为止回顾所学知识的好时机:

在《LimeSDR官方系列教程(一):LimeSDR简介》和《LimeSDR官方系列教程(二):LMS7002M RX和I/Q》中,我们研究了SDR的硬件射频部分。

在《LimeSDR官方系列教程(三):一个实际测试例子》中,我们开始研究了SDR硬件部分相关的一些调整参数,这是在纯硬件中处理数据的最后阶段,而接下来的其他阶段都将在软件域内进行(在特殊情况下,也可以使用FPGA)。

在《LimeSDR官方系列教程(四):To Pothos and Beyond》中,我们可以认识到这才是SDR真正变幻莫测的地方。到目前为止,SDR的有些性能依然被物理世界中的硬件所制约。虽然看似不可思议,设备能够在100kHz至3.8GHz的频率范围内进行调谐,但该硬件必须在芯片中实现,因此仅限于此功能。这是软件定义的过程:我们在FM示例的软件域中添加了滤波器,解调器和检测器。

二、知识断档

从使用LimeSuiteGUI到Pothos,在《LimeSDR官方系列教程(三):一个实际测试例子》和《LimeSDR官方系列教程(四):To Pothos and Beyond》之间知识有些脱节,因为后者是一个非常高级的软件环境,控件中大多数低级参数都被假定或抽象了。那我们该如何知道启用了哪些设置以及两者之间有什么关系?在这个程度上,让我们开始深入研究更多关于LMS7002M控件的一些知识。

三、进一步深入学习

如果您已经尝试学习了前几节内容的所有数学知识,并且仍然想进一步学习,那么现在可能正是您所希望的。现在,我们将介绍GNU Octave。Octave是一种开源的MATLAB风格的数学语言和编程环境。如果您希望对复杂的数学公式进行实验,这可能会使大多数普通人感到害怕,不过也请您不要再犹豫了。Octave会成为您的选择,该语言对于使用用户来说非常友好。

如果您希望在将来使用Octave,则与Pothos或Lime Suite相比,安装过程会涉及更多内容。安装说明已包含在此处,请谨慎执行,因为有很多步骤。我们将通过ASK来演示其如何进行工作的。

在撰写本文时,这些演示是在Windows环境中进行的。由于我们的计算机上存在一些问题,到目前为止,尚未对Linux进行测试,但是该软件是可以正常工作的。如果您决定继续使用Linux,则要确保安装所有软件包,这些软件包包括关于信号、通信以及Lime的软件包,此外,您还应该通过“sudo apt-get install gnuplot”安装gnuplot,否则,您可能会得到一个错误。在全新安装的Ubuntu上肯定会出现这种情况的。如果您已经从上面的链接了解了相关内容,则需要注意:只有ASK和FSK演示程序可以安全运行,而无需专门的EMI筛选或许可证。其他演示均为蜂窝技术,需要您获得相应的使用许可证。

四、GNU Octave

我们安装所有这些应用程序的目的是为了探索SDR的软件使用,Octave应该很好地满足此目的。在我们开始使用之前,需要先概述这个功能强大的软件包。MATLAB和Octave最初设计用于求解数学方程,这使其成为部分SDR软件原型的理想选择,如“混频器,滤波器,放大器,调制器/解调器,检测器等”。在软件中。我们需要掌握数学知识,在某些情况下还需要掌握很多数学知识!

以增益级软件中最简单的例子为例,一旦信号进入数字域,简单的乘法(增益)或除法(损耗)就可以实现我们的目的。尽管这是一个非常简单的概念,但是由于我们产生的样本数量非常大,因此复数矩阵也很大,在实现中可能会成为其中的一个问题。用Python或C处理这些矩阵可能会很麻烦,因为此时它们会变成多维数组。

Octave/MATLAB(MATrix实验室)在设计时考虑到了矩阵数学,因此变得非常简单。为了证明这一点,让我们制作一个正弦波I及其Q分量。可以将以下代码手动键入到命令行中:

从这一小段代码中,我们可以生成任何频率的正弦波。但是这不是I/Q数据,因此我们需要进行一些修改。注意复数的“j”符号:

程序运行结果如下:

在这一点上,如果我们希望将该波形为原波形的½:iqsinehalf=iqsine/2。你看,就是数学语言的力量。自己生成信号的数学过程很有趣,但Octave提供了一系列惊人的工具来辅助波形的生成/调制。例如,在通信程序包中,有一个“fmmod”命令,您可能已经通过标题名称猜到了,它将提供FM调制。

信号包还提供滤波器和测量工具,例如FFT和光谱仪。如果您希望此软件包与SDR一起用于波形研究和开发,则很难找到功能更强大的程序了。如果您还没有以Octave出售产品的能力,请在进行ASK演示时思考这个问题:在哪里可以从TX播放波形文件?

五、幅度键控(ASK)

在最简单的无线电设备中,ASK是一种常见的编码技术,其中一个示例就是您的车库门钥匙扣。ASK仅从单个波形中就理解和阅读。数据1101 0010在下面进行了编码,一个用音调表示,一个用音调缺失表示为零。

可以看出,这是一种非常简单的技术。另外,由于该技术通常在免许可频段中使用,因此可以使其成为传输示例的典型例子。重要提示:请注意,尽管866MHz频率在英国是免费许可的,但这不是通用的,可能需要更改示例以遵守当地法规【这里是直译的原文】。在欧洲,此频段内的发射功率最大,因此,与其他示例一样,删除任何高增益天线,并在不确定时考虑使用环回或电缆。此时,加载“ASK.m”文件并根据您的安装过程,您可能需要在示例中添加一行代码:

在“pkg load communications”行之后,添加“pkg load limesdr”。然后,在运行示例时,您应该获得以下波形。您还可以通过代码“useLimeSDR = false;”,设置为不使用LimeSDR的情况下进行测试。

六、还是一个黑盒子

我听到你在尖叫,但我还是不知道发生了什么事!好吧,让我们现在看看后台的情况。我们可以在《LimeSDR官方系列教程(三):一个实际测试例子》中了解到一个文件“.ini”。如果我们查看.m文件,则可以看到该文件被调用并作为“LimeLoadConfig”的变量传递。那么我们如何更改设置呢?很简单,在LimeSuiteGUI中打开.ini并进行调整,就像我们对self-test.ini进行更改一样(不完全相同,因为我们破坏了该批次中的所有内容!)更改TX采样率和滤波器应该完全相同,正如我们之前所做的那样,这就是我们要从头开始进行后台工作的原因。到目前为止,这些示例已在Windows环境中运行。Octave对程序的支持在某种程度上是实验性的,在解决问题之前,可能会遇到一些问题。在Linux下运行时就会出现这种情况,我们可以接收但不能发送。请注意,在运行示例之后,将创建大量变量。看看这些有趣的东西,比如iqDataTx和iqDataTxo,后者是第一个的过采样版本。过采样是一个好主意,因为它减少了混叠的可能性,它使混叠远离基波,从而降低了TX路径中对滤波的要求。

查看Octave示例,我们可以将代码分为几部分:

变量和波形创建

Lime启动控制

接收波形

Lime关闭控制

所有的其他代码都与处理数据相关联以实现图形/可读性。这里的关键控件是启动(包括发送方法)和接收(包括如何接收)。请注意,如果只希望发送波形,则有一个“LimeTransmitSamples”命令,其作用类似于接收命令。

七、本文小结

我们已经测试了从LimeSDR接收甚至传输的另一种方法。我们还为DSP和SDR的“软件”部分介绍了非常强大的工具。通过使用此软件,它可以为无线电的硬件和软件部分之间架起桥梁,因为我们可以看到.ini文件被硬件使用。下一个教程《LimeSDR官方系列教程(六):使用Pothos和GNU Radio接收ASK/OOK信号》中,我们将尝试通过LimeSDR进行更多的传输实验,但希望没有太多的编码或数学运算,尽管我们没有做出任何承诺。

八、有用链接和联系方式

https://myriadrf.org/news/limesdr-made-simple-part-5-putting-software-sdr/

淘宝店铺、QQ技术交流群、微信公众号、哔哩哔哩、CSDN联系方式如下:

LimeSDR官方系列教程(五):SDR的软件相关推荐

  1. 米思齐(Mixly)图形化系列教程(五)-if……else……与逻辑运算

    目录 比较运算 逻辑运算符 if esle 说明 例子 if程序的嵌套 例子 教程导航 联系我们 比较运算和逻辑运算返回两种结果,条件成立(真true)与不成立(假false) 比较运算 下表显示了支 ...

  2. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    C#微信公众号开发系列教程五(接收事件推送与消息排重) 原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续 ...

  3. Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  4. SpringCloud系列教程(五)之SpringCloud Gateway 网关聚合开发文档 swagger knife4j 和登录权限统一验证【Hoxton版】

    阅读提醒: 本文面向的是有一定springboot基础者 本次教程使用的Spring Cloud Hoxton RELEASE版本 由于knife4j比swagger更加友好,所以本文集成knife4 ...

  5. 汇川技术小型PLC梯形图编程系列教程(二):AutoShop软件使用技巧介绍

    原文链接:汇川技术小型PLC梯形图编程系列教程(二):AutoShop软件使用技巧介绍 俗话说的好,磨刀不误砍柴工.这里的刀指的是准备工作:手册+熟练使用软件(掌握一些技巧).所以本篇为大家简单介绍一 ...

  6. TWEN-ASR ONE 语音识别系列教程(3)--- 软件定时器和串口使用

    TWEN-ASR ONE 语音识别系列教程(3)- 软件定时器和串口使用 提示:作者使用 TWEN-ASR ONE V1.0开发板进行开发学习. 文章目录 前言 一.软件定时器的使用与测试 1.1软件 ...

  7. ClickHouse 系列教程五:多种连接方法

    文章目录 clickhouse-client HTTP 接口 JDBC Python接口 ClickHouse系列教程: ClickHouse系列教程 clickhouse-client 你可以通过c ...

  8. asp.NET自定义服务器控件内部细节系列教程五

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  9. ASP .NET Core Web Razor Pages系列教程五:更新Razor Pages页面

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  10. Unity3D脚本中文系列教程(五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...

最新文章

  1. java大string排序_java中字符串排序,String 转化为int比较大小
  2. ubuntu20.04下安装Docker和NVIDIA Container Toolkit教程
  3. 弱网环境测试-Charles学习
  4. Openvswitch手册(5): VLAN and Bonding
  5. 带有无参数的存储过程
  6. 一份所有中国人都应该听的歌单,你听过几首?
  7. Linux根文件组织架构
  8. 程序员提升工作效率和质量工具
  9. 从在浏览器中输入URL到页面渲染出来的完整过程是怎样的?
  10. 蓝桥杯 ALGO-129 算法训练 特殊的数字四十
  11. java在线播放_Java实现视频在线播放flv视频
  12. java jsp乱码怎么解决_Java/JSP中文乱码问题解决心得
  13. BOOT.BIN文件
  14. excel多个表格数据汇总怎么做?
  15. 聊一聊Java中的线程中断
  16. 使用BasicExcel操作Excel
  17. Unity【SwitchableObject】- 实现一个物体开关控制系统
  18. linux的./configure --prefix的作用
  19. c语言编程函数名:b开头
  20. 果蔬超市管理系统的设计与实现

热门文章

  1. pdfjs转图片_PDF转图片,PDF转JPG/PNG,完全由JS实现-阿里云开发者社区
  2. 在线教育十字路口:新东方遭危机 YY欲成颠覆者
  3. 小家电企业坐上“过山车”,是谁浇灭了年轻人的热情?
  4. vue tinymce安装及使用
  5. skimage.exposure.rescale_intensity
  6. Word文档 公式换行 小技巧
  7. OLD:用于单变量和多变量异常值检测的SPSS宏
  8. android访问服务器405,android
  9. 云闪付华为P9指纹_华为云闪付app下载-华为云闪付 安卓版v9.0.11.324-pc6手机下载...
  10. arcgis剔除异常值栅格计算器_arcgis 栅格计算器(Spatial Analyst/Raster Calculator)