专利名称:支持位置透明和动态部分重构的硬件通信设施的制作方法
技术领域:
本发明一般涉及实现通信网络内的数字集成电路设备,更特别地,涉及实现数字 集成电路设备上的对象请求代理(Object Request Broker, ORB)模块,使得能够与分布式 系统内的其它计算设备通信。
背景技术:
分布式计算是一种并行处理,其中,应用的不同组件(即软件程序或硬件模块处 理逻辑)在通过网络互相通信的两个或更多计算设备上同时运行。应用组件可以调用运行 在不同计算设备上的另一组件,与该另一组件通信,或者唤起该另一组件,请求执行特定功 能或者返回特定数据。这些应用组件可以在不同的计算环境(例如,不同的硬件平台、操作 系统和编程语言)中操作。例如,分布式应用中的两个软件程序可以以不同的编程语言编 写并在运行在不同处理器上的不同操作系统上执行。如果两个应用组件是在不同且不兼容 的计算环境中设计和操作的,则开发人员往往难以实现从一个这样的应用组件直接唤起另 一个应用组件。因此,必须有公共的通信媒介,以允许这些应用组件彼此相互合作和相互作 用。 在处理分布式应用软件的传统分布式系统中,使用称为对象请求代理(ORB)的中 间件部分,使得在不同计算环境中操作的软件程序能够通过网络相互通信。0RB将来自一个 计算平台的数据结构转换成能够通过网络传送并由另一个计算平台接收的字节序列。在接 收计算平台,ORB将该字节序列转换成该接收计算平台可理解的数据结构。0RB还为分布式 系统内运行的程序提供透明性,使得具有ORB的计算平台上的程序能够与位于远端计算平 台上的另一程序通信而无需知道该另一程序的位置、执行该另一程序的平台的类型或者执 行该另一程序的操作系统。 ORB通过称为通用ORB间协议(GI0P)的抽象协议相互通信。GI0P定义了通过网络 传输的数据的格式和消息的语法。与GIOP相关的标准由对象管理组织(0MG)来维护。0MG 还定义了分布式系统的体系结构模型,称为通用对象请求代理体系结构(C0RBA)。对于分 布式系统中的每个应用组件,CORBA创建关于内部逻辑的能力和如何调用该逻辑的捆绑包 含信息。C0RBA使用接口定义语言(IDL)来描述对象呈现给外界的接口。 IDL以语言无关 的方式描述接口,使得未共享共同的编程语言或编译平台的软件组件能够相互通信。CORBA 还定义了关于不同编程语言如Ada、 C、 C++或Java的映射,以与IDL通信。
下面参考图1讨论C0RBA系统的简化模型。在该附图中,网络110将来自客户端 计算机120的请求传递给服务器计算机130。 0RB仓库(未示出)存储可供网络110上的所有计算机执行的所有对象(例如,对象X)的列表。客户端0RB 110可以访问0RB仓库, 并且向客户端计算机120提供关于可通过该0RB执行的所有对象(例如,对象X)的信息。 在该示例中,对象X包括方法"开火"。尽管对象X存储在服务器计算机130中并由服务器 计算机130执行,但是该代码对于客户端计算机120上的程序122是完全透明的。程序122 不需要知道程序132所使用的编程语言或者服务器计算机130上运行的操作系统。因此, 从程序122的角度来看,程序122唤起对象X的方式与唤起任何本地对象的方式相同。
程序122可以通过将该请求发送给客户端ORB 124来调用对象X来执行方法"开 火",其中,客户端ORB 124为计算机120提供关于对象X的接口。客户端0RB 124使用IDL存 根(IDL stub)126,IDL存根126是由IDL预编译而来的,并且限定客户端计算机120可以如 何调用服务器计算机130上的对象X。关于客户端计算机120使用的、网络IIO上另一计算 机上的每一个接口,都具有IDL存根。客户端ORB 124包括代码来执行编组(marshalling), 意味着它把操作及其参数编码成能够通过网络110发送给服务器计算机130的扁平GIOP 消息格式。 在服务器计算机130处,IDL框架134提供对于由服务器输出的每个服务的静态 接口。与客户端计算机120上的存根类似,这些框架也是使用IDL编译器创建的。使用这 些框架,服务器ORB 134将扁平的GIOP消息转换成服务器计算机130中的对象X可理解的 操作和参数。此后,对象X执行所期望的操作,并且在必要时将所请求的数据通过ORB返回 给客户端计算机120。 传统ORB模型已在分布式软件系统中使用多年。在近些年,ORB软件已发展到能 够在微控制器或数字信号处理器(DSP)上运行。但是,应用可以被直接开发成硬件部分,如 专用集成电路(ASIC)——被定制用于特定应用目的的集成电路。或者,应用可以在可编程 逻辑器件中实现,可编程逻辑器件不实现固定的功能,而是由能够被配置成执行期望功能 的大量逻辑门和连接资源组成。 现今普遍使用的可编程半导体器件为现场可编程门阵列(FPGA) , FPGA是包含可 编程逻辑部分和可编程互连接的器件。FPGA的逻辑部分和互连接部分能够由逻辑设计者编 程成执行期望的功能。FPGA比其ASIC对手慢,消耗更多功率,并且可能不适合很复杂的应 用。但是,FPGA相比ASIC具有特定的优势,包括任意再编程的能力、在较短的时间内进入 市场、修复缺陷的能力,以及较低的非重复性工程(NRE)成本。 为了使硬件部分如ASIC、 PLD和FPGA被有效地集成到分布式系统中,这些硬件部 分需要配备能够将软件请求转换成硬件部分可理解的信号的ORB接口。类似地,硬件必须 能够生成软件部分可理解的请求。将硬件设备与分布式系统连接的传统方法是通过工作在 通用处理器(GPP)或数字信号处理器(DSP)上的定制代理,该定制代理提供硬件设备与软 件实现的ORB之间的接口 。该方法的极大缺点在于引起GPP代理的性能瓶颈。
或者,硬件设计者可以在硬件设备内实现定制专用ORB模块。但是,该方法需要硬 件设计者理解CORBA以及面向对象编程——许多硬件设计者不熟悉的领域。而且,为特定 应用块而定制设计的ORB模块可能不易重用,原因是代码映射必须被嵌入到用于特定应用 的该模块。 Murotake等人的美国专利申请第2005/0108382号讨论在可重构通信体系结构 (RCA)无线系统内在FPGA上实现ORB。但是,该申请没有讨论如何实现0RB。
由PrismTech有限公司开发的集成电路ORB(ICO)提供一种能够被映射到FPGA上的以可移植VHDL编写的嵌入式ORB。 ICO包括ICO引擎、IDL到VHDL代码生成器、谱建模工具(Spectra Modeling Tool),以及SCA(软件通信体系结构)部分。SCA是限定硬件元件和软件元件如何在软件无线电(SoftwareDefined Radio, SDR)内通信的体系结构框架。ICO引擎负责实现CORBA所使用的传送语法。该引擎将输入的GI0P消息拆解,并且从消息中提取头部字段和数据字段。对于输入的消息,该引擎执行操作名分解以确定GIOP消息中的数据被传送给哪个对象。于是,消息数据由引擎提取以传送给合适的FPGA逻辑块。如果要求应答,则引擎将对对象执行读操作以获得应答所需的数据。引擎还填充头部字段并建立应答消息以符合GI0P标准。 尽管ICO允许FPGA应用通过ORB进行通信,但是还需要提供一种允许由硬件实现的应用以更加健壮的方式相互通信的更好的机制。 而且,对于FPGA开发者,ICO具有缺点。在ICO中,ICO引擎必须知道每个应用模块的位置和功能,以从消息中提取合适的头部,并且执行操作名分解以及将数据路由到合适的对象。ICO IDL到VHDL代码生成器生成ICO引擎需要的配置参数。该代码生成器还将这些参数添加到VHDL包文件中,所述VHDL包文件配置ICO接口和内部存储元件的物理方面。因此,ICO的ORB核心的部分VHDL代码是由代码生成器在编译时生成的。结果,如果FPGA设计者希望重构FPGA内的应用块的功能,则也必须重构和生成整个ORB模块。这对于许多FPGA设计者可能成问题,因为它不能够部分重构FPGA而不影响ORB和其它FPGA模块的操作。
发明内容
简单而言,根据本发明的一方面的通信系统包括一个或多个集成电路。所述一个或多个集成电路包括本地集成电路与远端集成电路中的至少一者。位于本地集成电路上的至少一个发送应用硬件模块具有发送逻辑,该发送逻辑控制从发送应用硬件模块发送消息。在本地集成电路和远端集成电路中的至少一者上具有至少一个接收应用硬件模块。发送应用硬件模块在其发送逻辑无需被构造成已知接收应用硬件模块的地址或去往接收应用硬件模块的路径的情况下将消息发送给所述接收应用硬件模块。位于本地集成电路上的调度逻辑对以下消息中的至少一个或多个消息进行路由 A)从发送应用硬件模块传送到本地集成电路上的一个或多个接收应用硬件模块的消息,或者 B)从所述发送应用硬件模块传送的、以被传送到位于远端集成电路上的一个或多个接收应用硬件模块的消息。 根据本发明上述方面中一些更具体的特征,所述通信系统还包括远离所述本地集成电路的一个或多个处理器,所述处理器运行一个或多个接收应用软件程序。本地集成电路中的发送应用硬件模块在无需其发送逻辑被构造成已知所述接收应用软件程序的地址或去往该接收应用软件程序的路径的情况下将消息发送给在远端处理器上执行的接收应用软件程序,并且,其中,所述调度逻辑对从所述发送应用硬件模块传送的、以被传送到所述接收应用软件程序的消息中的至少一个或多个消息进行路由。 根据本发明的另一方面,集成电路包括多个实现了中间件的应用块。每个实现了
7中间件的应用块包括一个或多个应用模块,所述应用模块包含一个或多个应用对象,并且
使用一个或多个专用接口指示符进行消息处理。每个中间件应用块所关联的发送操作适配
器发送一个或多个输出操作名和对象指示符,并且每个中间件应用块所关联的接收操作适
配器接收输入操作名和对象指示符。实现了中间件的应用块的每个接收操作适配器基于输
入对象指示符将至少一个输入操作名转换成对应的专用操作指示符以供由该对象指示符
指定的相应应用模块的应用对象使用。实现了中间件的应用块的每个发送操作适配器将由
相应应用模块的应用对象指定的至少一个专用操作指示符转换成对应的输出操作名。来自
一个应用块中的发送操作适配器的操作名基于来自所述发送操作适配器的对象指示符而
被传递给另一应用块的接收操作适配器。本发明的该方面允许对实现应用块的FPGA进行
部分重构,使得每个应用块都能够在不影响其它应用块的情况下被进行重构。 根据本发明上一方面中一些更具体的特征,消息路由器传递各自包含任选的操作
名、任选的对象指示符和来自所述多个实现了中间件的应用块的其它数据的一个或多个消
息并引导一个或多个输出操作名和对象指示符到所述多个实现了中间件的应用块。耦合到
所述消息路由器的调度模块根据规定的协议通过所述集成电路外部的通信传输来代理对
象服务请求消息和应答消息。所述对象服务请求消息包括具有一个或多个输入操作名和对
象指示符的输入数据消息以及具有一个或多个输出操作名和对象指示符的输出数据消息。
所述对象服务应答消息包括具有对象服务请求上下文信息的输入数据消息、以及具有对象
服务请求上下文信息的输出数据消息。所述路由器将来自应用模块的输出操作名通过传送
而传递给调度模块,以根据该协议传送。 根据本发明的又一方面,可重构的现场可编程门阵列包括多个实现了中间件的应用块。每个实现了中间件的应用块包括包含一个或多个应用对象的一个或多个应用模块,所述应用对象使用一个或多个专用接口指示符以进行消息处理。与一个应用块的应用模块相关的一个或多个专用接口指示符在与另一个应用块的另一应用模块相关的一个或多个专用接口指示符保持不变的情况下被重构。
图1示出将客户端计算机连接到网络中的服务器计算机的传统0RB模型。 图2(a)为从硬件实现的应用模块发送的消息的透明传递的方框图。 图2(b)示出采用交叉开关的本发明实施例。 图3示出采用内部总线的本发明实施例。 图4示出采用直路由(direct routing)的本发明实施例。 图5示出经过ORB和接收操作适配器处理的输入请求消息的示例性格式。 图6示出经过发送操作适配器和ORB处理的输出请求消息的示例性格式。 图7示出经过发送操作适配器和ORB处理的应答消息的示例性格式。 图8 (a)和图8 (b)示出图6-7中所示的REQUEST_C0NTR0L和REPLY_C0NTR0L的示
例性格式。 图9示出根据本发明实施例实现具有ORB的FPGA的方法的流程图。 图10示出根据本发明实施例的具有ORB的FPGA的示例。
具体实施例方式
下面参考附图公开本发明的实施例。尽管本发明的实施例是参考FPGA来图示和描述的,但是应当理解,本发明可以用于任何集成电路如可编程逻辑器件(PLD)、专用集成电路(ASIC),或者用于基于除半导体之外的技术(例如,光计算)的计算平台。还应当理解,尽管本发明的实施例将调度器描述为实现C0RBA标准的ORB系统,但是,实现其它标准的通信中间件系统和调度器也可以与本发明的方法和系统一起使用。 本发明的一方面涉及通信系统,该通信系统在发送或传送消息的一个或多个由硬件实现的应用模块与接收所发送或传送的消息的一个或多个由硬件实现的硬件模块或由软件实现的应用程序之间透明传递消息。 图2(a)示出根据本发明上一方面在位于本地集成电路上的发送应用硬件模块与接收应用硬件模块或接收应用软件程序之间提供消息传送的系统。通过发送应用硬件模块在无需此类应用硬件模块的发送逻辑被构造成已知接收应用硬件模块或应用软件程序的地址或去往接收应用硬件模块或应用软件程序的路径的情况下将消息发送给接收应用硬件模块或接收应用软件程序,提供消息传送透明性。换句话说,发送逻辑被构造成无需知道接收应用硬件模块或应用软件程序的地址或者去往接收应用硬件模块或应用软件程序的路径。因此,在最初构造时,在发送逻辑中未嵌入接收应用硬件模块或应用软件程序的地址或者去往接收应用硬件模块或应用软件程序的路径。 在一个实施例中,通信系统提供芯片间、即集成电路内的一个应用硬件模块与另一个应用硬件模块之间的通信透明性。在该实施例中,通信透明性是在两者都位于同一个本地集成电路上的发送应用硬件模块与接收应用硬件模块之间的。本发明的系统还能够提供在本地集成电路中的发送应用硬件模块与远端集成电路中的接收应用硬件模块之间的芯片内通信透明性。在又一实施例中,本发明的系统提供本地集成电路上的发送应用硬件模块与在一个或多个远端处理器上(例如,在客户站或通信节点上)执行的接收应用软件程序之间的消息传递透明性。不管在哪种情况下,本地集成电路上的发送应用硬件模块的发送逻辑未事先知道接收应用硬件模块或接收应用软件程序的地址或者去往接收应用硬件模块或接收应用软件程序的路径,并且透明地传递消息。 在本发明的通信系统中,硬件实现的调度模块(例如,硬件实现的、符合0RB协议的中间件)代理消息的传递。调度逻辑位于将本地集成电路上的发送应用硬件模块所发送或传送的消息中的至少一个或多个消息路由到同一本地集成电路上的一个或多个接收应用硬件模块的集成电路上。或者,调度逻辑将本地集成电路上的发送应用硬件模块传送的消息路由传输到位于远端集成电路上的接收应用硬件模块或者由远端处理器运行的应用软件程序。 现在,参考图2(b),该图中示出根据本发明的FPGA系统200的实施例。该FPGA包括多个应用块240a、240b等等,每个应用块具有相应的应用模块。每个应用模块包括通过使用相应的接口和操作指示符执行指定功能的一个或多个应用对象,其中,所述操作指示符可以是消息中包括的数值或字符串。如图所示,例如应用块240a包括应用模块242、接收操作适配器(R0A) 250和传送操作适配器(T0A) 252。 R0A 250和T0A 252与应用模块242对接,并且作为应用模块242与消息路由器(其路由输入消息和输出消息)之间的桥梁。在图2 (b)的示例性FPGA中,消息路由器包括交叉开关230,该开关在FPGA内在应用块240a、
9240b等之间本地传递消息。FPGA还通过借助ORB进行的传送将消息传递给FPGA外部的远端目的地,其中该ORB包括ORB接收220和ORB发送222。 ORB接收220和ORB发送222分别通过接收传送适配器(RTA)210和发送传送适配器(TTA)212连接到外部网络。接收传送适配器(RTA) 210和发送传送适配器(TTA) 212可以包括能够将数据输入和输出ORB的任何类型的通信端口,例如PCI端口、USB端口、以太网端口、串口等。输入消息由RTA 210接收并传递给ORB接收220。输出消息从0RB发送222通过TTA 212被发送到外界。如果FPGA有多个外部通信端口可用,则可以例示多个可共同操作的ORB以及它们的相关RTA和TTA模块。 FPGA 200中的ORB接收220和ORB发送222是熟知的,并且可以被置于FPGA 200中设计者期望的任何地方。RTA 210和TTA 212通常由FPGA设计者根据应用块240a、240b等的需求而定制设计。但是,用于RTA 210和TTA 212的端口设计的类型不影响ORB接收200模块和ORB发送222模块,因为ORB接收200和ORB发送222独立于RTA 210和TTA212,并且与RTA 210和TTA212分离。 ORB发送222执行与前文参考图1描述的客户端ORB 124和IDL存根126类似的功能。类似地,ORB接收220执行与服务器ORB 134和IDL框架136类似的功能。当FPGA200内的应用模块生成请求或应答时,ORB发送222创建GIOP消息,所述GIOP消息然后通过TTA212被发送给远端目的0RB,例如被发送给图1中的远端集成电路中的调度器。
当外部或远端ORB发送请求(例如,来自图1的远端集成电路中的调度器的请求)给FPGA 200时,ORB接收220将GIOP报文转换成在FPGA中能够容易处理的紧凑型内部表示。如下文进一步所述,不管消息是从FPGA内的另一应用块本地生成的还是从FPGA外部远端生成的,FPGA内的所有应用块240a、240b等等都以相同的方式处理消息。所述紧凑型内部表示包括基于字符串的"操作名"以及必要的参数,其中,"操作名"是请求FPGA 200上的应用模块242来执行的操作。 除了 ORB接收220和ORB发送222之外,ORB功能还可以包括交叉开关230。或者,设计者可以选择实现他们自己的交叉开关230。交叉开关230可以被设置在FPGA 200的任何部分,只要交叉开关230能够将ORB接收220和ORB发送222连接到ORB需要进行通信的所有应用块240a、240b等等。图2的示例性实施例示出4端口交叉开关230,该4端口交叉开关230将ORB接收220和ORB发送222连接到多个应用块240a、240b和240c。但是,可以使用多种其它开关,例如部分连接的交叉开关、全连接的交叉开关、Banyan开关、存储器开关等。取决于FPGA上的应用块的数量,在开关230上还可以包括任意数量的端口。而且,在FPGA中可以包括多于一个ORB,在这种情况下,每个ORB将被指定给开关230上的一个端口。在图2中,0RB接收220和0RB发送222可以连接到端口"00",应用块240a可以连接到端口 "Ol",应用块240b可以连接到端口 "10",并且应用块240c可以连接到端口"ll",等等。 如上所述,每个实现了中间件的应用块,例如应用块240a、接收操作适配器(ROA) 250、传送操作适配器(TOA) 252等,被用作应用模块242与交叉开关230之间的桥梁。与每个中间件应用块相关的传送操作适配器发送一个或多个输出操作名和对象指示符。与每个中间件应用块相关的接收操作适配器接收输入操作名和对象指示符。实现了中间件的应用块的每个接收操作适配器将基于输入对象指示符的至少一个输入操作名转换成对应
10的专用操作指示符,供对象指示符所指定的相应应用模块的应用对象使用。实现了中间件
的应用块的每个传送操作适配器将由相应应用模块的应用对象所指定的至少一个专用操
作指示符转换成对应的输出操作名。来自一个应用块中的传送操作适配器的操作名基于来
自所述传送操作适配器的对象指示符被传递到另一个应用块的接收操作适配器。 在图2(b)的示例性实施例中,R0A 250包括查找表,该查找表包含操作名和相应
的列举的操作指示符值。操作名是一串字符,并且构成对于外界已知为命令的东西,该命令
能够被应用模块如应用模块242执行。例如,操作名可以是"开火"、"重新装入"或者"停
止"。应用模块242被配置成将与所述操作名相关的列举的操作指示符值识别为功能。例
如,"开火"的列举的操作指示符值可以是0,"重新装入"的列举的操作指示符至可以是1,
并且"停止"的列举的操作指示符值可以是2。列举的操作指示符值对于特定的应用模块及
其中包括的应用对象是唯一的。因此,尽管在应用块240a中0可能与"开火"相关,但是在
应用块240b中O可能与另一操作(例如"测量温度")相关。由于查找表包括在ROA 250
中因而直接与应用块242相关,所以能够在不影响系统的其余部分并且不需要额外的外部
配置工作的情况下,使应用被动态重构。 TOA 252包括一组表,该组表用于将操作名的列举的操作指示符值以及对象键的列举的对象指示符值分别转换成完全扩展的字符串和八进制序列。同样地,因为该数据包括在TOA 252中因而直接与应用模块242相关,所以能够在不影响系统的其余部分的情况下使应用动态重构。 在实现FPGA 200的过程中,使用IDL至VHDL编译器由IDL模型生成R0A250和TOA252。 IDL模型描述ROA 250和TOA 252的内容。在IDL模型内,关于应用模块242的应用对象所支持的每个操作都存在多个条目,所述条目包括列举的操作指示符值、操作名以及关于每个操作的参数列表。为了配置和创建应用块240的IDL模型,系统设计师仅需要修改每个操作的操作名和参数。因此,创建IDL模型不需要设计者透彻理解IDL编程。因此,根据本发明的可重构FPGA具有拥有一个或多个应用对象的多个实现了中间件的应用块,所述应用对象使用一个或多个专用接口指示符,例如值或字符串。专用接口指示符由硬件定义语言(例如VHDL)来描述,该硬件定义语言实现FPGA上的每个应用块。根据本发明的这一方面,与一个应用块相关的专用指示符能够在不必对实现任何其他应用块的硬件描述语言的任何其他描述进行修改的情况下进行修改、更新或动态重构。 除了生成用于R0A250和T0A252的VHDL代码之外,IDL编译器生成具体描述GIOP消息净荷内的操作数据元素的格式和位置的文件。这不需要FPGA设计者熟悉GIOP消息格式和公共数据表示(CDR)编组/拆解规则,或者是需求降低。 IDL至VHDL编译器将IDL模型编译成VHDL代码,该VHDL代码将用于合成用于每个应用i央240a、240b和240c的ROA 250和TOA 252。由于ROA 250和TOA 252是与前述所有其它ORB模块独立地生成的,所以FPGA设计者可以在无需再编程或重构其它ORB模块的情况下重构FPGA 200的任一应用块240a、240b或240c。因此,例如,如果应用块240a内的应用块242需要更新或修改,则系统设计师仅需创建用于新的应用模块242的新的IDL模型,并且运行IDL至VHDL编译器来创建用于应用块240的新ROA 250和TOA 252。但是,不需要修改0RB接收220、0RB发送222、RTA 210、 TTA 212以及交叉开关230。
在FPGA的操作期间,当RTA210接收到GIOP请求报文时,该报文被传递到ORB接收220。 ORB接收220对消息头部进行处理和重定格式,以创建针对流处理进行了优化的紧凑型内部表示。除了其它信息之外,优化后的头部还将包括字符串格式的操作名、消息数据(其包括用于期望操作的参数),以及对象键,这包括指定报文的目的地址。该目的地址对应于报文将要发送到的应用块。数据包于是被发送到交叉开关230。 开关230将其从ORB接收220接收的报文路由到目的应用块240a。输入的报文在被发送到应用模块242之前经过ROA 250处理。对象键的对象指示符比特[5:0]指示应用模块中每个应用对象的适当接口。如上所述,R0A 250包含查找表,该查找表用于将适合于目标对象的接口的字符串操作名转换成列举的操作指示符值。如果在ROA 250接收到的消息源自0RB接收220,则该消息会包括字符串形式的操作名。在这种情况下,ROA 250查找操作名并将其转换成对应的列举的值。ROA 250于是将该报文继续传递给应用块240。但是,如果该报文是从另一应用块240b被路由到应用块240a的,则该报文会已包括该列举的值。在这种情况下,ROA 250将该报文继续传递给应用模块242,但不进行修改。该行为将FPGA应用与关于消息的内部或外部来源隔离,提供位置透明性。 如果操作需要应答,则应用模块242将生成应答消息并通过TOA 252将该应答消息发送给交叉开关230。该消息于是从交叉开关230被发送到ORB发送模块222,该ORB发送模块222生成完整的GIOP消息。该GIOP消息于是通过TTA 212被发送出去。由应用块240发起的请求也是类似传送的。 在本发明的另一实施例中,TOA 252的任务限于在引导时间时将信息发送给ORB接收220和ORB发送222。在该实施例中,由TOA 252在引导时间中发送给ORB发送222的数据包括关于如何将列举的操作指示符值转换回字符串操作名的信息。因此,在该实施例中,ORB发送必须包括存储装置,用于存储与将被每个应用块240a调用的每个操作有关的列举的操作指示符值。在操作时间时,每次应用模块242发起请求消息或者发送应答消息给ORB发送222, TOA 222使该消息通过,但不进行任何修改。因此,ORB发送222接收到的消息将包括列举的操作指示符值,而非操作名。ORB发送222于是在创建GIOP消息之前将枚举类型翻译成操作名。 图3示出本发明的可替选实施例,该实施例采用总线330形式的路由器而非开关。在该实施例中,ORB接收220将消息发送给总线330,该总线330利用消息头部中的地址信息将消息传递到目的应用块240a。 图4示出本发明的又一实施例,其中,所有应用块440之间的消息是串行路由的。在该实施例中,ORB接收210将消息发送通过一串应用块,直到该消息所寻址的期望应用块接收并处理该消息。之后,该应用块可以发出应答,该应答在被ORB发送222接收之前也可能经过一串其它应用。为了增加吞吐量,可以使用管道430将所有的连接进行流水线化。因此,0RB接收210可以在每个时钟周期向初始应用块发出不同的请求,而不必在发出新的请求之前等待应答返回。或者,这串应用块440可以在无需流水线化的情况下进行连接。
图5示出经过ORB和ROA处理的输入请求消息的示例性格式。传送请求消息520是具有GIOP标准所要求的字段的GIOP消息。由于大多数这些字段对于内部FPGA应用的操作不是必需的,所以ORB将该消息520縮减为后ORB请求消息530。消息530包括操作名作为字符串,在前述示例中,所述操作名可以包括"开火"、"重新装入"、"停止"或"测量温度"。消息530还包括REQUEST_C0NTR0L (请求控制,其将在后面参考图8a描述),以及request—id(请求ID) 、data—payloacLsize(数据净荷大小)和消息数据。消息数据包括参数,所述参数被发送给应用以执行特定操作。 图6示出经过操作发送适配器和ORB处理的输出请求消息的示例性格式。应用请求消息610由操作发送适配器接收,该操作发送适配器查找关于期望的操作列举的值的操作名(字符串),并且将该操作名加入消息620。消息620然后由0RB转换成后0RB(到传送)请求消息630,其符合GIOP标准。 图7示出经过操作发送适配器和ORB处理的应答消息的示例性格式。应用应答消息710与图6中所示的应用请求消息610类似,除了应用应答消息710包括REPLY_CONTROL而不是REQUESTJX)NTROL之外。类似地,后操作适配器应答消息(Post-Op Adapter R印lyMessage) 720类似于后操作适配器请求消息620,除了后操作适配器应答消息720包括REPLYJX)NTROL(应答控制)之外。 图8 (a)和图8 (b)示出图6-7中所示的REQUEST_CONTROL和REPLY_C0NTR0L的示例性格式,它们二者都为32比特字段。下面提供对REQUEST_CONTROL和REPLY_C0NTR0L的字段描述。 REQUEST CONTROL字段描沭
目的地对象地址 比特[10:6]表示消息的内部物理目的地。对于输出请求消息,这些比特被设置给发送ORB适配器(全0)。对于输入请求消息和本地请求消息,这些比特被设置给目标操作适配器。 比特[5:0]表示消息的物理目的地内的内部逻辑目的地。对于输入请求消息、本地请求消息或输出请求消息,这些比特被设置成适于表示关于被调用伺服(servant)的对象ID的值。
源对象地址 比特[10:6]表示消息的内部物理地址。对于输入请求消息,这些比特被设置给接收ORB适配器(全0)。对于输出请求消息和本地请求消息,这些比特被设置给源操作适配器。 比特[5:0]表示消息的物理源内的内部逻辑源。对于输入请求消息、本地请求消
息或输出请求消息,这些比特被设置成适合于表示用于调用伺服的对象ID的值。 字节顺序——CORBA定义的布尔值,表示输入消息的字节顺序 1 =小端(Little Endian),O =大端(Big Endian) 消息类型(MT)——消息类型字段指示符布尔值。 0=请求,1=应答 响应期望(RE)——CORBA定义的布尔值,表示是否期望响应该请求。0 =不期望响应,l =期望响应
列举的操作 操作适配器将其解释为列举的操作指示符。
应答控制字段描沭
目的地对象地址
比特[10:6]表示消息的内部物理地址。对于输出应答消息,这些比特被设置给发 送0RB适配器(全0)。对于输入请求消息和本地请求消息,这些比特被设置给目标操作适 配器。 比特[5:0]表示消息的物理目的地内的内部逻辑目的地。对于输入请求消息、本 地请求消息或输出请求消息,这些比特被设置成适合于表示用于调用客户端伺服的对象ID 的值。 源对象地址 比特[10:6]表示消息的内部物理地址。对于输入应答消息,这些比特被设置给接 收0RB适配器(全0)。对于输出请求消息和本地请求消息,这些比特被设置给源操作适配 器。 比特[5:0]表示消息的物理源内的内部逻辑源。对于输入请求消息、本地请求 消息或输出请求消息,这些比特被设置成适合于表示被调用伺服的对象ID的值。字节顺 序一一用于输入消息的、C0RBA定义的字节顺序
1=小端,0=大端 消息类型(MT)——消息类型字段指示符布尔值。
0=请求,1=应答。 一定是应答(b〃 1") 应答状态(RS)——C0RBA定义的。通常应当是N0_EXCEPTI0N(无异常) (b" 000") 图9示出根据本发明实施例实现具有一个ORB或多个ORB的FPGA的方法的流程 图。在块914中,IDL接口910和IDL元数据912被提供给IDL至VHDL编译器。在块920 中,IDL至VHDL编译器使用该数据生成VHDL形式的、每个应用所需的操作接口。之后,在 块922中,所述操作接口与用户应用合并以创建VHDL或Verilog形式的应用块。在块930 中,应用块与FPGA 0RB 932(其为EDIF网表格式)与传送适配器模型934 (其为VHDL、EDIF 或软件格式)合并以完成FPGA的VHDL模块。然后在块940中,使用以VHDL形式提供的仿 真环境942来对VHDL模型进行仿真。在仿真成功后,在块950中,合成FPGA的VHDL模型, 以创建EDIF网表,见块952中。然后,EDIF网表能够被置于FPGA上并通过FPGA路由,见 块954。最后,在块956中,创建比特文件,该文件在块960中用于对FPGA进行编程。
图10示出根据本发明的实施例实现的软件无线电(SDR)的示例性方框图。SDR被 实现在集成电路如FPGA上,具有多个实现了中间件的应用块,例如扩展器(spreader)块、 解扩器(despreader)块、编码器块和DAC/ADC块等等。每个实现了中间件的应用块包括一 个或多个应用模块,所述应用模块包括执行所需SDR功能的一个或多个应用对象,所述SDR 功能包括信号扩展、解扩、编码以及A/D和D/A转换功能等等。这些应用对象使用相应的专 用接口指示符,用于如上所述在集成电路内在本地透明地处理消息以及在集成电路外通过 传送而远端透明地处理消息。 如图所示,发送操作适配器和接收操作适配器与如上所述用于传递输入消息和输 出消息以及处理/转换操作名和对象指示符的每个中间件应用块相关。实现了中间件的应 用块的每个接收操作适配器基于输入对象指示符将至少一个输入操作名转换成对应的专 用操作指示符,以供由该对象指示符指定的相应应用模块的应用对象使用。实现了中间件 的应用块的每个发送操作适配器将由相应应用模块的应用对象指定的至少一个专用操作指示符转换成对应的输出操作名。交叉开关形式的消息路由器在集成电路内在应用块之间本地传递消息。包括ORB接收块和ORB发送块的调度模块耦合到消息路由器,该消息路由器根据所规定的协议(例如CORBA)通过集成电路外部的通信传递来代理对象服务请求消息和应答消息。对象服务请求消息包括具有一个或多个输入操作名和对象指示符的输入数据消息以及具有一个或多个输出操作名和对象指示符的输出数据消息。对象服务应答消息包括具有对象服务请求上下文信息的输入数据消息以及具有对象服务请求上下文信息的输出数据消息。消息路由器将来自应用模块的输出操作名通过传送而传递给调度模块,以根据协议传送该输出操作名。 如上所述,本发明允许实现了 SDR应用块的FPGA具有部分和动态重构性,使得每个应用块能够在不影响其他应用块的情况下被重构。例如,能够在不必重构任何其它SDR功能块的情况下更新或修改扩展器块接口 。因此,实现了 SDR的FPGA是可重构的现场可编程门阵列,其包括多个实现了中间件的应用块,即扩展器块、解扩器块、编码器块和DAC/ADC块等等。每个实现了中间件的应用块具有执行SDR相关功能的一个或多个应用对象。它们使用一个或多个专用接口指示符用于处理消息。与一个应用块相关的所述一个或多个专用接口指示符能够在无需修改与另一个应用块相关的所述一个或多个专用接口指示符的情况下被动态重构或修改。
权利要求
一种通信系统,包括一个或多个集成电路,所述集成电路包括本地集成电路和相对于所述本地集成电路的远端集成电路中的至少一个;位于所述本地集成电路上的至少一个发送应用硬件模块,每个发送应用硬件模块具有发送逻辑,所述发送逻辑控制从所述发送应用硬件模块发送消息;位于所述本地集成电路和所述远端集成电路中的至少一个上的至少一个接收应用硬件模块;其中,发送应用硬件模块在无需其发送逻辑被构造成已知接收应用硬件模块的地址或去往所述接收应用硬件模块的路径的情况下将消息发送给所述接收应用硬件模块,以及位于所述本地集成电路上的调度逻辑,所述调度逻辑对以下消息中的至少一个或多个消息进行路由A)从所述发送应用硬件模块传送到所述本地集成电路上的一个或多个接收应用硬件模块的消息,或者B)从所述发送应用硬件模块传送的、以被传送到位于远端集成电路上的一个或多个接收应用硬件模块的消息。
2. 如权利要求1所述的通信系统,还包括运行一个或多个接收应用软件程序的远离所 述本地集成电路的一个或多个处理器,其中,在所述本地集成电路中的发送应用硬件模块 在无需其发送逻辑被构造成已知所述接收应用软件程序的地址或去往所述接收应用软件 程序的路径的情况下将消息发送给在远端处理器上执行的接收应用软件程序,并且,其中, 所述调度逻辑对从所述发送应用硬件模块传送的、以被传送到所述接收应用软件程序的消 息中的至少一个或多个消息进行路由。
3. —种通信系统,包括 一个或多个集成电路;远离所述一个或多个集成电路的、运行一个或多个应用软件程序的一个或多个处理器;集成电路中具有发送逻辑的至少一个发送应用硬件模块,所述发送逻辑控制从所述发 送应用硬件模块发送消息,其中,所述发送应用硬件模块在无需其发送逻辑被构造成已知 在远端处理器上执行的接收应用软件程序的地址或去往所述接收应用软件程序的路径的 情况下将消息发送给所述接收应用软件程序,以及位于所述集成电路上的调度逻辑,所述调度逻辑对从所述发送应用硬件模块传送的、 以被传送到所述接收应用软件程序的消息中的至少一个或多个消息进行路由。
4. 如权利要求3所述的通信系统,其中,所述调度逻辑对以下消息中的至少一个或多个消息进行路由A) 从所述发送应用硬件模块传送到同一集成电路上的一个或多个接收应用硬件模块 的消息,或者B) 从所述发送应用硬件模块传送的、以被传送到位于远端集成电路上的一个或多个接 收应用硬件模块的消息。
5. —种集成电路,包括多个实现了中间件的应用块,每个实现了中间件的应用块包括包含一个或多个应用对象的一个或多个应用模块,所述应用对象使用一个或多个专用 接口指示符进行消息处理;发送操作适配器,所述适配器发送一个或多个输出操作名和对象指示符;其中, 接收输入操作名和对象指示符的接收操作适配器;其中,实现了中间件的应用块的每 个接收操作适配器基于所述输入对象指示符将至少一个输入操作名转换成对应的专用操 作指示符,以供由所述对象指示符指定的相应应用模块的应用对象使用;并且,其中,实现 了中间件的应用块的每个发送操作适配器将由应用模块的应用对象指定的至少一个专用 操作指示符转换成对应的输出操作名,并且,其中,来自 一个应用块中的发送操作适配器的 操作名基于来自所述发送操作适配器的对象指示符被传递给另一应用块的接收操作适配 器。
6. 如权利要求5所述的集成电路,还包括消息路由器,该消息路由器传递各自包含任 选的操作名、任选的对象指示符和来自所述多个实现了中间件的应用块的其它数据的一个 或多个消息并引导一个或多个输出操作名和对象指示符到所述多个实现了中间件的应用 块。
7. 如权利要求6所述的集成电路,还包括耦合到所述消息路由器的调度模块,所述调 度模块根据规定的协议通过所述集成电路外部的通信传输来代理对象服务请求消息和应 答消息,所述对象服务请求消息包括具有一个或多个输入操作名和对象指示符的输入数据 消息以及具有一个或多个输出操作名和对象指示符的输出数据消息,并且所述对象服务应 答消息包括具有对象服务请求上下文信息的输入数据消息以及具有对象服务请求上下文 信息的输出数据消息。
8. 如权利要求6所述的集成电路,其中,预定的协议包括0RB协议。
9. 如权利要求5所述的集成电路,其中,每个接收操作适配器包括查找表,所述查找表 用于将一个或多个输入操作名映射到一个或多个专用接口值。
10. 如权利要求5所述的集成电路,其中,每个发送操作适配器包括查找表,所述查找 表用于将一个或多个专用接口值映射到一个或多个输出操作名。
11. 如权利要求5所述的集成电路,其中,所述多个应用块按照集成电路工艺被集成在 电路上,所述集成电路工艺包括FPGA、 PLD和ASIC中的至少一个。
12. 如权利要求7所述的集成电路,其中,输入数据包将输入操作名与服务请求相关联。
13. 如权利要求7所述的集成电路,其中,输出数据包将输出操作名与服务请求或对服 务请求的应答相关联。
14. 如权利要求6所述的集成电路,其中,所述消息路由器包括开关和总线中的至少一个。
15. 如权利要求14所述的集成电路,其中,所述开关包括部分连接的交叉开关、全连接 的交叉开关、Banyan开关、存储器开关中的至少一个。
16. 如权利要求6所述的集成电路,其中,所述路由器将所述多个应用模块相互串联耦合。
17. 如权利要求16所述的集成电路,其中,所述路由器将输入和输出请求通过所述多 个串联耦合的应用模块而管线传送到所述多个操作适配器之一。
18. 如权利要求8所述的集成电路,其中,所述ORB协议包括通用ORB间协议(GIOP)。
19. 一种可重构的现场可编程门阵列(FPGA),包括多个实现了中间件的应用块,每个实现了中间件的应用块包括使用一个或多个专用接 口指示符的一个或多个应用对象,所述一个或多个专用接口指示符由实现所述FPGA上的每个应用块的硬件限定语言来描述,其中,与一个应用块相关的专用指示符在无需修改实 现其他应用块的硬件限定语言的描述的情况下被动态修改。
全文摘要
根据本发明的一方面的一种通信系统包括一个或多个集成电路。所述一个或多个集成电路包括本地集成电路和远端集成电路中的至少一个。位于本地集成电路上的至少一个发送应用硬件模块具有发送逻辑,该发送逻辑控制从所述发送应用硬件模块发送消息。在所述本地集成电路和所述远端集成电路中的至少一个上具有至少一个接收应用硬件模块。发送应用硬件模块在无需其发送逻辑被构造成已知接收应用硬件模块的地址或去往所述接收应用硬件模块的路径的情况下将消息发送给所述接收应用硬件模块。位于本地集成电路上的调度逻辑路由至少一个或多个。
文档编号H04L12/28GK101711467SQ200880010167
公开日2010年5月19日 申请日期2008年1月28日 优先权日2007年1月26日
发明者乔·G·桑普森, 史蒂芬·戴勒, 威廉·贝克维斯 申请人:目标接口系统公司