[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)

大家都在看

  • 关于VHDL中case语句多执行语句的书写方式(转载stackoverflow.com并做翻译汇总)

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

    Linux 2023年6月13日
    0102
  • 运维开发之路:带你解剖html列表,一个看似简单而又不简单的知识点。

    HTML支持有序、无序和自定义列表,本篇笔者对这几个知识点进行剖析,跟紧步伐,我们一起出发吧! 无序列表 无序列表以ul标签开始,每个列表项都以li标签开始,无序列表是一个项目的列…

    Linux 2023年6月7日
    097
  • Tensorflow

    1.什么是Tensorflow? Tensor(张量)意味着 N 维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从图的一端流动到另一端。 它支持CNN…

    Linux 2023年6月6日
    084
  • redis client原理分析

    1:空闲连接池实现 空闲连接池存在一个双向链表中,一个连接用完后回收,就会从表头插入这个链表,当需要一个连接时也是从链表的表头取,从表头插入的时候会写入当前时间,所以链表是一个按时…

    Linux 2023年5月28日
    085
  • 技术漫谈之——Jectpack Compose

    最近Jetpack Compose发布了Beta版本,抽时间了解了一下Compose带来的改变和其中的一些原理。本文不会讲解具体API,只是比较随意的分享自己的一些疑问以及在探寻答…

    Linux 2023年6月13日
    089
  • Question07-查询学过”张三”老师授课的同学的信息

    * SELECT DISTINCT Student.* FROM Student , SC , Course , Teacher WHERE Student.SID = SC.SI…

    Linux 2023年6月7日
    098
  • 微信白名单获取

    公司在微信WIFI登录项目中,需要在BRAS设备上添加微信服务器的IP地址到白名单列表中,以实现用户连接热点后,能够使用微信中的功能(如:添加公众号),但不能使用其他应用进行上网操…

    Linux 2023年6月14日
    098
  • 操作系统实现-进入内核

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们正式进入内核,编写相关的内核代码,也就是kernel代码 数据类…

    Linux 2023年6月13日
    097
  • 嵌入式软件架构设计-程序分层

    1 前言 在嵌入式MCU软件开发过程中,程序分层设计也是重中之重,关系到整个软件开发过程中的协同开发,降低系统软件的复杂度(复杂问题分解)和依赖关系、同时有利于标准化,便于管理各层…

    Linux 2023年6月7日
    0135
  • API 的 Authorization 头里为啥有个 Bearer

    在我们设计和使用 API 授权的时候,经常会接触到如下内容: Authorization : Bearer Tokenxxxxxx 为什么前面会有个 Bearer,直接弄成这样不是…

    Linux 2023年6月7日
    092
  • 如何使用 Javascript 将图标字体渲染为图片

    前言 在软件开发中肯定要用到图标,比如下图的 Groove 音乐中就用到了许多图标。一种获取这些图标的方法是把 Groove 音乐截个图,然后熟练地开启 Photoshop,开始抠…

    Linux 2023年6月7日
    0103
  • 如你所见

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月6日
    066
  • 【k8s】kubeadm init 时报错 unknown service runtime.v1alpha2.RuntimeService

    在测试机器中准备搭建 k8s 集群,在 master 节点执行 kubeadm init 时出现报错, unknown service runtime.v1alpha2.Runti…

    Linux 2023年6月7日
    0111
  • Dockerfile

    Docker可以通过Dockerfile构建镜像。Dockerfile是一个文本文档,它包含用户可以在命令行上调用的所有命令来组装镜像。使用 docker build用户可以创建一…

    Linux 2023年6月13日
    075
  • 【文件格式探究】EP.1 对ePub文件格式的初探

    这是”文件格式探究”专题的第 1 期——初探 “ePub” 文件格式。这个专题将会给各位读者呈现笔者探索各种文件格式的过程,具体则是…

    Linux 2023年6月13日
    0169
  • LeetCode-补充题9. 36进制加法

    题目来源 题目详情 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152) 要求…

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