1.4 SDR平台的架构

SDR的功能需求包括重新编程及重新设定的能力、提供并改变业务的能力、支持多标准的能力以及智能化频谱利用的能力等。下面从一个相对完整的SDR平台角度来阐述SDR平台的架构,主要包括以软件为中心的SDR架构和用于SDR信号处理的硬件结构两个方面。

1.4.1 以软件为中心的SDR架构

软件无线电,其重点在于基于一款通用平台来进行功能的软件化处理。在SDR探讨中,开发人员往往注重平台的硬件开发,偏重于搭建平台时使用器件的处理性能,以使得通用平台尽可能地接近理想软件无线电的设计要求。这使得一部分人忽略了SDR中软件平台的设计。研究人员提出了SDR软件平台的概念,是指在利用通用硬件平台实现SDR功能时的一种用户算法处理框架(或简单认为信号处理框架),甚至是一种操作环境(如满足软件通信体系架构规范用户接口环境)。SDR软件平台(也称作SDR架构)负责的功能一般包括:

(1)提供用户接口,用户通过该接口添加、删除功能模块。

(2)算法封装,将算法包装与外界隔离。算法包括通信算法、信号处理算法、C/C++等其他算法。

(3)互连接口,以完成模块间互连。

(4)中间信号的测试调试接口。

(5)调度器或者适配器,用来管理模块。

SDR架构中,最受欢迎的两类开源平台分别是开源软件定义无线电(GNU Radio)和开源软件通信体系框架嵌入式解决方案(OSSIE)。二者都是着手于标准化和可移植化的代码开发,GNU Radio的出发点是提供一种信号处理框架,而OSSIE的目标是提供一种软件通信体系架构(SCA)操作环境。

1.GNU Radio平台

GNU Radio是一种设计SDR的开源架构,其主要组件包括6个部分:通用框架、调度器、C++和Python工具、数字信号处理(DSP)模块、用户接口界面、硬件前端的接口。这6个部分详细功能说明如下:

(1)一个为信号处理模块准备的通用框架,并且其可以连接到一个或多个其他模块。

(2)一个调度器,用于激活每个处理模块并且管理模块之间的相关数据传输。

(3)C++和Python工具,用于建立多个模块间的流图,并将该流图连接到调度器上。

(4)一组足够多的用于滤波器、跟踪环等的常用DSP模块。

(5)用户接口界面,允许用户拖动模块、模块连线来实现GNU Radio的设计。

(6)一个与商用硬件前端的接口。前端硬件包括数模/模数转换器(DAC/ADC)和上下变频器,来提供通用处理器(GPP)和无线物理环境的接口。

GNU Radio运行在Linux系统上。图1.6所示为GNU Radio图形用户接口界面,每一个小模块封装了不同的信号处理功能,而且这些算法功能都是开源的。大部分算法或者信号处理模块是基于C++语言开发的,可读性强,同时也便于用户开发。模块间的通信是利用数据通道完成的,信息采用的是消息队列形式。GNU Radio结合通用软件无线电外设(USRP)开发板,可以认为是一种SDR平台,研究人员可以利用这种平台进行一些算法的快速开发和SDR研究。

图1.6 GNU Radio图形用户接口界面

2.SSIE平台

OSSIE是一种开发SCA兼容无线电的开源平台,提供了一种SCA操作环境。OSSIE分配包括以下几部分:

(1)用来选择模块和互连模块的用户接口。

(2)定义新模块的用户接口,可以创建C++程序框架,用户根据应用需要可以增减框架内所需要的信号处理代码。

(3)用来检查和调试波形的用户接口,该接口允许开发人员监视中间模块中的信号。监控器可以在运行中添加,便于观察中间波形,进行模块调试。

(4)基于开源对象请求代理(ORB)的SCA兼容公共对象请求代理体系结构(CORBA)。

(5)一系列学习指南和实验课程。Windows用户可以直接下载相关组件并运行,不需要安装Linux,相对于GNU Radio上手容易。

用户接口软件OSSIE提供了SDR架构设计、信号处理代码封装、接口调试、中间模块波形调试等功能,在OSSIE上开发完整的无线电是相当可行的。基于OSSIE架构,Prismtech公司的Spectra系统提供了一个完整的用来开发SCA兼容波形的操作环境。

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的信号处理功能。

1.4.2 用于SDR信号处理的硬件结构

SDR要求硬件系统具有功能可重构、较高的实时处理能力,要求适应性广、升级换代简便。一般情况下,要求SDR硬件系统具备如下特点:支持多处理器系统,具有宽带高速数据传输I/O接口,结构模块化、标准化、规范化等。常见的SDR平台就是CPU+DSP+FPGA这种形式。即使不具备全部硬件,但仍然可以进行SDR开发,因为SDR更像是一种设计理念,重在软件和算法处理,其组件(不管是硬件平台,还是软件算法)满足同一种规范,则具备SDR可重构的灵活性。目前,存在4种主流SDR硬件平台结构:基于GPP的SDR结构、基于现场可编程门阵列(FPGA)的SDR(Non-GPP)结构、基于GPP+FPGA/SDP的混合SDR结构、多通道SDR结构。

1.基于GPP的SDR结构

基于GPP的SDR结构提供了最大的灵活性和最简单的开发。GPP最适合用于实验室环境的研究和开发,研究者能够快速尝试一系列算法和波形。一款高配PC在运行相当复杂的波形情况下,数据传输速率≥1Mbit/s,通过以太网、USB、PCI等标准接口可以直接处理数字基带或者低中频采样数据,并且可以通过多核处理来提高数据的吞吐量。但是,对于这种结构来说更适合处理数据块,并不擅长处理实时采样数据,数据延时和抖动是其面临的主要问题。操作系统会引进延时和抖动,Windows系统抖动可能超过10ms,而像Vx Works这种实时操作系统抖动可以限制在1ms内。

基于GPP的SDR结构比较简单,其结构一般如图1.7所示,只包括天线、ADC/DAC、数据缓冲模块(FIFO)和GPP。这种架构对于开发人员来说,相当方便和灵活,直接接入个人PC就可以进行算法开发和测试,但它也存在缺点,如上所述,延时和数据处理的方式等。

图1.7 基于GPP的SDR结构

ADC—模数转换器;FIFO—数据缓冲模块;DAC—数模转换器;GPP—通用处理器

2.基于FPGA的SDR(Non-GPP)结构

基于FPGA的SDR结构的实现比较困难。FPGA适合于高数据传输速率和大带宽信号波形应用,并且可以用于灵活实现无线电和多种多样的波形设计,但是在结构上与GPP存在本质区别。GPP在内存中执行指令且很容易从一个指令功能转换到另一种功能,而FPGA上的功能直接映射成了硬件电路,一个新功能需要更多的FPGA资源。同时,FPGA的高度并行结构十分适合数据流处理,但是不适合密集型控制处理。另一方面,FPGA的配置文件高达40MB,配置时间长达100ms,而且重新配置是容易丢失芯片中的数据。这些问题直接造成了多波形设计中重新加载的时间太长的问题。虽然一部分FPGA支持局部重配置的功能,但是这项技术相当困难并且严重受到开发工具的限制。让人兴奋的是,FPGA实现了2011年提出的三项建议:

(1)专用GPP与FPGA一同使用。

(2)通过使用可用的逻辑资源在FPGA上嵌入一个全功能的单片机。

(3)将FPGA和GPP结合制作成单一器件(如Xilinx ZYNQ系列)。

将FPGA和GPP结合制作成单一器件,并不是像嵌入了单片机模块,这种片上单片机上电可用,并且不需要FPGA就可以进行编程设计。由此可知,基于FPGA的SDR架构时代已经到来,新一代SDR将在新技术下越来越有意义。

3.基于GPP+FPGA/DSP的混合SDR结构

基于GPP+FPGA/DSP的混合SDR结构,分为GPP+FPGA、GPP+DSP+FPGA两种主要架构形式。这种组合结构融合不同器件的优点,取长补短,在功耗要求比较宽松的实验室环境下,能够给开发人员提供一种快速验证各类算法性能高的平台。

图1.8所示为这种结构的互连示意图。这种结构一般对异构器件间的数据交换的性能要求较高,不同器件间通信一般会采用PCI接口方式[(1.25Gbit/s)/1x]和串行高速输入输出(SRIO)接口方式[(1.5Gbit/s)/1x]。PCI Express主要用于计算机中芯片间、板卡间的数据传输;Rapid Io主要用于嵌入式系统内芯片间、板间数据传输,其目标就是嵌入式系统内的高性能互连。这种混合SDR结构,可以充分地利用各种器件的优势,但同时也存在着接口设计复杂和能耗大的问题。

图1.8 异构器件互连示意图

FPGA—现场可编程门阵列;DSP—数字信号处理器;GPP—通用处理器

4.多通道SDR结构

除了上述讨论的SDR基本结构,也存在多通道SDR结构,如图1.9所示。多通道SDR旨在多并发用户共享相同的带宽,例如在一种互不兼容无线电模式下的无线电转换,允许不同模式下用户间对话。这种架构最简单的结构就是整合一组独立的SDR,每一个SDR支持一个或多个信道,一般这些SDR分别具有低速率、中速率、高速率处理能力。这种结构除了对多种用户接口、复杂的算法设计、系统设计提出高要求,也对信号处理器(GPP/FPGA/DSP)和射频模块(ADC/DAC/放大器)的性能提出了较高的要求。

图1.9 多通道SDR结构

ADC—模数转换器;DSP—数字信号处理;GPP—通用处理器;DAC—数模转换器;

SPU—通用处理器;FPGA—现场可编程门阵列;RF—射频

目前,业界也出现了一系列支持SDR/CR的高性能开发平台,均是基于以上讨论的架构。例如,National Instruments公司的USRP、BeeCube公司的BEE3、基于Xilinx ZYNQ系列的Zing Board/Zed Board开发板等。这些现有的具有SDR开发能力的开发板大多属于商业产品,并不是专业应用于SDR开发的产品,辅以个人PC设备才能进行一定意义上的SDR设计。