首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的CORBA通信系统设计方案

基于FPGA的CORBA通信系统设计方案

0 引言
自1992年Jeo Mitola中提出了软件无线电(Software Defined Radio,SDR)的概念以来,有许多公司和团体致力于SDR的研究和开发,并取得了一定成果。但由于没有统一的标准,各研发单位采用各自不同的解决方案和实现架构,从而导致了不同制造商的SDR波形组件相互不兼容,难以实现互连、互通、互操作,不能进行有效的协同工作,而且也不容易实现重配置。为了解决这些问题,美军JTRS(Joint Tactical Radio System)JPEO(Joint Program Executive Office)制定了软件通信体系架构(Soltware CommLmication Arehitecture,SCA)规范,用以实现不同波形组件间的可移植性,以降低开发费用、缩短开发时间。SCA基于POSIX、CORBA(Common Obiect Request Broker Architecture)和面向对象等技术,提高了SDR的互操作性以及波形组件的可移植性和可重用性,并获得了GPP(General Purpose Processor)的良好支持,使基于SCA的SDR在GPP上能够很好地实现。
随着对无线通信带宽、速率等提出的更高要求,GPP受工作方式、处理能力的限制,难以满足这些要求,这就需要FPGA(Field Program-mable Gate Array)的加入来实现波形组件的并行处理和高速运算等功能。虽然SCA为GPP上的波形组件提供了很好的可移植性和可重用性,但目前还没有一个标准能够为FPGA上的波形组件提供这种支持。为了实现FPGA上波形组件的可移植性和可重用性,一些方案是在GPP上实现FPGA上波形组件的代理,其中比较典型的是JTRS JPEO提出的MHAL(Modem Hardware Abstraction Layer),同时,也有部分公司或团体提出了直接在FPGA上实现CORBA的方案。本文将在分析MHAL和现存的CORBA方案优缺点的基础上,提出一种在FPGA上实现CORBA的改进设计方案,并对该方案进行了测试验证。
1 技术介绍
1.1 CORBA简介
CORBA中间件标准是SCA必需的中间件层,它为SDR系统提供所需的通信架构。CORBA位于应用程序和操作系统之间,屏蔽了不同平台、操作系统、网络协议等的差别,为开发者提供了一致的调用模式。通过CORBA,应用组件可以获得良好的可移植性、可重用性和互操作性。
ORB(Object ReqLtest Broker)是CORBA的核心,其任务是帮助客户调用对象上的方法,包括:定位对象、激活对象、把客户的请求传递给对象。ORB能够屏蔽与底层平台有关的细节,保证了信息在分布式环境中不同平台上的应用组件间透明地传输。为了使由不同开发者开发的实现之间能相互通信,CORBA规范定义了GIOP(General Inter-ORB Protocol)协议标准,能够在任何具有连接的传输层上实现。
1.2 SCA简介
SCA是美军在JTRS中制定的软件通信架构标准,是JTRS的主干。SCA通过面向对象方法划分软件/硬件结构,建立了开放的系统标准,提供了与具体实现无关的软件无线电开发框架,保证了软、硬件的可移植、可重构及设备的互操作性。SCA规范包含软件体系结构定义、硬件体系结构定义、安全体系结构定义和应用程序接口(API)四部分。
通过SCA所定义的分布式构件规范,可将应用与操作环境分离,同时使应用功能模块化,并为管理和使用软件构件定义了通用接口,通用业务和API以支持软/硬件模块移植。
2 现有实现方案分析
GPP处理器受其处理能力的限制,无法满足当前通信业务需求,使通信设备越来越多地依靠DSP(Digital Signal Processor)、FPGA等专用处理器来完成高速的数据处理任务,这就使SDR系统的设计和实现必须面对由GPP,DSP和FPGA共同组成的多处理器平台。虽然通过使用COR BA中间件技术可以很容易地实现分布式波形应用,但由于CORBA标准是针对GPP的,在DSP,FPGA等处理器上没有相应的标准可用。这导致SCA /SDR的研究焦点分别集中在应用程序接口(API)和商用中间件上,使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上波形组件的灵活、高效的管理和使用。
在FPGA上实现的MHAL波形组件并通过接收带参数的操作来调用波形组件所实现的功能,虽然这样的实现方式对于FPGA开发人员而言,可以减小编写波形组代码的难度,但对于GPP开发人员来说,却要在GPP上为每个FPGA上的波形组件实现一个组件代理,大大增加了开发的负担。而且这这种实现方式也必然会相应地增加GPP的运行负担以及内存资源占用,同时,在进行GPP上的波形组件与FPGA上的波形组件问通信时,必须要经过组件代理的处理,实现GIOP报文与MHAL报文格式的转换,这也就必然会给整个通信过程引入一定的延迟的增加、吞吐量的降低和低层次的重用。
而且,在以MHAL方式实现的SCA/SDR系统中,开发者需要在GPP上设计实现适配器来完成GIOP报文和MHAL报文的转换,以便使用CORBA机制的波形组件和使用MHAL机制的波形组件间的通信。但对于适配器的实现,目前还没有统一的标准,而且,MHAL也不是一个针对通用市场的可用标准,它受到ITARS(International Traffic in Arins Regulations)限制,其实现细节并不公开,且MHAL报文结构的细节并不足以完成波形组件的实际需要,从而必然会导致不同的MHAL实现方式,且彼此间相互不兼容,这也必然会破坏MHAL波形组件的可移植性和可重用性。
3 改进的设计方案
以上分析表明现存的种实现方案都不够理想,有必要设计一种新都实现机制来改善当前的设计。
根据实际应用中通信系统的需求,结合上述分析的几种实现方案的优缺点,在兼顾系统的资源利用率、应用组件的易开发性、通用性、灵活性等各方面的性能,在现有设计方案对基础上,对FPGA上的ORB实现方案进行了改进,改进后的设计方案实现结构如图3所示。
在实际应用中,实现各种波形的应用模块一般需要支持初始化、参数配置、参数查询、建立连接、断开连接、启动、停止、数据传递等操作功能,所以在改进后的方案中,根据应用模块的实际需要抽象出一组与上述操作相对应的操作名称:initialize,configcIre,query,connectPort,disconnectPort,start,stop,pushPacket等,可称之为公有操作。公有操作名称的识别和处理由ORB主适配器完成。另外,对那些只是个别应用模块所实现的操作,可称之为私有操作,其识别和处理则由应用模块的ORB辅助适配器完成。各模块发所实现的功能如下:
ORB主适配器(ORB Mian Adapter)实现的功能包括两个方面:一是解析接收到的GIOP报文信息,从接收到到报文信息中抽取出GIOP报文头和数据域,丢弃填充域。在该过程中,ORB主适配器需要基于GIOP报文头信息所提供的协议版本和数据大小端标志完成报文格式的识别和数据的大小端转换。需要注意的是GIOP报文中的ObjecKey和Operation Name段均是变长的信息,为了便于后续处理,需要在ORB主适配器的处理过程中将它们转换为固定的编码,其中ObjectKey转换为用于标识应用模块的地址编码,而Operation Name则转换为与之对应的控制信息;二是封装需要发送到GIOP报文信息,负责从应用模块的数据总线和控制总线接收数据与控制信息,然后加上GIOP报文头,将控制信息转换为相应的操作名称,填充对齐数据等完成GIOP报文信息封装,之后通过FIFO等类似的接口将数据传送出去。
交叉开关(Crossbar Switch)实现的功能是根据接收到的地址编码完成控制信息和数据的转发。
ORB辅助适配器(ORB Assistant Adapter)实现的功能与ORB主适配器类似,也包括两个方面:一是接收来自交叉开关的控制信息,若调用调用的是应用模块的私有操作,则将此操作名称转换为相应的操作编码后发送给给交叉开关,否则,直接将控制信息转发给应用模块;二是接收来自应用模块的控制信息,当应用模块调用私有操作时,则将操作编码转换为相应的私有操作名称后发送给给交叉开关,否则,直接将控制信息转发给交叉开关。
应用模块(Application Module)根据控制信息完成对数据的处理,给出处理结果。
在根据改进后设计方案所实现的系统中,GPP上的应用将保持原有状态,不会引人任何额外的处理负担和处理延迟。FPGA上由ORB主适配器统一完成各个应用模块的公有操作,在减小FPGA硬件资源的浪费的同时也减轻了应用模块开发的负担。应用模块预留有私有操作处理接口,可对其实现的私有操作进行扩展,从而也保证了应用模块的灵活性和动态部分重配置功能的实现;而且,FPGA上各应用模块间的数据传递不需要额外的处理,也满足了高速处理的要求。
4 方案实现与测试验证
为了验证改进后设计方案的可行性和合理性,在图5所示的硬件平台上对该方案进行了实现和性能测试。其中PC计算机用作为数据源和接收终端,实现视频和测试数据产生并接收显示视频和校对测试数据;ARM上运行VxWorks 5.5操作系统,使用TAO来提供CORBA功能,实现CORBA报文的封装和解析;FPGA运行根据前面所描述的改进方案所实现的ORB,完成CORBA报文数据的解析、处理和封装。测试过程中,首先由PC计算机产生视频或测试数据,并通过Ethernet传送给ARM处理器,ARM处理器上运行的应用程序将其封装成CORBA报文后发送给FPGA,FPGA接收到CORBA报文后对其进行解析,并对净荷数据进行处理后重新封装为CORBA报文后再发送给ARM处理器,ARM接收到FPGA发送到CORBA报文后对其进行解析处理后将数据发送给PC计算机,最终由PC计算机对接收到到数据进行视频解码显示或校对检测。
验证过程中先后在FPGA上实现了波形组件间的建立连接操作(connectPort)、数据传递(pushPaeket),波形组件参数配置(configure)和波形组件参数查询(query)四个操作,并在波形组件到参数设置和查询操作中完成short,float,double,string等类型的支持。通过测试,系统所实现的各种功能均符合设计需要。此外,还分别实现建立连接、数据传递2个操作与实现建立连接、数据传递、参数配置、参数查询4个操作两种情况对FPGA上对资源占用进行了比较,其结果见表1。从表中所得到的数据可以看出,在FPGA中实现对CORBA报文的操作以及参数进行解析、封装处理非常耗费硬件资源。这主要是由于CORBA报文中使用的公共数据表示(CDR)来描绘所要传输的数据类型所引起的,其也从一个方面证明了OIS公司所设计的为每个波形组件都实现一个接收操作适配器和发送操作适配器将极其耗费硬件资源,这在实际应用中是不能被接受的。
5 结论
本文在分析现有的解决方案优缺点的基础上提出了一种在FPGA上实现ORB的改进设计方案,不但为彼此分离的、工作于多处理器平台上的各个GPP,DSP和FPGA开发小组提供了通用的CORBA通信机制,实现波形组件的位置透明性;还克服了现有的FPGA上实现ORB方案的缺点,使FPGA上实现的ORB既可以支持动态部分重配置,又使波形组件开发人员尽可能少地处理ORB相关的工作,大大简化了波形组件开发人员所承担的开发任务。最终,所提出的改进设计方案在实验平台进行了实现与验证,测试结果也表明了此方案的合理性和可行性。
返回列表