GNU Radio教程1

一、介绍GNU radio

3.你的第一个流程图(Flowgraph)

3.1开始GNU Radio图形化界面GRC

    GRC是一个创建流程图的可视化编辑器(visual editor),GRC中形成.grc文件,该文件随后被翻译为python文件。

通过CRTL+ALT+T或者在桌面右击鼠标打开终端。

在终端输入:gnuradio-companion

双击Options块并通过编辑Id和Title来命名流程图:

Id是 Python 流程图的文件名。将其命名为sineWaveFlowgraph.py。Title是对流程图的描述。单击确定以保存更改。

单击文件:保存GRC 流程图。

输入sineWaveGRC.grc作为.grc文件的名称,以将其与.py流程图区分开来。

信号源块文本从红色变为黑色。红色文本表示一个块仍有一个输入或输出需要连接,然后才能运行流程图。

打开文件浏览器。有两个文件。第一个文件是sineWaveGRC.grc,包含在 GRC 中显示流程图的信息。第二个文件是sineWaveFlowgraph.py,包含实际的 Python 流程图代码。

要点:

1. Options块并通过编辑Id和Title来命名流程图,ID是python文件名称,title描述该流程图特点。

2. 信号源模块文本从红色变为黑色。红色文本表示一个块仍有一个输入或输出需要连接,然后才能运行流程图。

3.run之后保存有两个文件.grc文件描述GRC里的流程图信息;.py文件是实际运行的python代码。

二、流程图基础

1.GRC中的python变量

本节描述了如何在GRC中使用python数据类型,和这些如何显示。

1.1CRC中的浮点数和整数

GRC使用python数据类型表示数字,在python中数字可以被表示为整数或浮点数:

整数可以被转换为浮点数通过float();同理,浮点数也可以被转换为整数int()。

GRC中数据类型转换可以在variable块中完成:

数字被转换为整数:

GRC 显示数字的方式与 Python 不同。例如,将samp_rate块添加到新流程图中。

samp_rate的值为32000但GRC 显示的值为32k。GRC 将所有数字转换为 SI 单位(国际单位制)。请注意,GRC可能以不同于 Python 中表示的格式显示数字。

再举一个例子,将一个新变量拖放到工作区中。双击编辑属性:

1.2GRC中的字符串

Python 使用单引号 ' 和双引号 " 来包含字符串:

1.3GRC中的列表和元组:

GRC 中的变量可以使用 Python 列表:

GRC 中的变量可以使用 Python 元组:

1.3list comprehension

list comprehension可以被用来在variable块中写函数,list comprehension用来遍历一个list。

1.4GRC中块的属性颜色

在编辑一个块的属性时GRC使用一个颜色方案来代表不同的数据类型,QT Frequency Sink块的属性如下:

属性中有橙色,绿色和紫色,每个颜色代表一种数据类型:

浮点数:橙色

整数:绿色

字符串:紫色

变量块的属性中没有颜色,因为它们可以代表任何一种数据类型。

2.流程图中的变量

要点:1.块的属性设置时可以设置为variable块,

      2.variable块的value可以是变量表达式;

总的来说,GRC中的块是一个函数,且GRC中块的value的选取服从python语法规则。

3.GRC运行时更新变量的值

3.1QT GUI Range

Gnu radio模块库中附带QT GUI组件,这些组件允许在GRC流图运行时进行变量的修改,QT GUI Range创建一个银条用来拖动去更新一个变量

QT GUI Range像一个变量块一样工作,需要设置QT GUI Range的默认参数。双击QT GUI Range块以编辑属性。QT GUI Range块将替换频率变量,因此首先将Id字段更改为frequency。

默认值是流程图启动时的值。将默认值设置为 0。开始和停止是滑块的开始和停止值。输入-samp_rate/2作为起始值,输入 samp_rate/ 2作为停止值。Step值是滑块的分辨率。在本例中,步长设置为 100 Hz:

3.2 QT GUI Chooser

QT GUI选择器为变量创建一个选项下拉菜单。导航块库:Core、GUI Widgets、QT ,然后将QT GUI Chooser拖放到工作区中。

4.信号数据类型

要点:1.每个模块的输入输出端口都有特点的颜色标记,不同的颜色表示不同的数据类型,可以通过点击GRC工具栏中的help-types来查看每种颜色代表的数据类型;

2.复数:以32位复浮点数为例,用32比特浮点数表示实部,32比特浮点数表示虚部

sign1实部,sign2虚部

3.整个数据流的数据类型需要一致(如果不同需要加入转换模块);

5.数据类型转换

要点:1.char\byte数据类型是另一种常用的,byte用紫色表示,并标记为integer 8

      2.convert模块支持数据类型转换。

6.比特打包

6.1

将bit打包为byte数据在表示二进制数据或一些场景下很常用,比如星座调制,GFSK调制以及OFDM发射器

点击随机信号源模块,按up或down键可以选择输出数据类型,当输出颜色位紫色时,为byte数据类型。

随机信号源输出的最小数为Minimum,最大值为Maximum-1,所以此例中输出0,1。

Pack k bits用来将数据平行化或者比特打包为单个byte表示更大的二进制数字。

6.2解释packing K bits Block

随机源输出byte类型数据,且有效值为0和1所以有效位为最低位LSB,pack k bits模块按输入的先后顺序(从最低有效位开始)存储并打包,因为该模块输出类型为byte且打包4位,所以最高4位补零,低四位是有效位。

6.3解包

解包过程为反过程。

将QT GUI直方图的输入数据数量改为2

可以看到两个数据完全重合。

7.streams和vectors

GNU Radio 中的块可以使用流或向量连接。一个流为每个时间点携带 1 个样本。流产生序列化数据。流必须具有数据类型,例如Float 32或Byte。

向量在每个时间点中携带多个样本。并行表示数据的向量。流表示每个时间实例的标量。一个向量表示每个时间实例的一个数组。

GRC 使用较浅的颜色来表示流,使用较深的颜色来表示向量输出:

流转换为向量:

向量转换为流:

注意块的名称,streams 、stream

8.hier 块和参数

本节介绍如何创建封装块hier blocks(或者说,层次块hierarchical block)

8.1创建最初的流图

更新QT GUI RANGE 和低通滤波器的属性;

8.2创建封装块(频移块)

点击并选中上述两个模块且包括连线;

在选择的区域单击右键选择more-creat hier

然后便会自动创建一个新GRC界面

双击options块编辑属性:

Generate Options函数的输出类型选项

Category会自动改变;

类别是可以在 GRC 右侧的模块库中找到块的位置。hier 块将位于GRC Hier Blocks下,而不是其余 GNU Radio 块所在的 Core 。
8.3参数VS变量

变量是函数内部的值,参数用以接收传入函数的值;以hier块为例,变量只存在于函数内部,可在函数内部修改其值,参数用于接受外部源的数据。

在这个例子中,只有将samp_rate由变量转换为参数才能够在别的GRC流程图中调用这个模块时改变输入参数值。

8.4输入输出端口

Pad被用来指定hier模块的输入输出端口,所以在流程图中需要添加一个pad source和一个pad sink用来指定输入输出端口。

8.5生成hier模块代码

做完上述的工作之后就可以生成hier模块代码了,点击generate the flow graph来生成代码;

对于 GNU Radio v3.8,将在您的主目录中生成一个 Python .py文件和 YAML .yml文件

对于 GNU Radio v3.10,文件将在保存.grc文件的目录中创建。请创建.grc_gnuradio目录并在那里复制.py和.yml文件:

8.6使用hier模块

现在可以在流程图中使用hier块。返回起始流程图并删除Signal Source和Multiply块:

将移频器模块添加到工作区并将其连接到流程图的其余部分:

8.7删除hier块

  • 10
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
GNU Radio书》是一本介绍了GNU Radio软件框架的指南。GNU Radio是一个开源的信号处理工具包,可用于开发和实现软件定义无线电(SDR)系统。该书通过详细讲解GNU Radio的核心概念、基本原理和应用范例,为读者提供了一个全面的了解GNU Radio的手册。 这本书首先介绍了GNU Radio的背景和特点,包括其在无线电和通信领域中的应用。然后,它详细讲解了GNU Radio的体系结构和组件,如信号流图、块、连接和消息传递系统,使读者能够理解GNU Radio的工作原理。 接下来,该书通过一系列实例和案例,教读者如何使用GNU Radio进行信号处理和调试。它讲解了如何创建各种信号处理流程,如调制、解调、滤波和解码等。此外,它还介绍了如何使用GNU Radio进行频谱分析、频偏测量和通信系统模拟等高级功能。 此外,该书还涵盖了GNU Radio的一些高级主题,如性能优化、并行处理和硬件加速技术。它介绍了GNU Radio的各种工具和库,如信号生成器、信号分析器和信号源,以及如何使用它们进行开发和调试。 总体而言,这本书是一本全面介绍GNU Radio的指南,适合那些对无线电和通信领域感兴趣的读者。它通过简明易懂的语言和实例,帮助读者了解GNU Radio的基本原理和应用,为读者进一步探索SDR系统提供了坚实的基础。无论是对于学术研究者、工程师还是无线电爱好者,这本书都是一本值得阅读的指南。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值