首页 > 范文大全 > 正文

基于SCA的软件无线电在FPGA上设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于SCA的软件无线电在FPGA上设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:在分析现有基于sca软件无线电fpga上实现方案优缺点的基础上,提出了一种基于FPGA的CORBA通信系统设计方案,有效克服了原有实现方案的缺点,不但为FPGA上的波形组件提供了良好的可重用性、可移植性和动态部分重配置的支持,而且还有效提高了FPGA硬件资源的使用效率,降低了通用处理器的工作负担。最后,针对该设计方案搭建了硬件平台,并给出了系统的性能测试结果,测试结果表明此设计方案是行之有效的。

关键词:软件通信体系架构; 软件无线电; 对象请求; GIOP; FPGA

中图分类号:

TN92-34

文献标识码:A

文章编号:1004-373X(2011)19

-0103

-05

Design and Implementation of SCA-based SDR on FPGA

GAO Hong-wei1,2, WU Yu1, SHI Jun-wu1, ZOU Li-hua2

(1. School of Electronic Science and Engineering, National University of Defense Technology, Changsha 410073, China;

2. PLA Unit of 91604, Longkou 265700, China)

Abstract: A design scheme of CORBA communication system based on FPGA is presented through analyzing advantages and disadvantages of SCA-based SDR implemented on FPGA. Comparing with the existing scheme, this scheme with several advantages such as reusability, transportability and reconfiguration of dynamic part, which has improved availability of hardware resource of FPGA and reduced the operation of GPP(general purpose processor). Finally, a hardware platform is built based on the system scheme. The performance test results show that the design can work well in use.

Keywords: software communication architecture; software defined radio; object request broker; general inter-ORB protocol; FPGA

收稿日期:2011-05-10

0 引 言

自1992年Jeo Mitola中提出了软件无线电(Software Defined Radio,SDR)的概念[1]以来,有许多公司和团体致力于SDR的研究和开发,并取得了一定成果。但由于没有统一的标准,各研发单位采用各自不同的解决方案和实现架构,从而导致了不同制造商的SDR波形组件相互不兼容,难以实现互连、互通、互操作,不能进行有效的协同工作,而且也不容易实现重配置[2]。为了解决这些问题,美军JTRS(Joint Tactical Radio System)JPEO(Joint Program Executive Office)制定了软件通信体系架构(Software Communication Architecture,SCA)规范,用以实现不同波形组件间的可移植性,以降低开发费用、缩短开发时间[3]。SCA基于POSIX、CORBA(Common Object Request Broker Architecture)和面向对象等技术,提高了SDR的互操作性以及波形组件的可移植性和可重用性,并获得了GPP(General Purpose Processor)的良好支持,使基于SCA的SDR在GPP上能够很好地实现。

随着对无线通信带宽、速率等提出的更高要求, GPP受工作方式、处理能力的限制,难以满足这些要求,这就需要FPGA(Field Programmable Gate Array)的加入来实现波形组件的并行处理和高速运算等功能。虽然SCA为GPP上的波形组件提供了很好的可移植性和可重用性,但目前还没有一个标准能够为FPGA上的波形组件提供这种支持。为了实现FPGA上波形组件的可移植性和可重用性,一些方案是在GPP上实现FPGA上波形组件的,其中比较典型的是JTRS JPEO提出的MHAL(Modem Hardware Abstraction Layer)[4],同时,也有部分公司或团体提出了直接在FPGA上实现CORBA的方案。本文将在分析MHAL和现存的CORBA方案优缺点的基础上,提出一种在FPGA上实现CORBA的改进设计方案,并对该方案进行了测试验证。

1 技术介绍

1.1 CORBA简介

CORBA中间件标准是SCA必需的中间件层,它为SDR系统提供所需的通信架构。CORBA位于应用程序和操作系统之间,屏蔽了不同平台、操作系统、网络协议等的差别,为开发者提供了一致的调用模式。通过CORBA,应用组件可以获得良好的可移植性、可重用性和互操作性。

ORB(Object Request Broker)是CORBA的核心,其任务是帮助客户调用对象上的方法,包括:定位对象、激活对象、把客户的请求传递给对象。ORB能够屏蔽与底层平台有关的细节,保证了信息在分布式环境中不同平台上的应用组件间透明地传输。为了使由不同开发者开发的实现之间能相互通信,CORBA规范定义了GIOP(General Inter-ORB Protocol)协议标准,能够在任何具有连接的传输层上实现[5-6]。

1.2 SCA简介

SCA是美军在JTRS中制定的软件通信架构标准,是JTRS的主干。SCA通过面向对象方法划分软件/硬件结构,建立了开放的系统标准,提供了与具体实现无关的软件无线电开发框架,保证了软、硬件的可移植、可重构及设备的互操作性。SCA规范包含软件体系结构定义、硬件体系结构定义、安全体系结构定义和应用程序接口(API)四部分[7]。

通过SCA所定义的分布式构件规范,可将应用与操作环境分离,同时使应用功能模块化,并为管理和使用软件构件定义了通用接口,通用业务和API以支持软/硬件模块移植。

2 现有实现方案分析

GPP处理器受其处理能力的限制,无法满足当前通信业务需求,使通信设备越来越多地依靠DSP(Digital Signal Processor)、FPGA等专用处理器来完成高速的数据处理任务,这就使SDR系统的设计和实现必须面对由GPP,DSP和FPGA共同组成的多处理器平台。虽然通过使用CORBA中间件技术可以很容易地实现分布式波形应用,但由于CORBA标准是针对GPP的,在DSP,FPGA等处理器上没有相应的标准可用。这导致SCA/SDR的研究焦点分别集中在应用程序接口(API)和商用中间件上[8],使SCA/SDR的设计和实现出现了两种主要模式:使用使用硬件抽象层(如MHAL)和使用分布式中间件技术(如CORBA)。

2.1 使用MHAL方式实现的SCA/SDR系统

MHAL是JTRS JPEO提出的一种基于硬件抽象层的解决方案。其实现方法是通过在核心框架与FPGA之间加入,并明确规范与FPGA之间的数据格式来实现FPGA在SCA中的应用的。图1是以MHAL方式实现的分布式SCA/SDR系统布局结构示意图。这种方式下,GPP需要为FPGA上的每个波形组件实现一个,以实现分布式波形组件间的通信。通过使用,系统可以将FPGA上的波形组件当作GPP上的波形组件一样处理,这样就可以实现对FPGA上波形组件的灵活、高效的管理和使用。

图1 基于MHAL的系统实现布局图

在FPGA上实现的MHAL波形组件并通过接收带参数的操作来调用波形组件所实现的功能,虽然这样的实现方式对于FPGA开发人员而言,可以减小编写波形组代码的难度,但对于GPP开发人员来说,却要在GPP上为每个FPGA上的波形组件实现一个组件,大大增加了开发的负担。而且这这种实现方式也必然会相应地增加GPP的运行负担以及内存资源占用,同时,在进行GPP上的波形组件与FPGA上的波形组件间通信时,必须要经过组件的处理,实现GIOP报文与MHAL报文格式的转换,这也就必然会给整个通信过程引入一定的延迟的增加、吞吐量的降低和低层次的重用。

而且,在以MHAL方式实现的SCA/SDR系统中,开发者需要在GPP上设计实现适配器来完成GIOP报文和MHAL报文的转换,以便使用CORBA机制的波形组件和使用MHAL机制的波形组件间的通信。但对于适配器的实现,目前还没有统一的标准,而且,MHAL也不是一个针对通用市场的可用标准,它受到ITARS(International Traffic in Arms Regulations)限制,其实现细节并不公开,且MHAL报文结构的细节并不足以完成波形组件的实际需要,从而必然会导致不同的MHAL实现方式,且彼此间相互不兼容,这也必然会破坏MHAL波形组件的可移植性和可重用性。

2.2 使用CORBA方式实现的SCA/SDR系统

由于GPP上的波形组件是使用CORBA实现的,所以只要将CORBA扩展到DSP和FPGA上,就能够很容易地实现布署在各种类型处理器上的波形组件间的通信。图2是以CORBA方式实现的分布式SCA/SDR系统布局结构示意图。在以CORBA方式实现的SCA/SDR系统中,GPP保持原有状态即可,而DSP和FPGA上的ORB负责完成CORBA报文的处理。这使系统中所有波形组件使用CORBA中间件进行通信,而不需要在GPP上实现,不仅减轻了GPP的运行负担以及内存资源占用,而且系统中波形组件间的通信不再需要通过的转换,从而也就降低了通信时延,提高了通信效率。

图2 基于CORBA的系统实现布局图

同时,CORBA为不同类型的处理器提供统一的通信架构,使任何组件都能够以简单的函数调用方式获得分布于系统中的其他组件的服务。软件客户端和硬件服务程序之间由此变得连接无缝、快速并且使用较少的系统资源。与MHAL实现方式相比,该架构提供了波形组件的移动性和位置透明性,使得在同一处理器与在远程处理器中调用对象相比没有什么差别,使设计人员可以很容易地将波形组件从一个处理器中转移到┝硪桓龃理器中。这意味着,设计人员一开始可以在他们的工作站上构建SDR,然后很容易地将部件一块块转移到GPP、DSP和FPGA上,来优化系统总性能。

虽然使用CORBA方式实现的SCA/SDR既保持SCA的兼容性,又减小了传输负载,而且,开发者也无需开发通用GPP上的定制。但由于FPGA的设计实现方式与GPP完全不同,其编程主要集中于底层硬件,往往同特定的可编程资源紧密联系在一起,而且FPGA不能提供等效的操作系统中虚拟地址等机制,从而使FPGA上CORBA功能的实现比较困难。目前为止,在FPGA上实现ORB的主要的方案有以下两种:

(1) Prismtech公司开发了一款集成电路ORB(ICO)产品[9],该产品提供了一个使用VHDL语言编写的ORB模块,能够运行于Xilinx,Altera等公司的多款FPGA上。整个产品包括ORB引擎、IDL-to-VHDL代码产生器和SCA应用组件等几个部分。ORB引擎负责GIOP报文的解析和封装,对于到达的GIOP请求报文,ORB引擎对报文中的对象键值、操作名称、参数等信息进行解析,然后将数据传递给特定的FPGA逻辑模块进行处理;如果处理结果需要向外部发送,则ORB引擎根据预先获得的一些信息,将结果封装为GIOP请求报文或应答报文,并通过网络进行传输。

尽管ICO实现了FPGA程序与分布式系统的直接ORB通信,但由于其ORB引擎的实现代码是由IDL-to-VHDL代码生成器根据特定的应用生成的,这就使其ORB引擎的实现逻辑与特定的FPGA应用程序密切相关,从而也就导致了ORB的引擎不具备通用性。一旦FPGA的应用程序做了修改,原有的ORB引擎往往无法对新应用程序的GIOP报文进行正确的解析和封装,此时必须再次使用IDL-to-VHDL代码生成器重新生成新的逻辑。目前有很多FPGA在硬件上已经具备了部分重配置功能,而且有一部分分布式应用,也需要实现FPGA的动态部分重配置,这就需要在动态改变FPGA部分逻辑功能的同时,依然保持ORB引擎和其他FPGA模块的正常工作,但ICO与FPGA应用程序的紧密相关性使这一功能无法实现。

(2) OIS公司在一项专利[10]中提出了一种新的基于FPGA的CORBA实现方法。该方法是将ICO的ORB引擎的分为4个功能模块,包括ORB接收模块、ORB发送模块、接收操作适配器和发送操作适配器。其中ORB接收模块和ORB发送模块仅负责解析和封装GIOP的报文头信息,而接收操作适配器和发送操作适配器负责解析和封装与每个应用模块相关的操作名称和参数。这样,每个应用模块都有自己专属的处理操作名称和参数的处理单元,从而保证了FPGA上应用模块的灵活性和通用性,也可以满足部分重配置的需求。

然而,由于在OIS公司的专利中所提出的解决方案中,必须为每个应用模块都实现一个接收操作适配器和一个发送操作适配器,由此导致应用模块的实现十分复杂,必然会给应用模块的开发人员带来一定的负担;同时,FPGA内部各应用模块之间的信息传递必须经过发送操作适配器和接收发送操作适配器的处理,这对于FPGA内部乃至FPGA之间高速数据传输的要求显然是不恰当的;而且,当一块FPGA中运行的应用模块数量较多时,也必然要有大量的计算资源和存储资源被处理操作名称和参数的逻辑所占用,无法实现硬件资源的有效利用,甚至造成资源的浪费,这也是实际应用中无法接受的。

3 改进的设计方案

以上分析表明现存的种实现方案都不够理想,有必要设计一种新都实现机制来改善当前的设计。

根据实际应用中通信系统的需求,结合上述分析的几种实现方案的优缺点,在兼顾系统的资源利用率、应用组件的易开发性、通用性、灵活性等各方面的性能,在现有设计方案对基础上,对FPGA上的ORB实现方案进行了改进,改进后的设计方案实现结构如图3所示。

图3 系统实现结构

在实际应用中,实现各种波形的应用模块一般需要支持初始化、参数配置、参数查询、建立连接、断开连接、启动、停止、数据传递等操作功能,所以在改进后的方案中,根据应用模块的实际需要抽象出一组与上述操作相对应的操作名称:initialize,configure,query,connectPort,disconnectPort,start,stop,pushPacket等,可称之为公有操作。公有操作名称的识别和处理由ORB主适配器完成。另外,对那些只是个别应用模块所实现的操作,可称之为私有操作,其识别和处理则由应用模块的ORB辅助适配器完成。各模块发所实现的功能如下: