[1]. GNU Radio 系列教程(一) —— 什么是 GNU Radio 视频 GitHub 码云 | 2026-03-13 10:39 | 阅读: 2 ### 1、GNU Radio 是什么 ![][p1] GNU Radio 是一个免费、开源的软件开发工具包,通过提供信号处理 “块” 以帮助开发者实施软件无线电。 它易于和一些低成本的RF硬件外设一起使用,也可以纯模拟使用。 它广泛应用于研究、行业、学术界、政府和业余爱好者中,大大推动无线电技术的发展。 </br> 下面显示了 GNU Radio Companion 可视化编辑器中的示例流程图: ![][p2] GNU Radio 是一个方便用户设计、仿真、及部署功能强大现实世界无线电系统的框架。 - 它是高度模块化的,将各种信号处理功能做成丰富的 “块” 库; - 它具备面向 “流程图” 的设计模式,用户可像画流程图的方式,将 “块” 有序连起来,构成复杂的信号处理应用程序; GNU Radio 已大量用于现实世界中,包括:音频处理、移动通信、卫星跟踪、雷达系统、GSM 网络、世界数字广播。 就其本身而言,GNU Radio 没有限制说只能和某一特定硬件配合使用,它也不提供特定无线电通信标准(例如:802.11,Zigbee,LTE...)的开箱即用服务,但它可以用于开发基本上任何频段的通信标准的实现。 </br> ### 2、我为什么要用 GNU Radio 以前,在开发无线电通信设备时,工程师必须开发一个特定的电路来检测、解码、编码、传输特定信号,并使用昂贵的设备进行调试。 使用软件无线电(SDR)进行模拟信号处理时,只需要准备一个模拟信号收集硬件(通用的),然后将模拟信号处理的工作全部放计算机上,这样就能省去准备和调试特定硬件电路所带来的苦恼。 特定硬件的工作省了,可是你准备每次遇到不同需求,就准备从头开始写计算机上的模拟信号处理逻辑了吗? 你准备从头开始编写为了方便调试的交互式 GUI 了吗? 你是不是在想 —— 这些工作能不能模块化、标准化? 哈哈,GNU Radio 就是你想要的计算机信号处理框架。它将功能包装在易于和可重复使用的 “块” 中,具备丰富的可扩展性,提供了广泛的标准算法库,并且针对各种通用平台进行了大量优化。它还带有大量示例,可让您快速入门。 本文的其余部分提供了 DSP 的简要介绍,如果您已经熟悉 DSP, 请随时跳到下一个教程。 </br> ### 3、数字信号处理 作为软件框架,GNU Radio 致力于数字化信号,以使用通用计算机生成通信功能。 #### 3.1 一点信号理论 软件处理需要数字信号(计算机擅长处理数字),但是什么是数字信号? 为了更好的理解,让我们看一下一个常见的 “信号” 场景:录制语音、然后用手机进行传输 --> 人说话产生声音 “信号”,该信号由人的声带震动引起空气震动(形成空气气压波)产生的,气压值会随着时间变化: ![][p3] 当波到达麦克风时,它将变化的压力转换为电信号,即可变电压: ![][p4] 此时信号变成了电信号,模拟电路能处理它,但是计算机还不能处理(此时的电信号是模拟信号,计算机能处理数字信号(有限数量、有限时间)): ![][p5] 因此,我们需要对模拟信号进行采样(等时采样),如上图,我们用采样的一系列的点,代表模拟信号;每秒的采样数量,称为采样率。 - 模拟量到数字量的过程称为 ADC(Analog-to-Digital Converter) - 数字量到模拟量的过程称为 DAC(Digital-to-Analog Converter) 现在我们有了一系列数字,我们的计算机可以对其进行任何操作。例如:数字滤波、压缩、识别等。 </br> #### 3.2 将数字信号处理应用于无线电传输 无线电波和声波原理类似: 信号(此处为电磁波)可以使用天线转换为变化的电压。 ![][p6] 然后,该信号处于 “载波频率” 上,该频率通常是几兆赫甚至千兆赫。 </br> ### 4、基于流程图的模块化数字信号处理方法 当要处理数字信号,直接利用将各个处理阶段(过滤、校正、分析、检测... )设计成的处理块,可以使用简单的流程指示箭头进行连接: ![][p7] 当要建立信号处理应用程序时,需要建立完整的块图。这样的图在 GNU Radio 中称为流程图。 ![][p8] GNU Radio 是一个开发这些处理块并创建包含无线电处理应用程序的流程图的框架。 作为 GNU Radio 用户,您可以将现有块组合到一个高级流程图中,GNU Radio 将自动在这些块之间移动信号数据并在块中进行信号处理。 - GNU Radio 提供大量的块,使用这些块能快速设计流程图来完成许多标准任务 —— 标准化、同步、测量和可视化。 - GNU Radio 也支持用户自己设计块 因此,GNU Radio 主要是信号处理块及其交互作用开发的框架,它带有广泛的标准块库,开发人员可以构建许多可用系统。但是 GNU Radio 本身并不是准备做特定事情的软件 —— 尽管它已经附带了许多有用的工作示例。但是用户的工作就是从中构建有用的东西,可以将示例视为一组构建块。 </br> ### 参考链接 [[1]. What Is GNU Radio][#1] [#1]:https://wiki.gnuradio.org/index.php?title=What_Is_GNU_Radio#A_little_signal_theory [p1]:https://tuchuang.beautifulzzzz.com:3000/?path=/6d/0e7cecca2f258f3d3eebd71b2471a9.png [p2]:https://tuchuang.beautifulzzzz.com:3000/?path=/e4/abf1dfbc874c79a0fa6df8c514c7df.png [p3]:https://tuchuang.beautifulzzzz.com:3000/?path=/12/5b70b0ddb8a51913d9a41618fe6f22.png [p4]:https://tuchuang.beautifulzzzz.com:3000/?path=/78/c98df57e264f3416ec63f886915095.png [p5]:https://tuchuang.beautifulzzzz.com:3000/?path=/bc/4377c852d877a03b16631260551979.png [p6]:https://tuchuang.beautifulzzzz.com:3000/?path=/3c/56eda46c94d77cf1222fb5c0d7470d.png [p7]:https://tuchuang.beautifulzzzz.com:3000/?path=/ac/b8b6ec4514d6d62be9e34ae73f4327.png [p8]:https://tuchuang.beautifulzzzz.com:3000/?path=/e5/b43d5c3a9841ea0b88693826e5b8c4.png [px]:https://tuchuang.beautifulzzzz.com:3000/?path=/7b/24abbb1cf6f0bee204045d1f3bdb34.png