在实际应用中,实现各种波形的应用模块一般需要支持初始化、参数配置、参数查询、建立连接、断开连接、启动、停止、数据传递等操作功能,所以在改进后的方案中,根据应用模块的实际需要抽象出一组与上述操作相对应的操作名称: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)根据控制信息完成对数据的处理,给出处理结果。
图4为CORBA请求报文的接收处理流程。
在根据改进后设计方案所实现的系统中,GPP上的应用将保持原有状态,不会引人任何额外的处理负担和处理延迟。FPGA上由ORB主适配器统一完成各个应用模块的公有操作,在减小FPGA硬件资源的浪费的同时也减轻了应用模块开发的负担。应用模块预留有私有操作处理接口,可对其实现的私有操作进行扩展,从而也保证了应用模块的灵活性和动态部分重配置功能的实现;而且,FPGA上各应用模块间的数据传递不需要额外的处理,也满足了高速处理的要求。
www.55dianzi.com
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相关的工作,大大简化了波形组件开发人员所承担的开发任务。最终,所提出的改进设计方案在实验平台进行了实现与验证,测试结果也表明了此方案的合理性和可行性。