CN113364757A - 一种fpga实现orb的方法 - Google Patents
一种fpga实现orb的方法 Download PDFInfo
- Publication number
- CN113364757A CN113364757A CN202110605066.3A CN202110605066A CN113364757A CN 113364757 A CN113364757 A CN 113364757A CN 202110605066 A CN202110605066 A CN 202110605066A CN 113364757 A CN113364757 A CN 113364757A
- Authority
- CN
- China
- Prior art keywords
- message
- operation function
- orb
- code
- private
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000004806 packaging method and process Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 20
- 238000011161 development Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 226
- 238000005538 encapsulation Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 239000000306 component Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种FPGA实现ORB的方法,其包括以下步骤:S1、将外部报文作为初始报文发送至ORB适配器;S2、通过ORB适配器对初始报文进行解析得到第二报文;S3、通过消息处理器对第二报文进行解析得到第三报文;S4、将来自波形应用模块的报文作为第四报文,通过消息处理器对第四报文进行转换与封装得到第五报文;S5、通过ORB适配器对第五报文进行转换与封装得到第六报文,将第六报文向外发送,完成FPGA实现ORB。本发明增加了FPGA实现ORB时的资源利用率、应用组件的易开发性、通用性和灵活性。
Description
技术领域
本发明涉及通信领域,具体涉及一种FPGA实现ORB的方法。
背景技术
SCA是美军在JTRS(Joint Tactical Radio System,联合作战无线系统)中制定的一种软件通信架构标准,其通过面向对象方法划分软硬件结构,建立起开放的系统标准,从而提供与具体实现无关的软件无线电开发框架,保证了软、硬件的可移植、可重构以及设备的互操作性。
SCA基于CORBA(Common Object Request Broker Architecture)等面向对象等技术,提高了软件定义无线电技术的互操作性和波形组件的可重用性、可一直性。并且在GPP(General Purpose Processor)上能够很好地实现。然而,随着无线通信的发展,其对带宽和速度等提出了更高的要求,GPP受工作方式和处理能力的限制,无法满足依靠DSP(Digital Signal Processor)、FPGA等专用处理器来完成高速数据处理任务的需求。
针对这一现状,目前存在3种在FPGA实现ORB的产品或方法(ORB,Object RequestBroker,是CORBA的核心,其任务是帮助客户调用对象上的方法,包括:定位对象、激活对象、把客户的请求传递给对象)。
(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代码生成器生成新的逻辑。
(2)OIS公司在一项专利中提出了一种新的基于FPGA的CORBA实现方法。该方法将ICO的ORB引擎的划分为ORB接收模块、ORB发送模块、接收操作适配器和发送操作适配器共4个功能模块。其中ORB接收模块和ORB发送模块仅负责解析和封装GIOP的报文头信息,而接收操作适配器和发送操作适配器负责解析和封装与每个应用模块相关的操作名称和参数。这样,每个应用模块都有自己专属的处理操作名称和参数的处理单元,从而保证FPGA上应用模块的灵活性和通用性,也可以满足部分重配置的需求。然而,这种方式必须为每个应用模块实现一个接收操作适配器和一个发送操作适配器,导致了应用模块的实现的复杂性,增加了应用模块的开发人员的负担;同时,FPGA内部各应用模块之间的信息传递必须经过发送操作适配器和接收发送操作适配器的处理,这必然限制了FPGA内外数据传输的高速需求;并且,当一块FPGA中运行的应用模块数量较多时,将浪费大量的计算资源和存储资源用于处理操作名称和参数,无法实现硬件资源的有效利用。
(3)中国人民解放军大学在2011年的一项专利《基于FPGA的COBAR通信装置》中提出了一种优化的FPGA实现COBAR方案。在该方法中,其核心是将ORB的实现,分成了主解析模块、主封装模块、互联模块、以及若干子解析模块和若干子封装模块。其中主解析模块负责接收外部(其他处理器)来的数据信息,主封装模块负责向外部发送数据信息,互联模块负责主解析模块和子解析模块、主封装模块和子封装模块的互联。该方案在一定程度上提高了FPGA的通用性和适用性,但存在模块结构多、FPGA开发实现复杂等问题,尤其是随着子解析模块和子封装模块的增多,互联模块的实现将占用较大的硬件资源,同时该方案中存在未解决高速通信下多个报文来时的处理问题,存在丢失报文的缺陷。
发明内容
针对现有技术中的上述不足,本发明提供的一种FPGA实现ORB的方法增加了FPGA实现ORB时的资源利用率、应用组件的易开发性、通用性和灵活性。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种FPGA实现ORB的方法,其包括以下步骤:
S1、接收外部报文,并将外部报文作为初始报文发送至ORB适配器;
S2、通过ORB适配器对初始报文进行解析得到第二报文,并将第二报文发送至消息处理器;
S3、通过消息处理器对第二报文进行解析得到第三报文,并将第三报文发送至波形应用模块;
S4、将来自波形应用模块的报文作为第四报文,通过消息处理器对第四报文进行转换与封装得到第五报文,将第五报文发送至ORB适配器;
S5、通过ORB适配器对第五报文进行转换与封装得到第六报文,将第六报文向外发送,完成FPGA实现ORB。
进一步地,步骤S2的具体方法包括以下子步骤:
S2-1、通过ORB适配器获取初始报文的GIOP信息,并根据GIOP信息判断初始报文是否为请求报文,若是则进入步骤S2-2,否则进入步骤S2-4;
S2-2、获取初始报文的请求标识号、应答标识、对象目标值、操作函数名,将初始报文的对象目标值进行标准化处理,形成固定长度的应用模块地址;对初始报文的操作函数名进行转换,得到第一操作函数编码;
S2-3、将应用模块地址、第一操作函数编码以及初始报文的报文信息进行拼接,并在拼接结果的最前端加上报文标识位,将请求标识号、应答标识和加上报文标识位的数据作为第二报文,将第二报文发送至消息处理器并进入步骤S3;
S2-4、获取初始报文的应答标识号和应答状态,将初始报文后续应答报文内容拼接在报文标识位,将应答标识号、应答状态和拼接了初始报文后续的应答报文内容的数据作为第二报文,将第二报文发送至消息处理器并进入步骤S3;其中初始报文后续的应答报文内容包括函数调用完成后返回的函数参数。
进一步地,步骤S2-2中对初始报文的操作函数名进行转换的具体方法包括以下子步骤:
S2-2-1、通过ORB适配器查找公用操作函数列表,判断初始报文的操作函数名与公用操作函数列表中的公用操作函数名是否一致,若是则将公用操作函数列表中的公用操作函数编码代替初始报文的操作函数名,得到第一操作函数编码;否则进入步骤S2-2-2;
S2-2-2、通过ORB适配器查找私用操作函数列表,判断初始报文的操作函数名与私用操作函数列表中的私用操作函数名是否一致,若是则将私用操作函数列表中的私用操作函数编码代替初始报文的操作函数名,并在代替后的私用操作函数编码前添加与公用操作函数编码对应长度的数值0,得到第一操作函数编码;否则舍弃当前报文。
进一步地,步骤S3的具体方法包括以下子步骤:
S3-1、通过消息处理器根据报文标识位判断第二报文是否为请求报文,若是则进入步骤S3-2,否则进入步骤S3-4;
S3-2、从第二报文中解析出应用模块地址,判断解析出的应用模块地址与消息处理器所对应的波形应用模块地址是否一致,若是则进入步骤S3-3;否则舍弃第二报文;
S3-3、解析并对第二报文中的操作函数编码进行转换,得到第二操作函数编码;将报文标识位的数据、第二操作函数编码以及第二报文的报文信息进行拼接得到第三报文,将第三报文发送至波形应用模块并进入步骤S4;
S3-4、将第二报文后续的应答报文内容进行标准化处理,将报文标识位的数据和标准化处理得到的数据进行拼接得到第三报文,将第三报文发送至波形应用模块并进入步骤S4。
进一步地,步骤S3-3中解析并对第二报文中的操作函数编码进行转换的具体方法包括以下子步骤:
S3-3-1、通过消息处理器解析第二报文中的操作函数编码,查找消息处理器中存储的公用操作函数列表,判断第二报文的操作函数名与公用操作函数列表中的公用操作函数编码是否一致,若是则将公用操作函数列表中的公用操作函数的二次编码代替第二报文的公用操作函数编码,得到第二操作函数编码;否则进入步骤S3-3-2;
S3-3-2、通过消息处理器查找私用操作函数列表,判断第二报文中的操作函数编码与私用操作函数列表中的私用操作函数名是否一致,若是则将私用操作函数列表中的私用操作函数的二次编码代替第二报文的操作函数编码,并在代替后的私用操作函数的二次编码前添加与公用操作函数编码对应长度的数值0,得到第二操作函数编码;否则舍弃当前报文。
进一步地,步骤S4的具体方法包括以下子步骤:
S4-1、通过消息处理器根据报文标识位判断第四报文是否为请求报文,若是则进入步骤S4-2,否则进入步骤S4-3;
S4-2、解析并对第四报文中的操作函数编码进行转换,得到第三操作函数编码;将报文标识位的数据、波形应用模块的地址、第三操作函数编码以及第四报文的报文信息进行拼接得到第五报文,将第五报文发送至ORB适配器并进入步骤S5;
S4-3、将第四报文中固定函数参数编码值转换为可变长度的函数参数名,将报文标识位的数据、可变长度的函数参数名和参数数据进行封装,得到第五报文,将第五报文发送至ORB适配器并进入步骤S5。
进一步地,步骤S4-2中解析并对第四报文中的操作函数编码进行转换的具体方法包括以下子步骤:
S4-2-1、通过消息处理器解析第四报文中的操作函数编码,查找公用操作函数列表,判断第四报文中的操作函数名与公用操作函数列表中的公用操作函数的二次编码是否一致,若是则将公用操作函数列表中的公用操作函数名代替第四报文中的公用操作编码,得到第三操作函数编码;否则进入步骤S4-2-2;
S4-2-2、将第四报文中操作函数编码的前半部分数值均编码为0;查找私用操作函数列表,判断第四报文中操作函数编码的后半部分与私用操作函数列表中的私用操作函数的二次编码是否一致,若是则将私用操作函数列表中的私用操作函数名代替第四报文中操作函数编码的后半部分;
S4-2-3、将编码为0的前半部分和用于代替第四报文中操作函数编码的后半部分的私用操作函数名进行拼接,得到第三操作函数编码。
进一步地,步骤S5的具体方法包括以下子步骤:
S5-1、通过ORB适配器根据报文标识位判断第五报文是否为请求报文,若是则进入步骤S5-2,否则进入步骤S5-3;
S5-2、将第五报文中的应用模块地址转换为GIOP报文要求的可变长度的对象目标值,将第五报文中的操作函数编码进行转换,得到第四操作函数编码;将第五报文对应的对象目标值、第四操作函数编码和第五报文的报文信息进行封装,并在封装结果前端添加协议版本号、字节序、消息类型和消息长度,得到第六报文,将第六报文向外发送,完成FPGA实现ORB;
S5-3、添加应答状态和与对应的请求报文中的请求标识号一致的应答标识号,拼接第五报文后续的应答报文内容得到第六报文,将第六报文向外发送,完成FPGA实现ORB。
进一步地,步骤S5-2中将第五报文中的操作函数编码进行转换的具体方法为:
通过ORB适配器查找公用操作函数列表和私用操作函数列表,当第五报文中的操作函数编码与公用操作函数列表中的第二项公用操作函数编码一致时,将公用操作函数列表中的公用操作函数名代替第五报文中的操作函数编码,得到第四操作函数编码;当第五报文中的操作函数编码与私用操作函数列表中的私用操作函数编码一致时,将私用操作函数列表中的私用操作函数名代替第五报文中的操作函数编码,得到第四操作函数编码。
本发明的有益效果为:
(1)结构简单:整个实现ORB的FPGA分成了ORB适配器和消息处理器两个部分,不需要额外的结构部件,同时ORB适配器及消息处理器内部结构实现简单高效,采用转换方式,将可变长度的对象目标值、函数操作名转换成了固定长度,并采用二次编码转换的方式,进一步降低资源,总体上大大降低了对FPGA硬件资源的消耗。
(2)可拓展性:由于采用的一个ORB适配器和多个消息处理器的结构,使得增加应用波形模块的工作变得简单,并且可通过扩展编码地址空间,实现更多应用波形模块的集成,同时可通过扩展函数编码位数的方式实现更多函数的标示。
(3)通用性:其核心组件ORB适配器具有普遍性的功能,因为与应用波形模块高度耦合的功能均实现在了消息处理器上,因此ORB适配器可复制扩展到多个FPGA上,不存在个体差异,可实现多FPGA的分配协调工作。
附图说明
图1为本发明的流程示意图;
图2为ORB适配器的具体实现结构示意图;
图3为消息处理器的具体实现结构示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1、图2和图3所示,该FPGA实现ORB的方法主要基于ORB适配器、消息处理器和波形应用模块。ORB适配器主要由4个单元部分组成,分别是报文接收模块、第一报文解析模块、第一报文封装模块以及报文汇集模块,其主要分为报文解析和封装两大处理流程。消息处理器主要由2个单元部分组成,分别是第二报文解析模块和第二报文封装模块。其中ORB适配器是FPGA与外部系统进行数据交换的核心单元,主要完成GIOP报文的接收、解析和封装处理,而消息处理器主要完成ORB适配器与实际应用波形模块的数据转换的功能。
ORB适配器进行报文解析的工作过程如下:
(1)报文接收模块接收外部系统单元发送来的GIOP报文,并存储在内部缓存FIFO结构的单元中,以缓解大量GIOP报文到来时而报文解析处理不及时导致的报文信息丢失。报文接收模块查询第一报文解析模块的状态标志,当状态标志为0时,代表第一报文解析模块为空闲状态,此时,将缓存的GIOP报文发送给第一报文解析模块,当状态标志为1时,代表第一报文解析模块为工作状态,此时,不向第一报文解析模块发送缓存的GIOP报文。
(2)第一报文解析模块接收到一个GIOP报文后,将状态标志置为1,并解析出GIOP(General Inter-ORB Protocol,通用ORB互通协议)信息,包括协议版本号、字节序(大端模式还是小端模式)、消息类型和消息长度,然后根据消息类型判断接收的消息是GIOP请求报文还是GIOP应答报文。
当消息为请求报文时,继续解析后续报文信息,提取出请求标识号、应答标识、对象目标值、操作函数名;然后将对象目标值进行标准化处理,形成固定长度的应用模块地址,应用模块地址使用16bit表示,可代表多达65536个应用模块;对操作函数名进行转换处理,查找公用操作函数列表,当操作函数名与公用操作函数列表中的第一项公用操作函数名一致时,将公用操作函数列表中的第二项公用操作函数编码代替原有的公用操作函数名。当操作函数名在公用操作函数列表中未找到对应名称时,将公用函数编码值置为0,继续查找私用操作函数列表,当操作函数名与私用操作函数列表中的第一项私用操作函数名一致时,将私用操作函数列表中的第二项私用操作函数编码代替原有的私用操作函数名。最后将应用模块地址、公用函数编码、私用函数编码以及后续的报文信息拼接,并在前面加上1bit的报文标识位(值为0),发送给各个应用波形的消息处理器。
当消息为应答报文时,继续解析提取出应答标识号(与对应的请求报文中的请求标识号一致)以及应答状态,然后将后续应答报文内容(函数调用完成后返回的函数参数)拼接在1bit的报文标识位(值为1)之后,一起传递给消息处理器。
ORB适配器进行报文封装的工作过程如下:
(1)报文汇集模块接收消息处理器发送来的报文信息,并存储在内部缓存FIFO结构的单元中,以缓解大量报文到来时而报文封装处理不及时导致的报文信息丢失。报文汇集模块查询第一报文封装模块的状态标志,当状态标志为0时,代表第一报文封装模块为空闲状态,此时,将缓存的报文发送给第一报文封装模块,当状态标志为1时,代表第一报文封装模块为工作状态,此时,不向第一报文封装模块发送缓存的报文信息。
(2)第一报文封装模块接收到一个报文时,将状态标志置为1,并根据1bit的报文标识判断是请求报文还是应答报文。
当要求封装的消息为请求报文时,将应用模块地址进行转换处理,即将16bit固定长度的应用模块地址,转换为GIOP报文要求的可变长度的对象目标值;对操作函数编码进行转换处理,查找公用操作函数列表,当操作函数编码与公用操作函数列表中的第二项公用操作函数编码一致时,将公用操作函数列表中的第一项公用操作函数名代替原有的公用操作函数编码。当操作函数编码在公用操作函数列表中未找到对应名称时,继续查找私用操作函数列表,当操作函数名与私用操作函数列表中的第二项私用操作函数编码一致时,将私用操作函数列表中的第一项私用操作函数名代替原有的私用操作函数编码。最后将对象目标值、公用操作函数、私用操作函数以及后续的数据信息拼接,并按照GIOP报文的标准格式进行封装,在前面添加协议版本号、字节序(大端模式还是小端模式)、消息类型和消息长度,最后将封装的GIOP请求报文发送出去。
当要求封装为应答报文时,添加应答标识号(与对应的请求报文中的请求标识号一致)以及应答状态,然后拼接后续的报文内容(函数调用完成后返回的函数参数及数值),按照GIOP报文的标准格式封装完成后发送出去。
消息处理器进行报文解析的工作过程如下:
(1)消息处理器的报文解析模块接收到ORB适配器发来的报文信息后,首先根据第1位报文标识位判断是请求报文还是应答报文。
(2)当报文为请求报文时,继续从报文中解析出应用模块地址,将解析出的应用模块地址与消息处理器所对应的波形应用模块地址进行比较判断,不一致时,丢弃该请求报文;一致时,继续解析出操作函数编码,将操作函数编码与消息处理器所存储的公用/私用操作函数列表进行匹配,对操作函数编码进行转换处理,查找公用操作函数列表,当操作函数名与公用操作函数列表中的第一项公用操作函数编码一致时,将公用操作函数列表中的第二项公用操作函数二次编码代替原有的公用操作编码。当操作函数编码在公用操作函数列表中未找到对应编码时,将公用操作函数编码设为0,当操作函数编码与私用操作函数列表中的第一项私用操作函数编码一致时,将私用操作函数列表中的第二项私用操作函数二次编码代替原有的私用操作函数编码。最后将1bit的报文标识、公用函数编码、私用函数编码以及后续的报文信息拼接发送给波形应用模块。
(3)当报文为应答报文时,将后续应答报文内容进行标准化处理,即通过函数参数列表,将可变长度的函数参数转换为固定函数参数编码值,最后将1bit的报文标识以及转换后的报文内容发送给波形应用模块。
消息处理器进行报文封装的工作过程如下:
(1)消息处理器的报文封装模块接收波形应用模块传递来的数据,根据1bit的报文标识判断封装的是GIOP请求报文还是GIOP应答报文。
(2)当需要封装请求报文时,将操作函数编码与消息处理器所存储的公用/私用操作函数列表进行匹配,对操作函数编码进行反转换处理,查找公用操作函数列表,当操作函数名与公用操作函数列表中的第二项公用操作函数二次编码一致时,将公用操作函数列表中的第一项公用操作函数编码代替原有的公用操作编码。同样,当操作函数与私用操作函数列表中的第二项私用操作函数二次编码一致时,将私用操作函数列表中的第一项私用操作函数编码代替原有的私用操作函数编码。最后将1bit的报文标识、波形应用模块的地址、公用函数编码、私用函数编码以及后续的报文信息拼接发送给ORB适配器。
(3)当需要封装的是应答报文时,通过查找函数参数列表,将固定函数参数编码值转换为可变长度的函数参数名,并将1bit的报文标识以及转换后函数参数名以及参数数据封装,发送给ORB适配器。
在本发明的具体实施过程中,本发明将操作的函数进行了归一化处理(标准化),划分为了公用操作函数和私用操作函数,公用操作函数主要包括各种应用波形模块的初始化、配参、查询、链接建立及断开、启动、传数、停止等一系列通用化功能操作,而私用操作函数主要是各个应用波形模块的特有的功能操作。
本发明在ORB适配器中存储有一个公用操作函数列表,该列表具有两列数据项,第一列数据项为GIOP请求报文包含的可变长度的公用操作函数名,第二列数据项为进行归一化处理后的固定长度的公用操作函数编码,该编码使用8bit进行表示,可代表255种公用操作函数名,8bit全为0代表无公用操作函数。
本发明在ORB适配器中也会存储有一个私用操作函数总列表,该列表具有两列数据项,第一列数据项为GIOP请求报文包含的可变长度的私用操作函数名,第二列数据项为进行归一化处理后的固定长度的私用操作函数编码,该编码使用8bit进行表示,可对应255种私用操作函数名,8bit全为0代表无私用操作函数。
本发明在各个消息处理器中会存储一个公用操作函数二次编码列表,以及一个私用操作函数二次编码表,该表代表私用操作函数总列表的一部分函数,通过二次编码映射,将公用操作函数及私用操作函数长度进一步缩减,只包含有与各个波形应用模块公用和私用的操作函数,缩减了fpga的硬件资源消耗(例如某个波形应用模块只有10种公用操作函数,则可将8bit的公用函数二次编码转换成4bit的编码表示)。
此外,消息处理器中还会存储一个函数参数列表,该列表具有两列数据项,第一列数据项为GIOP应答报文包含的可变长度的函数参数名,第二列数据项为进行归一化处理后的固定长度的函数参数编码。通过这种归一化的编码操作,实现了可变长度的函数名、函数参数转换为固定长度的函数编码值,节省了FPGA硬件资源的消耗。
在具体实施过程中,从波形应用模块到ORB适配器的数据可以大致看作是从ORB适配器到波形应用模块的逆过程。
综上所述,本发明增加了FPGA实现ORB时的资源利用率、应用组件的易开发性、通用性和灵活性。
Claims (9)
1.一种FPGA实现ORB的方法,其特征在于,包括以下步骤:
S1、接收外部报文,并将外部报文作为初始报文发送至ORB适配器;
S2、通过ORB适配器对初始报文进行解析得到第二报文,并将第二报文发送至消息处理器;
S3、通过消息处理器对第二报文进行解析得到第三报文,并将第三报文发送至波形应用模块;
S4、将来自波形应用模块的报文作为第四报文,通过消息处理器对第四报文进行转换与封装得到第五报文,将第五报文发送至ORB适配器;
S5、通过ORB适配器对第五报文进行转换与封装得到第六报文,将第六报文向外发送,完成FPGA实现ORB。
2.根据权利要求1所述的FPGA实现ORB的方法,其特征在于,步骤S2的具体方法包括以下子步骤:
S2-1、通过ORB适配器获取初始报文的GIOP信息,并根据GIOP信息判断初始报文是否为请求报文,若是则进入步骤S2-2,否则进入步骤S2-4;
S2-2、获取初始报文的请求标识号、应答标识、对象目标值、操作函数名,将初始报文的对象目标值进行标准化处理,形成固定长度的应用模块地址;对初始报文的操作函数名进行转换,得到第一操作函数编码;
S2-3、将应用模块地址、第一操作函数编码以及初始报文的报文信息进行拼接,并在拼接结果的最前端加上报文标识位,将请求标识号、应答标识和加上报文标识位的数据作为第二报文,将第二报文发送至消息处理器并进入步骤S3;
S2-4、获取初始报文的应答标识号和应答状态,将初始报文后续应答报文内容拼接在报文标识位,将应答标识号、应答状态和拼接了初始报文后续的应答报文内容的数据作为第二报文,将第二报文发送至消息处理器并进入步骤S3;其中初始报文后续的应答报文内容包括函数调用完成后返回的函数参数。
3.根据权利要求2所述的FPGA实现ORB的方法,其特征在于,步骤S2-2中对初始报文的操作函数名进行转换的具体方法包括以下子步骤:
S2-2-1、通过ORB适配器查找公用操作函数列表,判断初始报文的操作函数名与公用操作函数列表中的公用操作函数名是否一致,若是则将公用操作函数列表中的公用操作函数编码代替初始报文的操作函数名,得到第一操作函数编码;否则进入步骤S2-2-2;
S2-2-2、通过ORB适配器查找私用操作函数列表,判断初始报文的操作函数名与私用操作函数列表中的私用操作函数名是否一致,若是则将私用操作函数列表中的私用操作函数编码代替初始报文的操作函数名,并在代替后的私用操作函数编码前添加与公用操作函数编码对应长度的数值0,得到第一操作函数编码;否则舍弃当前报文。
4.根据权利要求1所述的FPGA实现ORB的方法,其特征在于,步骤S3的具体方法包括以下子步骤:
S3-1、通过消息处理器根据报文标识位判断第二报文是否为请求报文,若是则进入步骤S3-2,否则进入步骤S3-4;
S3-2、从第二报文中解析出应用模块地址,判断解析出的应用模块地址与消息处理器所对应的波形应用模块地址是否一致,若是则进入步骤S3-3;否则舍弃第二报文;
S3-3、解析并对第二报文中的操作函数编码进行转换,得到第二操作函数编码;将报文标识位的数据、第二操作函数编码以及第二报文的报文信息进行拼接得到第三报文,将第三报文发送至波形应用模块并进入步骤S4;
S3-4、将第二报文后续的应答报文内容进行标准化处理,将报文标识位的数据和标准化处理得到的数据进行拼接得到第三报文,将第三报文发送至波形应用模块并进入步骤S4。
5.根据权利要求4所述的FPGA实现ORB的方法,其特征在于,步骤S3-3中解析并对第二报文中的操作函数编码进行转换的具体方法包括以下子步骤:
S3-3-1、通过消息处理器解析第二报文中的操作函数编码,查找消息处理器中存储的公用操作函数列表,判断第二报文的操作函数名与公用操作函数列表中的公用操作函数编码是否一致,若是则将公用操作函数列表中的公用操作函数的二次编码代替第二报文的公用操作函数编码,得到第二操作函数编码;否则进入步骤S3-3-2;
S3-3-2、通过消息处理器查找私用操作函数列表,判断第二报文中的操作函数编码与私用操作函数列表中的私用操作函数名是否一致,若是则将私用操作函数列表中的私用操作函数的二次编码代替第二报文的操作函数编码,并在代替后的私用操作函数的二次编码前添加与公用操作函数编码对应长度的数值0,得到第二操作函数编码;否则舍弃当前报文。
6.根据权利要求1所述的FPGA实现ORB的方法,其特征在于,步骤S4的具体方法包括以下子步骤:
S4-1、通过消息处理器根据报文标识位判断第四报文是否为请求报文,若是则进入步骤S4-2,否则进入步骤S4-3;
S4-2、解析并对第四报文中的操作函数编码进行转换,得到第三操作函数编码;将报文标识位的数据、波形应用模块的地址、第三操作函数编码以及第四报文的报文信息进行拼接得到第五报文,将第五报文发送至ORB适配器并进入步骤S5;
S4-3、将第四报文中固定函数参数编码值转换为可变长度的函数参数名,将报文标识位的数据、可变长度的函数参数名和参数数据进行封装,得到第五报文,将第五报文发送至ORB适配器并进入步骤S5。
7.根据权利要求6所述的FPGA实现ORB的方法,其特征在于,步骤S4-2中解析并对第四报文中的操作函数编码进行转换的具体方法包括以下子步骤:
S4-2-1、通过消息处理器解析第四报文中的操作函数编码,查找公用操作函数列表,判断第四报文中的操作函数名与公用操作函数列表中的公用操作函数的二次编码是否一致,若是则将公用操作函数列表中的公用操作函数名代替第四报文中的公用操作编码,得到第三操作函数编码;否则进入步骤S4-2-2;
S4-2-2、将第四报文中操作函数编码的前半部分数值均编码为0;查找私用操作函数列表,判断第四报文中操作函数编码的后半部分与私用操作函数列表中的私用操作函数的二次编码是否一致,若是则将私用操作函数列表中的私用操作函数名代替第四报文中操作函数编码的后半部分;
S4-2-3、将编码为0的前半部分和用于代替第四报文中操作函数编码的后半部分的私用操作函数名进行拼接,得到第三操作函数编码。
8.根据权利要求1所述的FPGA实现ORB的方法,其特征在于,步骤S5的具体方法包括以下子步骤:
S5-1、通过ORB适配器根据报文标识位判断第五报文是否为请求报文,若是则进入步骤S5-2,否则进入步骤S5-3;
S5-2、将第五报文中的应用模块地址转换为GIOP报文要求的可变长度的对象目标值,将第五报文中的操作函数编码进行转换,得到第四操作函数编码;将第五报文对应的对象目标值、第四操作函数编码和第五报文的报文信息进行封装,并在封装结果前端添加协议版本号、字节序、消息类型和消息长度,得到第六报文,将第六报文向外发送,完成FPGA实现ORB;
S5-3、添加应答状态和与对应的请求报文中的请求标识号一致的应答标识号,拼接第五报文后续的应答报文内容得到第六报文,将第六报文向外发送,完成FPGA实现ORB。
9.根据权利要求8所述的FPGA实现ORB的方法,其特征在于,步骤S5-2中将第五报文中的操作函数编码进行转换的具体方法为:
通过ORB适配器查找公用操作函数列表和私用操作函数列表,当第五报文中的操作函数编码与公用操作函数列表中的第二项公用操作函数编码一致时,将公用操作函数列表中的公用操作函数名代替第五报文中的操作函数编码,得到第四操作函数编码;当第五报文中的操作函数编码与私用操作函数列表中的私用操作函数编码一致时,将私用操作函数列表中的私用操作函数名代替第五报文中的操作函数编码,得到第四操作函数编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110605066.3A CN113364757B (zh) | 2021-05-31 | 2021-05-31 | 一种fpga实现orb的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110605066.3A CN113364757B (zh) | 2021-05-31 | 2021-05-31 | 一种fpga实现orb的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113364757A true CN113364757A (zh) | 2021-09-07 |
CN113364757B CN113364757B (zh) | 2023-02-10 |
Family
ID=77530655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110605066.3A Active CN113364757B (zh) | 2021-05-31 | 2021-05-31 | 一种fpga实现orb的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113364757B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156664A1 (en) * | 2001-02-20 | 2002-10-24 | Willcox William J. | Method and apparatus for service request handling |
US20070130570A1 (en) * | 2005-11-21 | 2007-06-07 | Prismtech Corporation | Method and apparatus for accelerating generic inter-ORB protocol for a CORBA ORB |
US20080229326A1 (en) * | 2007-01-26 | 2008-09-18 | Objective Interface Systems, Inc. | Hardware communications infrastructure supporting location transparency and dynamic partial reconfiguration |
CN102208998A (zh) * | 2011-06-08 | 2011-10-05 | 中国人民解放军国防科学技术大学 | 基于fpga的corba通信装置 |
US20130097616A1 (en) * | 2011-10-12 | 2013-04-18 | Raytheon Company | Corba embedded inter-orb protocol (eiop) |
US20130139146A1 (en) * | 2011-11-29 | 2013-05-30 | Raytheon Company | Optimized SCA CORBA descriptor for SCA CORBA descriptor files |
-
2021
- 2021-05-31 CN CN202110605066.3A patent/CN113364757B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156664A1 (en) * | 2001-02-20 | 2002-10-24 | Willcox William J. | Method and apparatus for service request handling |
US20070130570A1 (en) * | 2005-11-21 | 2007-06-07 | Prismtech Corporation | Method and apparatus for accelerating generic inter-ORB protocol for a CORBA ORB |
US20080229326A1 (en) * | 2007-01-26 | 2008-09-18 | Objective Interface Systems, Inc. | Hardware communications infrastructure supporting location transparency and dynamic partial reconfiguration |
CN102208998A (zh) * | 2011-06-08 | 2011-10-05 | 中国人民解放军国防科学技术大学 | 基于fpga的corba通信装置 |
US20130097616A1 (en) * | 2011-10-12 | 2013-04-18 | Raytheon Company | Corba embedded inter-orb protocol (eiop) |
US20130139146A1 (en) * | 2011-11-29 | 2013-05-30 | Raytheon Company | Optimized SCA CORBA descriptor for SCA CORBA descriptor files |
Non-Patent Citations (3)
Title |
---|
S.S. YAU; F. KARIM: "Context-sensitive object request broker for ubiquitous computing environments", 《 PROCEEDINGS EIGHTH IEEE WORKSHOP ON FUTURE TRENDS OF DISTRIBUTED COMPUTING SYSTEMS. FTDCS 2001》 * |
佚名: "基于FPGA的CORBA通信系统设计方案", 《与非网》 * |
舒梦雨; 李丁山; 李鹰; 秦川: "软件无线电FPGA中间件技术研究", 《软件导刊》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113364757B (zh) | 2023-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414416B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN110381093B (zh) | 数据协议转换的方法、装置、数据传输的系统及电子设备 | |
CN107169069B (zh) | 分布式分级抽取多应用方法和数据抽取应用器 | |
CN112751845B (zh) | 网络协议解析方法、系统及装置 | |
CN111294235B (zh) | 数据处理方法、装置、网关及可读存储介质 | |
CN110677427B (zh) | 多报文解析方法 | |
CN104852939B (zh) | 一种部署能力接口的方法和系统 | |
CN109861998B (zh) | 一种基于北斗短报文协议的插件式动态解析系统及方法 | |
CN111245776A (zh) | 车载数据传输方法、装置、设备和存储介质 | |
CN102480335A (zh) | 一种业务数据的发送方法及系统 | |
WO2014139270A1 (zh) | 智能业务系统的业务实现方法及装置、智能业务系统 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN114760369A (zh) | 一种协议元数据提取方法、装置、设备及存储介质 | |
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN110071839B (zh) | 支持数字信号处理器的corba通信装置 | |
CN206922798U (zh) | 一种多协议转换器、数据发送设备及通信系统 | |
CN114173355B (zh) | 一种设计运行态分离的网络指令动态执行方法及系统 | |
CN113364757B (zh) | 一种fpga实现orb的方法 | |
CN116156012B (zh) | 通用的异构物联网设备标准化接入和数据解析系统与方法 | |
CN112817539A (zh) | 一种工业数据存储方法、系统、电子设备及存储介质 | |
CN115801924A (zh) | 一种消息处理方法、系统与存储介质 | |
CN113973105B (zh) | 一种简化服务总线上soap消息的系统及方法 | |
CN113591448B (zh) | 报表生成方法、装置及存储介质 | |
CN114860228A (zh) | 基于Module Federation技术实现的模块中心化共享系统 | |
CN113676521A (zh) | 业务请求的响应方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A method of implementing ORB using FPGA Granted publication date: 20230210 Pledgee: Agricultural Bank of China Limited by Share Ltd. Chengdu high tech Industrial Development Zone Branch Pledgor: Chengdu Xieying Technology Co.,Ltd. Registration number: Y2024510000088 |