1、GNU Radio介绍
1.1 什么是 GNU Radio?
GNU Radio 是一个自由的开源软件开发工具包,它提供信号处理块来实现软件无线电。它可以与现成的低成本外部RF硬件一起使用,以创建软件定义的无线电,或者在类似仿真的环境中无需硬件。它广泛用于研究、工业、学术界、政府和业余爱好者环境,以支持无线通信研究和现实世界的无线电系统。
下面显示了 GNU Radio Companion(GRC) 可视化编辑器中的一个示例流程图:
GNU Radio 是一个框架,使用户能够设计、模拟和部署功能强大的真实无线电系统。它是一个高度模块化的、面向“流程图”的框架,带有一个全面的处理模块库,可以很容易地组合成复杂的信号处理应用程序。GNU Radio已被用于大量现实世界的无线电应用,包括音频处理,移动通信,跟踪卫星,雷达系统,GSM网络,数字无线电Mondiale等等 - 所有这些都在计算机软件中。它本身不是与任何特定硬件通信的解决方案。它也不为特定的无线电通信标准(例如,802.11,ZigBee,LTE等)提供开箱即用的应用程序,但它可以(并且已经)用于开发基本上任何频段限制通信标准的实现。
GNU Radio 带有大量现有的块。这些块都可以在块文档中找到(Category:Block Docs - GNU Radio)。只是为了给你一个标准安装中可用内容的一小部分摘录,以下是一些最受欢迎的块类别及其一些成员:
² Waveform Generators波形发生器
² Modulators 调制器
² Instrumentation (i.e., GUIs) 仪器仪表(即 GUI)
² Math Operators 数学运算
² Channel Models 频道模型
² Filters Expand滤波器
² Fourier Analysis 傅里叶分析
使用这些模块,只需将适当的模块连接到信号处理流程图,即可完成许多标准任务,例如归一化信号、同步、测量和可视化。
此外,您可以编写自己的块,以提供新功能和一些逻辑。
因此,GNU Radio主要是用于开发信号处理块及其交互的框架。它带有一个广泛的标准块库,并且开发人员可以基于许多可用的系统进行构建。然而,GNU Radio 本身并不是准备做一些特定事情的软件——用户的工作是从中构建一些有用的东西,尽管它已经提供了许多有用的工作示例。将其视为一组构建基块。
1.2 GNU Radio安装
Ubuntu 22.04 | sudo apt-get install gnuradio | v3.10.1.1 |
Ubuntu 20.04 | sudo add-apt-repository ppa:gnuradio/gnuradio-releases sudo apt-get update sudo apt-get install gnuradio python3-packaging | v3.10.5.0 |
Windows | Install the latest Radioconda installer Launch "GNU Radio Companion" from the Start menu | v3.10.5.1 |
macOS | brew install gnuradio | v3.10.5.1 |
其它安装方式参考InstallingGR - GNU Radio,也可以安装DragonOS系统,上面自带GNU Radio Companion 软件
1.3 创建第一个流图
(实验A01_sineWaveFlowgraph.grc)
GNU Radio Companion (GRC) 是一个用于创建和运行流程图的可视化编辑器。GRC使用.grc文件,然后将其转换为Python.py流程图。
打开GRC软件,双击选项块并通过编辑Id和Title来命名流程图(其中,Id是流图和python文件的文件名,也可以理解为项目名称,如sineWaveFlowgraph.py,Title是对流程图的描述)
搜索并添加Blocks
GNU Radio 带有一个信号处理块库。可以使用右侧的箭头浏览块。也可以使用 CTRL + F 或通过点击放大镜来搜索块,将搜索到的block拖拽到工作区。
将 Signal Source,Throttle, QT GUI Frequency Sink(频域) , QT GUI Time Sink(时域) 等块拖进工作区如下:
这些块需要连接。红色文本表示块仍有需要连接的输入或输出,然后才能运行流图。连接合理的块文本从红色变为黑色。
运行结果如下
最后,存储下两个文件,第一个文件是sineWaveGRC.grc,包含用于在GRC中显示流程图的信息。第二个文件是 sineWaveFlowgraph.py,包含实际的Python流程图代码。