GNU Radio在SDR领域的应用

1 Software Defined Radio

软件无线电(Software Defined Radio,SDR)是一种实现无线通信的新概念和体制。其中以往只能在硬件中实现的组件(例如混频器,滤波器,放大器,调制器/解调器,检测器等),现在可以通过软件手段在个人计算机上或嵌入式系统上实现。一开始被应用在军事领域,在21世纪初,由于众多公司的努力,使得它已从军事领域转向民用领域,成为经济的、应用广泛的、全球通信的第三代移动通信系统的战略基础。(翻译自维基百科)

图 1 Software Defined Radio(Wikipedia)

基本的SDR系统可以由装备有声卡或其他模数转换器的个人计算机组成,之前是某种形式的RF前端。大量的信号处理被交给通用处理器,而不是在专用硬件(电子电路)中完成。这种设计产生一种无线电装置,它可以仅仅基于所使用的软件来接收和发送广泛不同的无线电协议(有时也称为波形),简化了系统设计。(翻译自维基百科)

2 GNU Radio

2.1什么是GNU Radio

GNU Radio是一个框架,使用户能够设计,模拟和部署高性能的现实世界无线电系统。它是一个高度模块化的“流程图”框架,配有一个综合的处理块库,可以轻松地组合起来,形成复杂的信号处理应用程序。

GNU Radio是一个免费的开源软件开发工具包,提供信号处理模块来实现软件无线电。它可以与易于使用的低成本外部RF硬件一起使用,以创建软件定义的无线电,或者在类似仿真环境中使用硬件。它广泛应用于业余爱好,学术和商业环境,以支持无线通信研究和现实世界无线电系统。

2.2那么GNU Radio究竟做了什么呢

GNU Radio执行所有信号处理。您可以使用它来编写应用程序以从数字流中接收数据或将数据推送到数字流中,然后使用硬件传输数据。GNU Radio具有过滤器,通道代码,同步元件,均衡器,解调器,声码器,解码器和许多其他元素(在GNU Radio术语中,我们称之为这些元素块),这些元素通常在无线电系统中找到。 更重要的是,它包括连接这些块然后管理数据如何从一个块传递到另一个块的方法。扩展GNU Radio也很简单; 如果找到缺少的特定块,则可以快速创建并添加它。

由于GNU Radio是软件,它只能处理数字数据。通常,复杂的基带采样是接收机的输入数据类型和发射机的输出数据类型。然后使用模拟硬件将信号移动到所需的中心频率。除此之外,任何数据类型都可以从一个块传递到另一个块 - 无论是位,字节,向量,突发或更复杂的数据类型。

GNU Radio应用程序主要使用Python编程语言编写,而所提供的性能关键信号处理路径在C ++中使用处理器浮点扩展(如果可用)实现。因此,开发人员能够在简单易用的快速应用开发环境中实现实时,高吞吐量的无线电系统。

2.3我可以编程使用GNU Radio吗

这是非常有用的 但是,有没有办法使用GNU Radio无法编码。首先,GNU Radio Companion是一个类似于Simulink的图形用户界面。它允许您通过拖放来创建信号处理应用程序。此外,GNU Radio还提供了一套即用型工具和实用程序。这些用于管理最基本的操作,如记录RF信号和进行频谱分析。如果这引发了你的兴趣,也许看看初学者的指南如何使用GNU Radio

但是,如果要扩展GNU Radio(即添加新功能),则必须编写代码。 为了创建对GNU Radio Companion来说太复杂的应用程序,Python是最简单的方式。对于性能关键的代码,您应该编写C ++代码。

2.3 GNU Radio如何获得许可

GNU Radio根据GNU通用公共许可证(GPL)版本3许可。所有代码均为自由软件基金会的版权。

3演示

 

图 2 软件界面

4硬件

        

图 4 Hardware

5 参考

  1. https://www.gnuradio.org/
  2. https://redpitaya.com/

猜你喜欢

转载自www.cnblogs.com/likaiwei/p/9753899.html
GNU