LimeSDR官方系列教程(五):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进行更多的传输实验,但希望没有太多的编码或数学运算,尽管我们没有做出任何承诺。

八、有用链接

LimeSDR Made Simple Part 5: Putting Software in SDR – MyriadRF

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值