400-007-3336
usrp_support@tnm-corad.com.cn

GNU Radio流程图编程

开始了解GRC

        我们已经知道GNU Radio是一个各种信号处理模块的“容器”。在这里,我们将从一个简单的例子讲起,展示如何使用GNU Radio Companion(GRC).我们需要清楚的是,GRC是允许我们创建Python文件图形的,不过流程图的方式更加简化了GNU Radio的使用。

        首先我们来看一下GNU Radio Companion的界面。它包括4个区域:模块库、工具栏、函数输出窗口和工作区域。

        学会一个东西最好的方法就是亲自尝试,想到一个问题,然后自己找出答案。大家可以首先在界面摸索,打开GRC的方式,在终端输入命令:

gnuradio-companion


找到自己需要的模块

        在右边的模块库里面有各种不同类型的信号处理模块,包括了GNU Radio的标准模块和我们初始化的模块。怎样快速的找到我们自己需要的模块呢?假设我们需要一个产生信号的模块,我们可以看到有一个叫做Waveform Generator的类型,打开就可以看到各种产生信号的模块了。那么假设我们需要一个展示波形图,但是又不确定哪种模块是效果最好的,又怎么办呢?我们在上一章节知道,有一个叫sink的类型,但是右边并没有发现sink的类型。这个时候我们就需要使用搜索的功能了,按Ctrl+f,或者点击搜索按钮,然后输入模块的关键字sink,我们可以看到很多关于sink的模块了:

现在让我们添加一个叫QT GUI Time Sink的模块。我们可以通过双击或拖动的方式。

修改模块的参数

        工作区域里面包含各种信号处理模块和变量。我们双击打开模块,设置它的参数属性。如下图:

        在不同的应用系统中,我们可能需要修改这些默认的参数。我们把原来的名字去掉,可以看到ID字样编程蓝色。这种颜色表明信息已经被修改,但是还没有保存。我们再尝试一下修改windows size为300,300,单击OK。然后我们可以看到尺寸的改变。然后,我们看到documentation:

        看用颜色标记的字段,我们知道ID用来确定python文件名字和相关类的名字。

        然后,我们删除掉ID里面的字符串,看到最底下出现了红色的报错信息,同时,ID也变成了红色,这样我们能够很方便的确定错误的所在。

        为了方便,我们取ID的名字为”tutorial_two_1”,同时将Generate Options改成”QT GUI”,因为我们采用的是QT GUI sink,而不是WX GUI sink,在最新版的GNU Radio,默认的是QT GUI.GRC是一个图形化的界面,它是基于python环境的。所以当我们执行一个流程图时,实际上我们真的运行的是一个python程序。ID是用来命名python文件名,与GRC文件保存在同样的路径下。默认情况下,ID是top_block,所以它创建一个为top_block.py的文件。更改ID使我们可以更改保存的文件名,以更好进行文件管理。

        这个GRC-Python连接另一个结果是,Python可以控制GRC的参数属性。事实上,所有的输入框属性或变量,我们使用时被解释为Python。这意味着我们可以使用Python调用设置属性,如调用NumPy或其他GNU Radio功能。这方面的一个常见用途是称为filter.firdes滤波器设计工具从GNU Radio建立我们的滤波器抽头。

        注意的另一个关键是接口不同的颜色。这些实际上对应于不同的数据类型,我们将在本教程后面稍后覆盖。


第一个信号流程图

        现在我们了解如何找到块,如何将它们添加到工作区,以及如何编辑块属性,我们尝试建立一个将信号输出到示波器的流程图,注意模块之间的数据类型的匹配:

        注意到有一个叫throttle block的模块:在本教程后面的更详细的解释是什么。现在,可以了解的是这个模块确保流程图不消耗100%的CPU周期,不然你的电脑可能反应不过来。

        在此之前,我们先来看一下工具栏。

        这里主要是一些流程图软件执行的一些命令,如新建,打开,保存等。让我们开始我们的流程图,我们给它取名叫做tutorial_two。这里有几个重要的工具,Generate flowgraph,excute flowgraph,分别是产生GRC,和运行GRC。在help里面的type,我们可以看到每种数据类型对应的颜色。


关于Generate Options设置

        Generate Options有两种常用的设置QT GUI和WX GUI。最常见的错误就是设置的Generate Options与实际我们用的不匹配。具体来讲,就是我们Generate Options设置的是QT GUI,但是我们构造的流程图却是WX GUI我们会的到如下的报错信息:

        反过来的话,也会得到类似的报错信息。所以,我们必须首先确定自己选用的是QT GUI还是WX GUI。


查看输出

        让我们点击Execute按钮启动程序,我们可以看到如下的波形:

        这是一个复数类型的波形。我们简单化一些,选用别的数据类型。关掉程序,我们打开Help-Type,可以看到如下的数据类型的代表颜色:

        在这里,我们基本上可以找到所有的数据类型。我们看到我们的流程图的接口是蓝色的,很明显这是32位浮点型组成复数形式,现在我们可以解释刚才输出有两个波形的情况了,Time Sink输入一个复数,然后输出它的实部和虚部。现在,我们尝试修改以下信号源的数据类型,将其改为浮点型,然后我们看到它的接口编程橘黄色的,当我们把它和Throttle Block连接时,看到有红色的报错,我们点击工具栏的红色的横杆,可以看到具体的报错信息:

        报错信息显示,数据长度不匹配。这是由于我们的数据类型不匹配的原因。GNU Radio不允许不同的数据类型之间直接连接。我们把所有的模块都改成浮点型的,然后再次运行,可以看到如下的波形:

        现在我们可以看到,只有一个波形输出了,我们可以尝试用鼠标放大或者缩小。


使用GNU Radio Companion

        现在我们已经能够创建自己的流图了,我们进一步的来学习一些GNU Radio Companion有关知识。

关于Throttle Block

        首先,我们来讨论下Throttle Block,之前在我们的流图有用到过。下图是添加Throttle 模块和不添加Throttle 模块的CPU的使用率对比:

        我们可以看到,当流图没有连接硬件也没有连接Throttle 的时候,CPU基本是满负载运行的。在一个流图中我们只需要一个Throttle 就可以了,不管它是有几个输入输出。我们可以认为Throttle 起到限速的作用,设置高的速率,流图执行快,设置低的速率流图执行慢。打个比方,比如我们设置Throttle 为1e6,另一个设置1e3,我们可以看到CPU在1e6的情况下比1e3占用更多的资源。当有硬件连接的时候,我们不需要Throttle 模块,因为硬件本身已经对速率有了限制。

关于采样率

        我们已经知道硬件需要设定特定的采样率来实现某些特定的功能,现在我们来自己创建一个GRC,来看看不同的采样率之间有什么区别:

根据上图配置好参数:

QT GUI Chooser模块设置3个采样速率,ID改为samp_rate

所有的source模块的Sampling Rate改为samp_rate

音频模块改为48e3

所有的sink模块的sampling rate改为audio_rate

        在这里,我们可以看到没有Throttle 模块,这是因为这里有音频硬件。点击运行,设置sample rate为48e3,可以听到熟悉的电话的拨号音,再看一下fft,确实有两个分别为440Hz和350Hz的频段。

        尝试下,当改变sampling rate比audio sampling低的时候,看能否还能听到拨号音。再尝试下,当改变sampling rate比audio sampling高的时候,看能否还能听到拨号音。正常的话,应该听不到拨号音,因为声卡的速率和我们采样的速率不匹配。所以,任何时候,都应该设置正确的采样率。


瀑布图

        现在来看一个由probe,soundcard以及QT Sink模块组成的正弦信号瀑布图:

        请参考上图设置好参数,另外,必须注意的是Audio Sink的Sample Rate。设置好后,点击运行,可以看到:


总结

        现在我们应该知道流图的基本原理,能有找到自己需要的信号处理模块,正确的设置采样率。如何发现并定位错误,怎样设置相应的数据类型,用户可以自己动手,多多尝试,这样就能够比较快的上手GRC了。

SDR软件
RFNoC
UHD
GNU Radio
LabVIEW
MATLAB & SIMULINK
OpenBTS
OpenAirInterface (OAI)
srsLTE
gqrx
关于我们
联系我们
关于CORAD
关于Ettus
产品介绍
USRP X系列
USRP 网口系列
USRP USB接口系列
USRP嵌入式系列
射频子板
天线
线缆
附件
其他服务
TNM网站
公司新闻
行业动态
入门培训
GNU Radio培训
Visual Studio开发环境配置
硬件安装指导
关注我们
版权信息
USRP中文官方网(ettus.com.cn)所发布展示的“产品信息”,“培训资料”版权归USRP中文官方网所有和发布企业所有,任何收集本站产品信息并未经USRP中文官方网许可,USRP中文官方网将保留追究侵权者法律责任的权利。

粤ICP备 06126740-7号 © Copyright 2015.Corad All rights reserved. ettus.com.cn