新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA的CORBA通信系统设计方案

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

作者: 时间:2012-04-10 来源:网络 收藏

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

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

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

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相关的工作,大大简化了波形组件开发人员所承担的开发任务。最终,所提出的改进设计方案在实验平台进行了实现与验证,测试结果也表明了此方案的合理性和可行性。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭