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)操作环境。
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 研究。
图7、GNU Radio 图形用户接口界面
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 兼容波形的操作环境。
图8、OSSIE 用来定义波形的用户接口界面
图9、OSSIE 用来测试和调试用户接口界面
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 就可以进行算法开发和测试,但它也存在缺点,如上述所述,延时和数据处理的方式等。
图10、基于GPP 的SDR
2.2.2 基于FPGA 的SDR(Non-GPP)结构
基于FPGA 的SDR 结构的实现比较困难。FPGA 适合于高数据速率和宽带宽信号波形应用,并且可以用于灵活实现无线电和多种多样的波形设计,但是在结构上与GPP 存在本质区别。GPP 在内存中执行指令且很容易从一个指令功能转换到另一种功能,而FPGA 上的功能直接映射成了硬件电路,一个新功能需要更多的FPGA 资源。同时,FPGA 的高度并行结构十分适合数据流处理,但是不适合密集型控制处理。另一方面,FPGA 的配置文件高达40 MB,配置时间长达100 ms,而且重新配置是容易丢失芯片中的数据。这些问题直接造成了多波形设计中重新加载的时间太长的问题。虽然一部分FPGA 支持局部重配置的功能,但是这项技术相当困难并且严重受到开发工具的限制。让人兴奋的是,FPGA 实现了2011 年提出的3 项建议:
· 专用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)接口方式(1.5 Gb/s/1x)。PCI Express 主要用于计算机中芯片间、板卡间的数据传输,也有部分嵌入式市场;RapidIO 主要用于嵌入式系统内芯片间、板间数据传输,其目标就是嵌入式系统内的高性能互联。这种混合SDR 结构,性能上可以充分地利用各种器件的优势,但同时也存在着接口设计复杂和能耗大的问题。
图11、异构器件互联示意
2.2.4 多通道SDR 结构
除了上述讨论的SDR 基本结构,也存在多通道SDR,如图12 所示。多通道SDR 旨在多并发用户共享相同的带宽,例如在一种互不兼容无线电模式下的无线电转换,允许不同模式下用户间对话。这种架构最简单的结构就是整合一组独立的SDRs,每一个SDR 支持一个或多个信道,一般的这些SDRs 分别是具有低速率、中速率、高速率处理能力。这种结构除了对多种用户接口、复杂的算法设计、系统设计提出高要求,也对信号处理器(GPP/FPGA/DSP)和射频模块(ADC/DAC/放大器)的性能提出了较高的要求。
图12、多通道SDR
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、平台架构及应用
如图13 所示,这种SDR 实现结构利用紧凑型外围组件接口(CPCI)总线将FPGA、DSP、GPP 连接在一起,充分利用了FPGA 高速并行数据流处理能力、DSP 高效算法处理能力、上位机灵活的界面操作能力以及现场可编程能力。更有意义的是平台支持GNU Radio/OSSIE 架构,实验室团队在平台上实现了基于Spectra CX 操作环境的SCA 设计,可以认为它是一套具有SDR 电台研发能力的通用设备。平台主要参数如表1 所示。
表1、自研平台部分参数
2.3.2 单元互联
该平台主要目的是用于SDR 的应用研究,必然面临多用户、多波形、宽带宽等问题,此时FPGA、DSP、GPP这些异构器件间的通信能力直接决定了系统的整体性能,即涉及不同单元间互联方式的选择。为了能过获得最大数据吞吐能力,专用器件与GPP 间的通信采用了PCIe 接口方式,FPGA 与DSP 之间的通信则采用SRIO,通过提高接口的数据交换速度来保证大数据吞吐能力,进而充分发挥各处理器强大的数据处理能力。
第2 讲对软件无线电的架构做了详细介绍,包括SDR 的软件操作环境(或用户接口)和硬件平台,并从其应用及通用平台设计角度分析各类平台的优缺点。当然,软件无线电并不只限于上述讨论内容,上述讨论只限于应用于SDR 算法开发范畴,SDR 还包括软件可调模拟无线通信组件(如软件可调滤波器、软件可调上下变频器、软件可调功率放大器等)、天线系统(如多输入多输出系统、智能天线与波束成形)、以及一系列软件无线电理论(带通采样、多速率信号处理、高效数字滤波)等。
作者:宋腾辉、窦峥、林云,哈尔滨工程大学信息与通信工程学院,中兴通讯技术