1、GNU Radio 是什么

GNU Radio 是一个免费、开源的软件开发工具包,通过提供信号处理 “块” 以帮助开发者实施软件无线电。

它易于和一些低成本的RF硬件外设一起使用,也可以纯模拟使用。

它广泛应用于研究、行业、学术界、政府和业余爱好者中,大大推动无线电技术的发展。

下面显示了 GNU Radio Companion 可视化编辑器中的示例流程图:

GNU Radio 是一个方便用户设计、仿真、及部署功能强大现实世界无线电系统的框架。

  • 它是高度模块化的,将各种信号处理功能做成丰富的 “块” 库;
  • 它具备面向 “流程图” 的设计模式,用户可像画流程图的方式,将 “块” 有序连起来,构成复杂的信号处理应用程序;

GNU Radio 已大量用于现实世界中,包括:音频处理、移动通信、卫星跟踪、雷达系统、GSM 网络、世界数字广播。

就其本身而言,GNU Radio 没有限制说只能和某一特定硬件配合使用,它也不提供特定无线电通信标准(例如:802.11,Zigbee,LTE...)的开箱即用服务,但它可以用于开发基本上任何频段的通信标准的实现。

2、我为什么要用 GNU Radio

以前,在开发无线电通信设备时,工程师必须开发一个特定的电路来检测、解码、编码、传输特定信号,并使用昂贵的设备进行调试。

使用软件无线电(SDR)进行模拟信号处理时,只需要准备一个模拟信号收集硬件(通用的),然后将模拟信号处理的工作全部放计算机上,这样就能省去准备和调试特定硬件电路所带来的苦恼。

特定硬件的工作省了,可是你准备每次遇到不同需求,就准备从头开始写计算机上的模拟信号处理逻辑了吗? 你准备从头开始编写为了方便调试的交互式 GUI 了吗? 你是不是在想 —— 这些工作能不能模块化、标准化?

哈哈,GNU Radio 就是你想要的计算机信号处理框架。它将功能包装在易于和可重复使用的 “块” 中,具备丰富的可扩展性,提供了广泛的标准算法库,并且针对各种通用平台进行了大量优化。它还带有大量示例,可让您快速入门。

本文的其余部分提供了 DSP 的简要介绍,如果您已经熟悉 DSP, 请随时跳到下一个教程。

3、数字信号处理

作为软件框架,GNU Radio 致力于数字化信号,以使用通用计算机生成通信功能。

3.1 一点信号理论

软件处理需要数字信号(计算机擅长处理数字),但是什么是数字信号?

为了更好的理解,让我们看一下一个常见的 “信号” 场景:录制语音、然后用手机进行传输 -->

人说话产生声音 “信号”,该信号由人的声带震动引起空气震动(形成空气气压波)产生的,气压值会随着时间变化:

当波到达麦克风时,它将变化的压力转换为电信号,即可变电压:

此时信号变成了电信号,模拟电路能处理它,但是计算机还不能处理(此时的电信号是模拟信号,计算机能处理数字信号(有限数量、有限时间)):

因此,我们需要对模拟信号进行采样(等时采样),如上图,我们用采样的一系列的点,代表模拟信号;每秒的采样数量,称为采样率。

  • 模拟量到数字量的过程称为 ADC(Analog-to-Digital Converter)
  • 数字量到模拟量的过程称为 DAC(Digital-to-Analog Converter)

现在我们有了一系列数字,我们的计算机可以对其进行任何操作。例如:数字滤波、压缩、识别等。

3.2 将数字信号处理应用于无线电传输

无线电波和声波原理类似:

信号(此处为电磁波)可以使用天线转换为变化的电压。

然后,该信号处于 “载波频率” 上,该频率通常是几兆赫甚至千兆赫。

4、基于流程图的模块化数字信号处理方法

当要处理数字信号,直接利用将各个处理阶段(过滤、校正、分析、检测... )设计成的处理块,可以使用简单的流程指示箭头进行连接:

当要建立信号处理应用程序时,需要建立完整的块图。这样的图在 GNU Radio 中称为流程图。

GNU Radio 是一个开发这些处理块并创建包含无线电处理应用程序的流程图的框架。

作为 GNU Radio 用户,您可以将现有块组合到一个高级流程图中,GNU Radio 将自动在这些块之间移动信号数据并在块中进行信号处理。

  • GNU Radio 提供大量的块,使用这些块能快速设计流程图来完成许多标准任务 —— 标准化、同步、测量和可视化。
  • GNU Radio 也支持用户自己设计块

因此,GNU Radio 主要是信号处理块及其交互作用开发的框架,它带有广泛的标准块库,开发人员可以构建许多可用系统。但是 GNU Radio 本身并不是准备做特定事情的软件 —— 尽管它已经附带了许多有用的工作示例。但是用户的工作就是从中构建有用的东西,可以将示例视为一组构建块。

本文视频

参考链接

[1]. What Is GNU Radio


: ** 如果觉得不错,帮忙点个支持哈~**

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio的更多相关文章

  1. [SDR] GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图

    目录 1.前言 2.启动 GNU Radio 3.新增块 4.运行 本文视频 参考链接 1.前言 本文将介绍如何在 GNU Radio 中创建和运行第一个流程图. 2.启动 GNU Radio GNU ...

  2. NGUI系列教程三

    接下来我们再来看Progress Bar和Slider,对比参数我们可以发现,Progress Bar和slider的明显区别在于slider多一个Thumb选项,这里的Thumb就是我们拖动的时候点 ...

  3. ASP.NET MVC3 系列教程 – 新的Layout布局系统

    原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...

  4. jquery系列教程6-ajax的应用全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  5. jquery系列教程3-DOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

  6. jquery系列教程1-选择器全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

  7. Linux系列教程(一)——Linux系统简介

    本系列教程将完整的讲解整个Linux相关的知识,这是楼主学完之后重新对Linux知识体系的整理.从最基础的知识开始,对于一个完全不懂Linux系统的人,相信在看完整个系列教程之后,都能对Linux有一 ...

  8. Part 4:表单和类视图--Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  9. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

随机推荐

  1. SAP MM- BAPI_PO_CHANGE 更新PO version 信息(version management)

    目的 Version 信息的Complated 字段,自动打勾 实例程序 *&--------------------------------------------------------- ...

  2. Pisa-Proxy 之 SQL 解析实践

    SQL 语句解析是一个重要且复杂的技术,数据库流量相关的 SQL 审计.读写分离.分片等功能都依赖于 SQL 解析,而 Pisa-Proxy 作为 Database Mesh 理念的一个实践,对数据库 ...

  3. 数仓的字符截取三胞胎:substrb、substr、substring

    摘要:下面就来给大家介绍这三个函数在字符截取时的一些用法与区别. 本文分享自华为云社区<GaussDB(DWS)中的字符截取三胞胎>,作者:我站在北方的天空下 . 在GaussDB(DWS ...

  4. leetcode题解#3:无重复字符的最长子串

    leetcode题解:无重复字符的最长子串 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb"输出: 3 解释 ...

  5. 【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示

    前言: MQTT广泛应用于工业物联网.智能家居.各类智能制造或各类自动化场景等.MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信.机器与物联网通信等. ...

  6. Tapdata Cloud 版本上新!新增TiDB等数据源支持,连接和任务功能增强,体验更优

    Tapdata Cloud cloud.tapdata.net Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持Oracle.MySQL.PG.SQL Server.Mongo ...

  7. 写出个灵活的系统竟然可以如此简单!小白也能写出高级的Java业务!

    一 最近正好公司里有个需求,一个短信业务接了多个第三方供应商,某些业务需要查询第三方供应商剩余的短信包数量去选择剩余量最多的渠道去批量发送.有些业务是指定了某个短信供应商,有些场景需要根据业务的值去动 ...

  8. 从入门到爱上Git

    时间不在于你拥有多少,而在于你怎样使用------时之沙 · 艾克 一.Git设置 1.1 Git全局设置 当我们安装好Git以后,我们需要对Git进行账号.邮箱的设置 设置用户信息 git conf ...

  9. java controller 异常捕获

    package com.aiyusheng.framework.exception; import lombok.Data; /** * base异常类 * @author :cza * @date ...

  10. 对 API 平台的再思考【eolink翻译】

    API 是推动现代企业数字化转型的基础.它不但连接了内部应用程序.合作伙伴和客户,同时也快速持续地向市场提供了各种新产品.版本和功能. 但当下还是以集中式的 API 交付为主.一个企业的对外 API ...