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

2013-11-07 来源:电信快报 字号:

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卡、声卡等等,用户也可根据需求进行扩充。

GNU Radio除了支持Linux的多种发行版本之外,还被移植到Mac OS X、NetBSD以及Windows等操作系统上,这也意味着它也支持多种类型的计算机系统。

4、USRP射频前端

USRP是GNU Radio最重要的硬件“伙伴”。与GNU Radio软件相同,USRP也是完全开放的,其所有的电路图、设计文档和FPGA代码均可从EttusResearch的网站下载。基于G1、radio和USRP的组合,用户可以构建各种具有想象力的软件无线电应用。

一套USRP由一快主板(Motherboard)和最多四块子板(Daughter Board)搭配构成。主板的主要功能为中频采样以及中频信号到基带信号之间的互相转换。子卡的功能在于射频信号的接收/发送以及到中频的转换。子卡有多种类型,分别覆盖不同的射频频谱范围,且具有不同的收/发能力和增益。

4.1  USRP主板

主板主要由以下几个部分构成:

1)AD/DA芯片
USRP采用两块Analog Device的AD9862芯片,每块可分别提供两路12bit、64MSample/s的AD变换和两路14bit、128MSample/s的DA变换。那么一块主板可提供4路模拟转换器(ADC)和4路的数字模拟信号转换器(DAC),也即收/发各两路的复采样。此外DAC单元还集成了数字上变频(DUC)功能。

2)FPGA
FPGA有两个主要功能:将DAC采来的中频信号进行数字下变频(DDC),变换到基带,并通过层叠梳状滤波器(of)对样值进行可变速率的抽取以符合用户对信号带宽的要求。FPGA中同时也实现了针对DAC的插值率波的功能;另一个功能是作为路由器协调适配各路ADC、DAC和USB 2.0接口之间的数据交换。

3)USB 2.0接口
USRP采用USB 2.0接口与PC机连接。最高可达到32MByte/s的数据传输速率。如果AD和DA分别采用12bit和14bit的采样精度,那么每个实采样点占用2Bytes,每个复采样点占用4Bytes。如果以一路复数采样进行单收或单发,则最高可达到32M/4=8M 复采样每秒,即最高发送或接收8MHz带宽的信号。如果用8bit采样,则最高可收/发16MHz带宽的信号。ADC和DAC始终分别以64M和128M 的速率进行采样,用户实际获得的采样速率是通过设置抽值率或插值率得到的。

4.2  USRP子卡

USRP的子卡有如下几种:
USRP是GNU Radio最重要的硬件“伙伴”。与 1)Basic TX、Basic RX:这两种子卡没有中频与射频间的频谱变换,仅仅提供主板上中频信号与天线间的接口。尽管如此,由于ADC和DAC可进行带通采样,仍然可支持2MHz~200MHz的载频。

2)TVRX:可覆盖50MHz一800MHz广播电视频段的接收子卡。
3)DBSRX:可覆盖800MHz~2.4GHz的接受子卡。
4)RFX400、RFX900、RFX1200、RFX1800、

RFX2400:这些子卡均为支持双工,可分别覆盖400Ⅻ z 500 、800 忸z一1000 m z、1150 m z一1450MHz、1.5MHz一2.1MHz、2.3MHz一2.9MHz频段。

4.3  USRP的原理

主板上共有4个子板接口,可支持两路并行的发送或接收。整套USRP的原理如图1所示。

5、GNU Radio安装

同多数基于Linux的软件一样,GNU Radio需要在将其源代码编译、安装之后方可运行。源代码可从网站http://gnuradio.org/trac/wiki 获得,GNURadio采用SubVersion工具管理全球各地志愿者对代码更新和扩充,用户利用客户端工具SVll可随时从网站上下载GNU Radio代码的最新版本。在编译安装GNU Radio之前,必须首先安装一些所依赖的软件库, 主要有SWIG、FFTW、cppunit、numarray、Numric和wxPytholl。分别为GNU Radio提供C++与Python互操作性、快速算法和图形界面等方面的支持。这些软件同样也是开源的,可分别从互联网上下载安装。GNU Radio的网站上有详细的软件编译安装方法,此处不再赘述。

USRP的安装须要在软件安装完毕后进行。首先在主板上插上所需子板,然后按顺序接驳稳压电源、直流输入和USB 2.0连接线,接着就可利用GNU Radio软件包中自带的实例程序初步体验GNU Radio了。GNU Radio提供了丰富的例程可供尝试,其中包括FM、AM 广播接收、信号发生器、信号频谱和波形显示,GMSK /QPSK/BPSK信号收发、USB 2.0接口测速等等。其中usrp_fR.PY是一个可显示出指定频率附近信号频谱的脚本。

6、GNU Radio的应用举例

这一部分将对基于GNU Ra dio已经成功实现或者正在开发中的应用进行介绍,以期使读者对GNU Radio的功能有一个更直观的认识。

1)MIMO(Multi—In Muti—Out)

USRP已经为多天线应用做好了准备。一套USRP即可实现双天线的发送或接收,如果要进一步增加天线数量,可通过将多套USRP同步起来加以实现。此时需要对电路做一些改动(改变几个电阻和电容的位置)使多块主板和子板之间达到时钟同步和相位相关。

2)数字高清电视接收

用一块MCA020 AD卡采集数字高清电视的信号,在PC上进行解调、解码和播放。受PC机的运算能力所限,目前还不能实时的收看,因此先将原始信号采集并保存在硬盘上,待采集完毕后再进行解调和解码,生成可播放的视频文件。

3)TDMA和TDD

目前的GNU Radio和USRP尚不支持TDMA多址方式和TDD的双工方式。Eric Blossom 和Matt Ettus以及BBN Technology公司正在对GNU Radio软件体系以及USRP中的FPGA代码进行改进和增强,通过为采样数据加上时间戳,可以对采样流进行更精确的时间控制,从而实现TDMA 和TDD。

7、结束语

GNU Radio可以被理解为开源软件的自由精神在无线领域的延伸,开放性和低成本是其最大的优势。低成本使得技术人员以及资金不那么充裕的研究机构可以像购买PC机一样拥有一套能自由进入频谱空间的软硬件系统,从而为更广泛的技术创新打下基础。在GNU Radio的邮件讨论组中每天都有来自世界各地的用户对各种相关技术问题的讨论,这些用户包括学生、大学教师、软硬件工程师、无线工程师、业余无线电爱好者,而这些人正是推动技术进步的主力。

GNU Radio的开放特性也是其具有广泛吸引力的重要因素,同时也是其生命力的源泉。由于代码和技术资料完全开放,人们可以了解到其运作的所有细节,并可自由地对其进行修改和开发。在这种开放的氛围之下,人们取得的知识、成果可以得到充分的交流共享,更有益于创新。

自组织网络、频谱自由动态分配、可重配置智能终端是目前无线通信领域几大热点,不难看出,基于GNU Radio和USRP可以快速地设计出终端原型,因而在这些领域的研究中具有相当的潜力。尽管目前GNU Radio在最大频带宽度、PC处理能力以及软件的易用性方面受到一定限制,但相信随着技术的进步,G 7 Radio必将在无线领域的技术创新中扮演更加重要的角色。

参考文献

1 J. Mitola. The software radio architecture. ⅢEEComlnun.Mag.vo1.33:26-38。1995.
2 Alok Shah。Vanu。Inc.An Introduction to Software Radio.wwv4.vanu.com.2002.
3 Peter G.Cook,W ayne BOIlser.Architectural Overview of theSPEAKeasy System.Volume 17,Issue 4, April 1999:650.661 Digital Object Idemifier10.1 109/49.761042.
4 熊庆国.软件无线电技术的研究现状及关键技术.信息技术,2003(5).

主题阅读:GNU Radio  软件无线电