同时,CORBA为不同类型的处理器提供统一的通信架构,使任何组件都能够以简单的函数调用方式获得分布于系统中的其他组件的服务。软件客户端和硬件服务程序之间由此变得连接无缝、快速并且使用较少的系统资源。与MHAL实现方式相比,该架构提供了波形组件的移动性和位置透明性,使得在同一处理器与在远程处理器中调用对象相比没有什么差别,使设计人员可以很容易地将波形组件从一个处理器中转移到另一个处理器中。这意味着,设计人员一开始可以在他们的工作站上构建SDR,然后很容易地将部件一块块转移到GPP、DSP和FPGA上,来优化系统总性能。
虽然使用CORBA方式实现的SCA/SDR既保持SCA的兼容性,又减小了传输负载,而且,开发者也无需开发通用GPP上的定制代理。但由于FPGA的设计实现方式与GPP完全不同,其编程主要集中于底层硬件,往往同特定的可编程资源紧密联系在一起,而且FPGA不能提供等效的操作系统中虚拟地址等机制,从而使FPGA上CORBA功能的实现比较困难。目前为止,在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应用程序的紧密相关性使这一功能无法实现。