GNU Radio是一个完全开源的软件无线电结构平台,它可以用来设计和仿真,也可以用来连接真实的无线电系统。GNU Radio是一个高度模块化,采用流图类形式的软件架构平台,它本身提供了许多模块库,使用者可以很快速的使用这些模块来建立关于信号处理的流程。
从前,在开发无线通信设备时,工程师必须开发一种特定的信号级检测电路,设计一个特定的集成电路,该芯片将能够解码或编码。软件无线电(SDR)采用模块化处理,处理无线电信号的算法在计算机上实现。
你当然可以用你的电脑连接无线设备在一个程序中你从头开始编写算法。但这就变得很麻烦:为什么你要重新执行一个标准的滤波器?为什么你要关心如何在不同的处理模块之间移动数据?用高度优化的方法,而不用自己写不是最好的吗?你如何让你的程序在多核架构上很好地扩展,而且在嵌入式设备上运行得很好?
进入GNU Radio:框架致力于编写计算机信号处理中的应用。GNU Radio包易于使用且可重用的模块功能,提供良好的可扩展性,还提供了一个广泛的标准算法库,适用于各种不同的通用平台。平台本身提供了大量的实例,供使用者参考。
关于信号的一些原理
首先设备接收到的是模拟信号,电脑不能识别和处理,我们必须转化成数字信号。经过ADC转化成数字信号后,我们的电脑就能识别,可以对数据进行处理,比如数字滤波,调制解调,信号识别等。
模块化流程化的数字信号处理
为了对数字信号进行处理,我们必须首先考虑信号处理的步骤(滤波、调制解调、分析,检测),然后我们调用相关的模块,用流程图的方式连接起来就组成了一个无线通信系统。最简单的一个实例如下:
当一个应用被创建时,一个完整的模块化的流程图就建立起来了。这个在GNU Radio就叫流程图。下面是一个多个模块组成的流程图:
GNU Radio是一个利用这些信号处理模块创建流程图的软件架构平台,这些组成了GNU Radio各种应用。
作为一个GNU Radio的使用者,你可以使用这些GNU Radio提供的信号处理模块,也可以把它们嵌入到你自己的更加复杂的信号处理流程图中,而不用关心这些数据如何在这些模块之间流动,一旦你的程序连接好,它们会自动进行。
GNU Radio包括了大量的常用模块,这里列出了一些仅供参考:
信号产生模块:
Constant Source
Noise Source
Signal Source
...
调制解调模块:
AM Demod
Continuous Phase Modulation
PSK Mod / Demod
仪器模块
Constellation Sink
Frequency Sink
Time Sink
信道模块
Channel Model
Fading Model
Dynamic Channel Model
滤波器模块
Band Pass / Reject Filter
Low / High Pass Filter
IIR Filter
信号分析模块
FFT
Log Power FFT
Goertzel {{collapse(Resamplers)
使用这些模块,许多标准的任务,如同步,测量和可视化,可以通过只连接适当的模块到您的信号处理流程图就可以实现。此外,你可以自己写信号处理模块,把现有的块与一些提供新的智能功能,连同一些逻辑实现。或您可以开发自己的模块,对输入数据和输出数据进行控制。因此,GNU Radio是一个信号处理块和开发者互动的发展框架。它有一个广泛的标准库的块,并且有很多系统可供开发人员参考。
粤ICP备20009059号 © Copyright 2019. All rights reserved. ettus.com.cn