初级教程(2)流程图基础8-层次块和参数
8.层次块和参数
本教程介绍如何在 GRC 中创建层次块或层块。
之前的教程Streams 和 Vectors描述了Streams和Vectors之间的区别。下一个教程,创建您的第一个块,描述了如何使用嵌入式 Python 块在 GNU Radio 中创建一个信号处理块。
内容
创建初始流程图
层次块用作包装器以将多个 GNU Radio 块简化为单个块。示例层次块将是一个移频器块,它将信号源与输入信号相乘。

第一步是创建流程图。将以下块拖放到工作区中:
- 信号源
- 乘
- 噪声源
- 低通滤波器
- 风门
- QT GUI频率接收器
- QT 图形用户界面范围
连接块:

更新QT GUI 范围属性:
- ID:频率
- 默认值:0
- 开始:-samp_rate/2
- 停止:samp_rate/2
更新低通滤波器属性:
- 截止频率 (Hz):samp_rate/4
- 过渡宽度 (Hz):samp_rate/8
创建层次块
在工作区窗口中单击并拖动以选择Signal Source和Multiply块,包括它们之间的连接:

右键单击突出显示的块并选择More > Create Hier:

在新的 GRC 选项卡中创建流程图:

双击选项块并编辑属性:
- 编号:移频器
- 标题:移频器块
- 生成选项:层次块

其余属性将发生变化,显示类别:

Category是 GRC 右侧的块库中可以找到块的位置。hier 块将位于GRC Hier Blocks下,而不是其余 GNU Radio 块所在的 Core 。
保存流程图。
变量与参数
变量不同于GNU Radio 中的参数。参数为层次块创建一个接口以接受来自外部源的值,而变量仅存在于层次块内部:

例如,samp_rate变量只能从hier 块中访问:

samp_rate需要转换为参数,以便它可以从更大流程图中的另一个块更新。删除samp_rate变量并将参数块添加到 GRC 工作区中:

编辑参数属性:
- ID:samp_rate
- 标签:采样率
- 类型:浮动

添加第二个参数:
- ID:频率
- 标签:频率
- 类型:浮动

将频率参数添加到信号源频率属性:

流程图应如下所示:

输入和输出端口
焊盘用于指定层次块上的输入和输出端口。在流程图中添加Pad Source和Pad Sink作为输入和输出端口:

生成层次块代码
单击生成流程图以创建层次块源代码:

将创建 Python .py文件和 YAML .yml文件。对于 GNU Radio v3.8,文件将在您的主目录中创建:
/home/$USER/.grc_gnuradio/

对于 GNU Radio v3.10,文件将在保存.grc文件的目录中创建。请创建.grc_gnuradio目录并将.py和.yml文件复制到那里:
$ mkdir /home/$USER/.grc_gnuradio $ cp FrequencyShifter.block.yml /home/$USER/.grc_gnuradio/ $ cp FrequencyShifter.py /home/$USER/.grc_gnuradio/
GRC 需要先更新块的内部列表,然后才能在流程图中使用Frequency Shifter块。单击重新加载块按钮:

Core下面的块库中 新增了一个类别GRC Hier Blocks,Frequency Shifter Block可以在流程图中使用:


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

将Frequency Shifter Block添加到工作区并将其连接到流程图的其余部分:

通过添加samp_rate和频率变量来 编辑Frequency Shifter Block属性:

运行流程图将调出带有QT QUI Range滑块的QT GUI Frequency Sink窗口:

拖动频率滑块会将值传递给Frequency Shifter Block参数,从而修改信号的中心频率:

删除一个等级块
通过从/home/$USER/.grc_gnuradio
.
在终端中,移动到.grc_gnuradio
目录:
cd /home/$USER/.grc_gnuradio
然后删除文件。
警告!命令rm
不可撤销!
对于 GNU Radio v3.8,删除命令是:
rm FrequencyShifter.py FrequencyShifter.py.block.yml

对于 GNU Radio v3.10,删除命令是:
rm FrequencyShifter.py FrequencyShifter.block.yml
单击Reload Blocks按钮更新 GRC 的块内存,清除Frequency Shifter块:

GRC Hier Blocks类别被删除,只保留Core blocks:

下一个教程,创建您的第一个块,描述了如何使用嵌入式 Python 块在 GNU Radio 中创建一个信号处理块。