微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 软件无线电 > GNU Radio:开放的软件无线电平台

GNU Radio:开放的软件无线电平台

时间:11-06 来源:电信快报 点击:

1、软件无线电技术发展现状

J.Mitla在1992年首次提出了软件无线电的概念,此后该技术一直受到业界的广泛关注和研究。与传统的无线电设备相比较,在软件无线电中,诸如信号发生、调制/ 解调、信道编译码等信号处理过程以及协议栈皆由软件实现,而不是固定电路,因此软件无线电设备更易于重新配置,从而可灵活地进行多制式切换并适应技术的发展演进。广义上的软件无线电分为三类。a)将多种不同制式的设备集成在一起, 例如现在市场上的GSM-CDMA双模手机。显然,这种方式只能在预置的几种制式下切换,要增加对新的制式的支持则意味着集成更多的电路,重配置能力十分有限。b)基于现场可编程门阵列(FPGA) 和数字信号处理器(DSP),这类可编程硬件,重配置的能力得到了很大提高。但是用于FPGA的VHDL、Verilog等语言以及418 的汇编语言都是针对特定厂商的产品,使得这种方式下的软件过分依赖于具体的硬件,可移植性较差。此外,对广大技术人员来说,FPGA和DSP开发的门槛依然较高,开发过程也相对比较繁琐。c)针对以上两类缺陷,第三类软件无线电设备采用通用硬件(例如:商用服务器、普通PC以及嵌入式系统)作为信号处理软件的平台,具有以下几方面的优势:纯软件的信号处理具有很大的灵活性;可采用通用的高级语言(如C/C++)进行软件开发,扩展性和可移植性强,开发周期短;基于通用硬件的平台,成本较低,并可享受计算机技术进步带来的各种优势(如:CPU处理能力的不断提高以及软件技术的进步等)。

尽管基于通用硬件平台的软件无线电具有诸多优点,但是目前通用硬件平台在处理速度效率、体积和功耗以及实时性方面仍然比不上FPGA和DSP这样的专用硬件。所以现在第二类软件无线电仍然是主流,但由于微电子技术和计算机技术的快速发展,软件无线电将越来越青睐于通用的硬件平台。

2、GNU Radio概述

GNU Radio是由Eric Blossom发起的、完全开放的软件无线电项目,旨在鼓励全球技术人员在这一领域协作与创新,目前已经具有一定的影响力。GNU(GNU’s Not Unix)本身是一个推进软件开放源代码的著名项目, 由FSF(Free Softwaer Foundation)支持,目前广泛使用的GNU/Linux操作系统则是来源于此。GNU Radio主要基于Linux操作系统,也可以移植到其他操作系统上,采用C++结合Python脚本语言进行编程,其代码完全开放,用户可以在其网站-R.上下载和参与更新维护其代码。利用GNU Radio提供的一套软件,再加上一台普通PC机和廉价的硬件前端即可开发各种软件无线电应用。硬件前端可以是一套专用的射频前端或者AD/DA卡,甚至是一块普通的声卡。Matt Ettus为GNU Radio设计了一套射频前端USRP(Universal Software Radio Peripheral),可在0GHz~2.9GHz载频上提供最高可达16Mhz带宽的信号收/发能力。

除了具有第三类软件无线电系统的优点外,GNU Radio和USRP还具有如下优势:

a)成本较低。软件免费,USRP的价格大约与一台普通PC相当,带宽可满足目前多数音视频广播和无线通信制式的要求,支持双工和多天线应用。
b)技术门槛较低,具有一定编程经验和Linux使用经验的用户可在较短时间内掌握其配置、使用和开发。
c)获得来自全世界众多GNURadio拥护者以及Eric Blossom 和Matt Ettus本人的技术支持。

3、GNU Radio的软件结构

GNU Radio的编程基于Python脚本语言和CH 的混合方式。C++由于具有较高的执行效率,被用于编写各种信号处理模块,如:滤波器、FFT变换、调制/解调器、信道编译码模块等,GNU Radio中称这种模块为block。Python是一种新型的脚本语言,具有无须编译、语法简单以及完全面向对象的特点,因此被用来编写连接各个block成为完整的信号处理流程的脚本,GNU Radio中称其为graph。

GNU Radio的软件结构顶层是面向用户的block及其"粘合剂"—— aph。用户除了能够开发自己的block之外,还可使用GNU Radio所包含的丰富的block,包括各种滤波器、FFT变换、调制/解调模块、时频同步模块等等,其中一些利用了CPU的增强指令集(如:MMX、SSE、3D Now!)进行了优化,以提高性能。

在用户用block和graph构造的应用程序下面是GNU Radio的运行支持环境,主要包括缓存管理、线程调度以及硬件驱动。GNU Radio中巧妙地设计了一套零拷贝循环缓存机制,保证数据在block之间高效的流动。多线程调度主要用于对信号处理流程进行控制以及各种图形显示,GNU Radio对此也提供了支持。GNU Radio的硬件驱动包括USRP、AD卡、声卡等等,用户也可根

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top