[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

1、GNU Radio 是什么

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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

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

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

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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 一点信号理论

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

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

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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

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

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

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

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

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

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

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

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

[SDR] 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 本身并不是准备做特定事情的软件 —— 尽管它已经附带了许多有用的工作示例。但是用户的工作就是从中构建有用的东西,可以将示例视为一组构建块。

本文视频

参考链接

[1]. What Is GNU Radio

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

[SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

Original: https://www.cnblogs.com/zjutlitao/p/16648432.html
Author: beautifulzzzz
Title: [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585644/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 微信双开

    1、新建TXT文档 2、右击微信,点击属性,查看目标,复制目标路径 然后在txt文档写下如下内容 TASKKILL /F /IM wechat.exestart “&#…

    Linux 2023年6月13日
    092
  • 高等代数: 2 行列式

    2 行列式 1、n个不同的自然数的一个全排列称为一个n元排列。 2、顺序、逆序、逆序数:τ(abcd…)(读音:tao)、奇排列、偶排列、对换(a,b) 3、定理1:对…

    Linux 2023年6月8日
    0151
  • Linux基础和命令

    Linux的哲学思想 优势 一切都是一个文件。(包括硬件,文本,二进制,源代 码) 系统中拥有小型,单一用途的程序。(一个程序只负责 做好自己的本职工作) 当遇到复杂任务,通过不同…

    Linux 2023年6月6日
    094
  • linux下man 指令衍生代号

    进入man指令的功能后,你可以按下『空格键』往下翻页,可以按下『q 』按键来离开man的环境。 上表中的1, 5, 8这三个号码特别重要,也请读者要将这三个数字所代表的意义背下来 …

    Linux 2023年6月8日
    0117
  • 关于VHDL中case语句多执行语句的书写方式(转载stackoverflow.com并做翻译汇总)

    很多国内的教材对于case语句的讲解非常单一,比如: 这会造成CASE语句”在一个条件下只能执行一条语句”的经典误解,在翻阅了一些资料后我在StackOve…

    Linux 2023年6月13日
    0113
  • 2021年1月-第02阶段-前端基础-HTML+CSS进阶-VS Code 软件

    软件安装 VSCode软件 能够安装 VS Code 能够熟练使用 VS Code 软件 能够安装 VS Code 最常用的插件 1. VS Code简介 1.1 VS Code …

    Linux 2023年6月8日
    090
  • 到底能不能用 join

    互联网上一直流传着各大公司的 MySQL 军规,其中关于 join 的描述,有些公司不推荐使用 join,而有些公司则规定有条件的使用 join, 它们都是教条式的规定,也没有详细…

    Linux 2023年6月13日
    079
  • 正则匹配中文

    [\u4e00-\u9fa5]+ 在线正则调试工具 posted @2022-09-14 17:21 自在拉基 阅读(17 ) 评论() 编辑 Original: https://…

    Linux 2023年6月8日
    0102
  • 制作pip离线源

    一、下载指定的包到相应的文件夹 (1)、创建存放安装包的目录:(联网环境) bash;gutter:true; pip list #查看安装的包 mkdir packs pip i…

    Linux 2023年6月8日
    0118
  • Android系统中有哪些日志信息和工具

    Android系统日志和工具 我们经常需要查看设备里面的各种日志信息。所以有必要了解android系统里面有哪些日志,以及用什么方式可以提取这些日志。以我手头的红米note4xpl…

    Linux 2023年6月7日
    096
  • Windows+VSCode编译在Linux-x86_64环境上运行的程序

    一、简介 本文主要介绍在Windows平台上使用VSCode,从而可以一键编译出运行在Linux-x86_64环境中的程序或库。 二、实现方式 ① 交叉编译 ② WSL(Windo…

    Linux 2023年6月7日
    099
  • ESXI系列问题整理以及记录——使用Windows PowerShell中的SSH功能连接ESXI控制台

    首先进入ESXI管理页面,开启ESXI的SSH功能 接下来到位于同一局域网的Win主机上开启Powershell,如果ESXI主机的IP地址为192.168.1.77,则在Powe…

    Linux 2023年6月13日
    0127
  • Nginx基础入门篇(3)—返回状态码详解

    一般常见返回状态码 200 – 服务器成功返&a…

    Linux 2023年6月6日
    0100
  • 企业DevOps之路:jenkins 搭建

    安装 jdk8.0 下载jdk8.0 https://ftp-new-pc.pconline.com.cn/pub/download/201903/pconline15521980…

    Linux 2023年5月27日
    0109
  • sublime 3同步编辑线上代码

    1.打开编辑器输入框(Ctrl+Shift+P),并执行 2.回车后输入sftp 3.回车,安装,等待 4.右键项目 5.修改配置信息,保存 Original: https://w…

    Linux 2023年6月7日
    089
  • Redis基础教程

    redis基础教程 1、 string数据结构 a) SET server:name “fido” b) SETNX server:name1″…

    Linux 2023年5月28日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球