本文的目标:

(1)使用GNU Radio的标准模块来创建流图GRC程序

(2)学习如何在GRC的模块之间调试、解决问题

(3)理解GRC中的采样模块和限流模块的作用

(4)学习如何使用GNU Radio的文档来理解模块的功能

需要具备的基础知识:

(1)关于git的一些基础知识

(2)安装好GNU Radio 3.7或3.8或更新的版本

(3)GNU Radio系列教程(二):初级篇之GNU Radio介绍

目录

一、开始理解什么是GRC

二、GRC的基本操作方法

1、搜索模块

2、修改模块的属性

3、搭建第一个GRC流图

三、有用链接和联系方式


本文讲解视频:https://www.bilibili.com/video/BV1z5411H7ZT

一、开始理解什么是GRC

在https://blog.csdn.net/OpenSourceSDR/article/details/107509776中,我们已经看到与通用的射频前端配合,GNU Radio包含了许多通信组件模块,是一个可以用来研发无线通信系统的集成工具库。在本文中,我们将介绍如何使用GRC(gnuradio-companion的简写,GNU Radio的图形化界面编程工具,类似于simulink)来创建不同的通信程序。简单来说,GRC是一种帮助我们用图形化的形式来创建python脚本程序的工具。

首先,看一下GRC的主界面。主界面包括五个部分:

(1)界面右侧的GNU Radio的模块库,用于调用已集成到GRC中的模块

(2)GRC的工具栏,用于GRC程序的打开、创建、编译、执行等操作

(3)GRC的终端,用于显示GRC程序,将模块拖拽到此处,用线将不同的模块连接起来,形成通信程序。

(4)工作空间,用于显示GRC程序运行过程中的调试信息

(5)变量,用于显示GRC程序中的变量名称及其数值

本文为了手把手教你如何使用GRC,建议你可以在阅读的同时,能够停下来做一些实践,例如新建一个文档、拖拽模块,不同模块之间连线,等等。学习GNU Radio的最好的方法就是多动手、多实践。碰到问题,在“工作空间”中查看错误信息,寻找解决方法去尝试解决问题。首先,最简单的,就是如何打开GNU Radio的GRC,你需要在Ubuntu中打开一个终端(快捷键是同时按下,ctrl、alt和字母t三个按键),然后输入以下命令后点击回车键,

gnuradio-companion

如果这样操作,你无法正常打开GRC,那么可能你的GNU Radio安装有些问题。

二、GRC的基本操作方法

1、搜索模块

GNU Radio中已包含了通信系统中的常见模块,如何我们要搜索我们想要的模块,我们可以同时按下ctrl和f按键,然后输入你要找的模块的关键字(当然,前提是你知道你要找的模块的名字,例如你是要找一个信号源source,还是一个调制模块modulation),

例如,上图是搜索一个QT GUI Time Sink模块,我们在搜索栏输入sink即可。然后找到你需要的模块,双击该模块或者拖住这个模块到终端界面中松开,都可以把模块添加到终端界面中。

2、修改模块的属性

要想修改模块的属性参数,我们双击这个模块,就会弹出来该模块的属性界面。在每一个新建的GRC程序中,都会有一个默认的模块,叫做“Option”模块,其双属性参数如下图所示。

这里的参数,当你修改了参数的值之后,在你未保存之前,参数栏的颜色会变成蓝色。关于该模块的解释说明,可以查看”Documentation”选项卡。

为了更好的区分不同程序,你可以把每个程序的“Option”模块的ID参数,修改为不同的值,例如“tutorial_two_1”,你可以根据自己的需要来命名。这个ID的参数,会决定你生成的python脚本的名称。即如果你的ID是“tutorial_two_1”,那么生成的Python脚本的名字就是“tutorial_two_1.py”。在GNU Radio 3.8中,如果你不修改ID的默认值,当你运行GRC流图的时候,则会提示错误。

注意“Generate Options”参数的取值,例如,如果你选择的是QT GUI,那么你的界面就应该用“QT GUI Time Sink”,不能用“WX Time Sink”,否则就会提示错误。

3、搭建第一个GRC流图

根据上图搭建一个最简单的信号频域展示的流图,其中“Signal Source”模块是信号源模块,在本例子中用于生成频率为1kHz、幅度为1、相位偏差为0的余弦信号,“Throttle”模块用于在纯仿真流图中是为了避免这个流图消耗过多的电脑CPU,“QT GUI Time Sink”模块是用于展示信号的时域波形的模块。编译上述流图,会在你的流图所在路径下生成一个python脚本文件,点击运行按钮,则会执行该流图,出现以下的波形界面。

点击GRC界面菜单栏中的“Help”菜单下的“Type”,你会打开以下界面,

该界面给出了在GRC流图中常用的数据类型,例如在本例流图中使用的“Complex Float 32”,是指一个复数(包括实部和虚部)的浮点型32位的数据类型,且在不同的模块之间的数据共享(Out和In)中,是用蓝色表示的。在流图运行之后的界面中,我们也发现存在两条线,分别表示实部和虚部数据。

如果我们把“Signal Source”模块的数据类型从“Complex Float 32”修改为“Float 32”(具体修改方法为,你双击这个模块,然后找到“Output Type”,选择“Float 32”),修改后,你会发现“Signal Source”模块的“Out”这里变成了橙色的。并且会看到提示错误信息,提醒你两个模块之间的数据类型不一致。

解决方法就是,你需要将“Throttle”和“QT GUI Time Sink”模块的数据类型都统一修改为“Float 32”类型的。修改完只有,再重新编译运行流图,就可以得到如下的图形,你会发现这时只有一条曲线,这是实部的曲线。

4、一个稍微复杂一点的GRC流图

上述简单的流图构建之后,我们搭建一个稍微复杂一点的GRC流图,

这个流图中,多出来了三个模块,“QT GUI Tab Wdget”、“QT GUI Range”和“QT GUI Frequency Sink”,“QT GUI Tab Wdget”和“QT GUI Range”这两个模块结合起来可以让采样率在一定的范围内调整。在显示界面中可以通过拖动滑动条来调整。“QT GUI Frequency Sink”模块用于显示信号的频域波形。

三、有用链接和联系方式

https://wiki.gnuradio.org/index.php/Guided_Tutorial_GRC

淘宝店铺、QQ技术交流群、CSDN账号联系方式如下:

GNU Radio系列教程(三):初级篇之GNU Radio GRC流图相关推荐

  1. GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调

    本文讲解视频:https://www.bilibili.com/video/BV1J54y147GQ 在本文中,我们将进行纯仿真实验,不使用任何硬件设备.但是,我们会考虑无线信号在实际信道传输过程中所 ...

  2. eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...

  3. TextSeek使用教程(初级篇) - 文件搜索软件

    TextSeek使用教程 (初级篇) 下载安装 搜索初体验 挖掘搜索结果 预览文档内容 软件主要特点 最后 TextSeek使用教程 (初级篇) 随着大家收集整理的文档日益增加,越来越多的文件难以管理 ...

  4. ASP.NET 5系列教程(七)完结篇-解读代码

     在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...

  5. ES6系列教程第四篇--asyn详解

    一.什么是async async其实是ES7的才有的关键字,放在这里说,其实是和我们前面所说的Promise,Generator有很大关联的.async的意思是"异步",顾名思义是 ...

  6. OpenCV学习系列教程第五篇:测试和提高代码的效率

    Opencv-Python学习系列教程第五篇 来自opencv-python官方学习文档,本人谨做翻译和注释,以及一些自己的理解 本文由作者翻译并进行代码验证,转载请注明出处~ 官方文档请参阅:htt ...

  7. Fastify 系列教程三 (验证、序列化和生命周期)

    Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) Fastify ...

  8. 汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍

    原文链接:汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍 PLC的定义 可编程逻辑控制器是种专门为在工业环境下应用而设计的数字运算操作电子系统.它采用一种可编程的存储器,在其 ...

  9. 树莓派4B系列教程三 :优化配置

    树莓派4B系列教程三 :优化配置 写在前面 树莓派4B内存增加 CPU温度控制 显存优化 Chromuim缓存转移 优化自启程序 Chromium插件安装 离线安装插件时遇到的问题 结语 写在前面 不 ...

最新文章

  1. 医学院计算机社发展,医学院计算机教学创新思路.docx
  2. 统一建模语言(UML)介绍
  3. write up杂项:眼见非实(ISCCCTF)
  4. gitlab bash_如何编写Bash一线式以克隆和管理GitHub和GitLab存储库
  5. 极狐(GitLab)宣布获数亿元A轮融资,将加速推动中国开源DevOps生态
  6. python爬silverlight_Python创建Silverlight控件编写过程经验分享
  7. Mybatis中Mapper映射文件详解(默认值)
  8. 7-12 藏头诗 (15 分)
  9. android MySQL servlet_使用MySQL和Servlet编写Android接口样例
  10. STK与VC++ 6.0联合编程
  11. 我国街景地图向何处去
  12. 我是猫,一只特立独行的猫
  13. root高级权限怎么弄,怎样拥有root权限
  14. 【python常用小工具】python打印26个英文字母
  15. 35个非常出彩的 Flash 网站作品欣赏
  16. 金蝶云星空和钉钉接口打通对接实战
  17. Linux系统下C语言实现遍历该目录下所有文件
  18. 最完整的Windows系统安装教程(Win7、Win10、Win11)
  19. Win10 家庭版 升级至 专业版
  20. 奶牛专题2:奶牛晒衣服

热门文章

  1. Java的synchronized的使用_Java synchronized的使用
  2. redis rdb文件恢复数据注意、踩坑
  3. 7-35 有理数均值 分数 20
  4. 基于51单片机的贪吃蛇小程序(8*8LED点阵实现)by_jy
  5. Python 爬虫 | 获取股票基本面数据
  6. 利用pyecharts对职位数据进行地图可视化
  7. 国内首例!违反 GPL 协议致侵权,被判赔偿 50 万元
  8. 用Python对我们自己标注的数据集转化为YOLO训练需要的txt文件
  9. android硬件加速导致绘制,Android中的硬件加速
  10. 联想-thinkbook-有线网卡故障和有线网卡故障-修改方法