随着软件无线电技术的发展,智能无线电技术逐渐成为通信领域关注热点,并给无线通信带来新的发展空间。讲座将分为3期对智能无线电技术技术进行介绍:第1期讲述智能无线电技术的背景及发展现状;第2期对智能无线电技术中的关键技术――软件无线电的架构做了详细介绍,并从其应用及通用平台设计角度分析各类平台的优缺点;第3期介绍了软件无线应用中的多种开发工具。
2 软件无线电架构
软件无线电(SDR)最初的概念是一种通信技术或者体系结构,而现在SDR,确切地说是软件定义无线电,更接近一种设计方法或者设计理念。软件无线电在理论上有着良好的应用前景,实际应用中却受到软、硬件工艺或者处理能力的限制,但是基于软件无线电概念基础上的软件定义无线电技术却越来越受到人们的重视。在2001年10月份举行的ITU-8F会议上,软件定义无线电被推荐为未来无线通信极有可能的发展方向。
软件定义无线电的功能需求包括重新编程及重新设定的能力、提供并改变业务的能力、支持多标准的能力以及智能化频谱利用的能力等。可见,SDR是可为所有技术使用的公共平台,例如认知无线电。下面我们将从一个相对完整的SDR平台角度来阐述SDR平台的架构,主要包括以软件为中心的SDR架构和SDR硬件结构两个方面。
2.1 以软件为中心SDR架构
软件无线电,其重点在于基于一款通用平台来进行功能的软件化处理。在SDR探讨中,开发人员往往注重平台的硬件开发,偏重于搭建平台时使用器件的处理性能,以使得通用平台尽可能的接近理想软件无线电的设计要求。这使得一部分人忽略了SDR中软件平台的设计。这里提出的SDR软件平台,是指在利用通用硬件平台实现SDR功能时的一种用户算法处理框架(或简单认为信号处理框架),甚至是一种操作环境(如满足软件通信体系架构规范用户接口环境)。SDR软件平台(也称作SDR架构)负责的功能一般包括:
・提供用户接口,用户通过该接口添加、删除功能模块。
・算法封装,将算法包装与外界隔离,算法包括通信算法、信号处理算法、C/C++等其他算法。
・互联接口,以完成模块间互联。
・中间信号的测试调试接口。
・调度器或者适配器,用来管理模块。
SDR架构中,最受欢迎的两类开源平台分别是开源软件定义无线电(GNU Radio)和开源软件通信体系框架嵌入式解决方案(OSSIE)。二者都是着手于标准化和可移植化的代码开发,GNU Radio的出发点是提供一种信号处理框架,而OSSIE的目标是提供一种软件通信体系架构(SCA)操作环境[11]。
2.1.1 GNU Radio 平台
GNU Radio是一种设计SDRs的开源架构,其主要组件包括6个部分:通用框架、调度器、C++和Python工具、数字信号处理(DSP)模块、用户接口界面、硬件前端的接口。这6个部分详细功能说明如下:
・一个为信号处理模块准备的通用框架,并且其可以连接到一个或多个其他模块。
・一个调度器,用于激活每个处理模块并且管理模块之间的相关数据传输。
・C++和Python工具,用于建立多个模块间的流***,并将该流***连接到调度器上。
・ 一组足够多的用于滤波器、跟踪环等的常用DSP模块。
・ 用户接口界面,允许用户拖拽模块、模块连线来实现GNU Radio的设计。
・ 一个与商用硬件前端的接口。前端硬件包括数模/模数转换器(DAC/ADC)和上下变频器,来提供了通用处理器(GPP)和无线物理环境的接口。
GNU Radio运行在Linux系统上。***7给出了GNU Radio ***形用户接口界面,每一个小模块封装了不同的信号处理功能,而且这些算法功能都是开源的。大部分算法或者信号处理模块是基于C++语言开发的,可读性强,同时也便于用户开发。模块间的通信是利用数据通道完成的,信息采用的是消息队列形式。GNU Radio结合通用软件无线电外设(USRP)开发板,可以认为是一种SDR平台,相关人员可以利用这种平台进行一些算法的快速开发和SDR研究。
2.1.2 OSSIE 平台
OSSIE是一种开发SCA兼容无线电的开源平台,提供了一种SCA操作环境。OSSIE分配包括以下部分:
・用来选择模块和互联模块的用户接口。
・ 定义新模块的用户接口,可以创建C++程序框架,用户根据应用需要可以增减框架内所需要的信号处理代码。
・ 用来检查和调试波形的用户接口,该接口允许开发人员监视中间模块中的信号。监控器可以在运行中添加,便于观察中间波形,进行模块调试。
・ 基于开源对象请求(ORB)的SCA兼容公共对象请求体系结构(CORBA)。
・ 一系列学习指南和实验课程。Windows用户可以直接***相关组件并运行,不需要安装Linux,相对GNU Radio上手容易。
从***8和***9以及OSSIE分配上看出,用户接口软件OSSIE提供了SDR架构设计、信号处理代码封装、接口调试、中间模块波形调试等功能,在OSSIE上开发完整的无线电是相当可行的。基于OSSIE架构,Prismtech公司的著名Spectra系统提供了一个完整的用来开发SCA兼容波形的操作环境。
2.1.3 不同开源SDR平台间对比
GNU Radio由专门的业余爱好者创立,以节省开支和临时应急验证为目的的一种快速开发工具;而OSSIE符合***方开发标准。二者都是着手于标准化和可移植化的代码开发。
GNU Radio的出发点是提供一种信号处理框架,与之不同的是OSSIE的目标是提供一种SCA操作环境。GNU Radio运行在Linux平台上,且直接访问文件系统和硬件;SCA波形运行在OSSIE提供的一个良好的操作环境下,应用程序界面抽象描述了文件系统和硬件。在GNU Radio上的模块之间通过Python或者C++指令来互相连接,采样数据是通过用户自定义的循环缓冲来传输。OSSIE采用可扩展标记语言(XML)文件定义模块连接,而实际是通过CORBA服务完成了连接。最重要的是OSSIE基于ORB结构,采用了传输控制协议/互联网络协议(TCP/IP)传输采样数据。特别说明,ORB允许不同的模块运行在不同的机器上,而GNU Radio平台上的流***只能在同一台机器上运行。通过比较发现,GNU Radio更像是OSSIE中一种功能组件,完成的是OSSIE的信号处理功能。
基于GNU Radio和OSSIE两类平台出现一系列SDR软件架构,例如PrismTech公司的Spectra CX环境。这些SDR架构与专用处理器(现场可编程门阵列/DSP)相连接或者将专用处理器抽象成封装组件,将无线电波形集中管理,根据需要进行装配组件形成波形应用,灵活调用。这样就完成了软件无线电平台开发雏形。
2.2 用于SDR信号处理的硬件结构
SDR要求硬件系统具有功能可重构、较高的实时处理能力,要求适应性广、升级换代简便。在一般情况下要求SDR硬件系统具备如下特点:支持多处理器系统,具有宽带高速数据传输I/O接口,结构模块化、标准化、规范化等。常见的SDR平台就是CPU+DSP+FPGA这种形式。即便我们不具备全部硬件,但仍然可以进行SDR开发,因为SDR更像是一种设计理念,重在软件和算法处理,其组件(不管是硬件平台,还是软件算法)满足同一种规范,则具备SDR可重构的灵活性。目前,存在3种主流SDR硬件平台结构:基于GPP的SDR结构、基于现场可编程门阵列(FPGA)的SDR(Non-GPP)结构、基于GPP+FPGA/SDP的混合SDR结构。
2.2.1 基于GPP的SDR结构
基于GPP的SDR结构提供了最大的灵活性和最简单的开发。GPPs最适合用于实验室环境的研究和开发,研究者能够快速尝试一系列算法和波形。一款高配PC在运行相当复杂的波形情况下,数据率 ≥ 1 Mbit/s,并且通过以太网、USB、PCI等标准接口可以直接处理数字基带或者低中频采样数据。并且可以通过多核处理来提高数据的吞吐量。但是,对于这种结构来说更适合处理数据块,并不擅长处理实时采样数据,数据延时和抖动是其面临的主要问题。操作系统会引进延时和抖动,windows系统抖动可能超过10 ms,而像VxWorks这种实时操作系统抖动可以限制在1 ms内。
基于GPP的SDR结构比较简单,其结构一般如***10所示,只包括天线、ADC/DAC、数据缓冲模块(FIFO)和GPP。这种架构对于开发人员来说,相当方便和灵活,直接接入个人PC就可以进行算法开发和测试,但它也存在缺点,如上述所述,延时和数据处理的方式等。
2.2.2 基于FPGA的SDR(Non-GPP)
结构
基于FPGA的SDR结构的实现比较困难。FPGA适合于高数据速率和宽带宽信号波形应用,并且可以用于灵活实现无线电和多种多样的波形设计,但是在结构上与GPP存在本质区别。GPP在内存中执行指令且很容易从一个指令功能转换到另一种功能,而FPGA上的功能直接映射成了硬件电路,一个新功能需要更多的FPGA资源。同时,FPGA的高度并行结构十分适合数据流处理,但是不适合密集型控制处理。另一方面,FPGA的配置文件高达40 MB,配置时间长达100 ms,而且重新配置是容易丢失芯片中的数据。这些问题直接造成了多波形设计中重新加载的时间太长的问题。虽然一部分FPGA支持局部重配置的功能,但是这项技术相当困难并且严重受到开发工具的限制。让人兴奋的是,FPGA实现了2011年提出的3项建议[11]:
・ 专用GPP与FPGA一同使用。
・ 通过使用可用的逻辑资源在FPGA上嵌入一个全功能的单片机。
・ 将FPGA和GPP结合制作成单一器件(如Xilinx ZYNQ系列)。
将FPGA和GPP结合制作成单一器件,并不是像嵌入了单片机模块,这种片上单片机上电可用,并且不需要FPGA就可以进行编程设计。由此可知,基于FPGA的SDR架构时代已经到来,新一代SDR将在新技术下越来越有意义。
2.2.3 基于GPP+FPGA/DSP的混合SDR
结构
基于GPP+FPGA/DSP的混合SDR结构,分为GPP+FPGA、GPP+DSP+FPGA两种主要架构形式。这种组合结构融合不同器件的优点,取长补短,在功耗要求比较宽松的实验室环境下,能够给开发人员提供一种快速验证各类算法高性能平台。
***11给出了这种结构的互联示意***。这种结构一般对异构器件间的数据交换的性能要求较高,不同器件间通信一般会采用PCIe[12]接口方式(1.25 Gb/s/1x)和串行高速输入输出(SRIO)[13]接口方式(1.5 Gb/s/1x)。PCI Express主要用于计算机中芯片间、板卡间的数据传输,也有部分嵌入式市场;RapidIO主要用于嵌入式系统内芯片间、板间数据传输,其目标就是嵌入式系统内的高性能互联。这种混合SDR结构,性能上可以充分地利用各种器件的优势,但同时也存在着接口设计复杂和能耗大的问题。
2.2.4 多通道SDR结构
除了上述讨论的SDR基本结构,也存在多通道SDR,如***12所示。多通道SDR旨在多并发用户共享相同的带宽,例如在一种互不兼容无线电模式下的无线电转换,允许不同模式下用户间对话。这种架构最简单的结构就是整合一组***的SDRs,每一个SDR支持一个或多个信道,一般的这些SDRs分别是具有低速率、中速率、高速率处理能力。这种结构除了对多种用户接口、复杂的算法设计、系统设计提出高要求,也对信号处理器(GPP/FPGA/DSP)和射频模块(ADC/DAC/放大器)的性能提出了较高的要求。
2.3 实验室自研平台
目前,业界也出现了一系列支持SDR/CR的高性能开发平台,均是基于以上讨论的架构。例如National Instruments公司的USRP、BeeCube公司的BEE3、基于Xilinx ZYNQ系列的ZingBoard/ ZedBoard开发板等。这些现有的具有SDR开发能力的开发板,大多属于商业产品,并不是专业应用于SDR开发的产品,辅以个人PC(GPP)设备才能进行一定意义上的SDR设计。下面介绍一种自研平台,该平台可专门用于软件无线电和认知无线电的相关研发,特别适合实验室环境下,开发人员对新算法的快速实现。
2.3.1 自研平台硬件结构
该平台主要包含了GPP、专用处理器(FPGA/DSP)、射频前端、天线等主要部件,如***13所示。
如***13所示,这种SDR实现结构利用紧凑型组件接口(CPCI)总线将FPGA、DSP、GPP连接在一起,充分利用了FPGA高速并行数据流处理能力、DSP高效算法处理能力、上位机灵活的界面操作能力以及现场可编程能力。更有意义的是平台支持GNU Radio/OSSIE架构,实验室团队在平台上实现了基于Spectra CX操作环境的SCA设计,可以认为它是一套具有SDR电台研发能力的通用设备。平台主要参数如表1所示。
2.3.2 单元互联
该平台主要目的是用于SDR的应用研究,必然面临多用户、多波形、宽带宽等问题,此时FPGA、DSP、GPP这些异构器件间的通信能力直接决定了系统的整体性能,即涉及不同单元间互联方式的选择。为了能过获得最大数据吞吐能力,专用器件与GPP间的通信采用了PCIe接口方式,FPGA与DSP之间的通信则采用SRIO,通过提高接口的数据交换速度来保证大数据吞吐能力,进而充分发挥各处理器强大的数据处理能力。
第2讲对软件无线电的架构做了详细介绍,包括SDR的软件操作环境(或用户接口)和硬件平台,并从其应用及通用平台设计角度分析各类平台的优缺点。当然,软件无线电并不只限于上述讨论内容,上述讨论只限于应用于SDR算法开发范畴,SDR还包括软件可调模拟无线通信组件(如软件可调滤波器、软件可调上下变频器、软件可调功率放大器等)、天线系统(如多输入多输出系统、智能天线与波束成形)、以及一系列软件无线电理论(带通采样、多速率信号处理、高效数字滤波)等。 (未完待续)