CN117234977B - 数据处理方法、系统、设备及计算机可读存储介质 - Google Patents
数据处理方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117234977B CN117234977B CN202311490238.2A CN202311490238A CN117234977B CN 117234977 B CN117234977 B CN 117234977B CN 202311490238 A CN202311490238 A CN 202311490238A CN 117234977 B CN117234977 B CN 117234977B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- transmitted
- real
- state
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 579
- 230000005540 biological transmission Effects 0.000 claims abstract description 191
- 238000005538 encapsulation Methods 0.000 claims abstract description 123
- 238000004806 packaging method and process Methods 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims description 31
- 230000002776 aggregation Effects 0.000 claims description 29
- 238000004220 aggregation Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004931 aggregating effect Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种数据处理方法、系统、设备及计算机可读存储介质,涉及数据传输领域,为解决非标准的数据封装格式产生的非标准数据流不能与用户逻辑适配的问题,该数据处理方法包括:当接收到实时数据,确定实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;判断是否存储器中未存储待传输数据且当前数据流封装格式为标准数据流封装格式;若是,将实时数据作为当前传输数据输出;若否,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。本发明能够将非标准数据流转换为标准数据流,以适配后端的用户逻辑设备。
Description
技术领域
本发明涉及数据传输领域,特别涉及一种数据处理方法、系统、设备及计算机可读存储介质。
背景技术
AXI(Advanced Extensible Interface,高级扩展接口)是ARM(Advanced RISCMachines,RISC微处理器)定义的接口协议,包含在AMBA(Advanced Microcontroller BusArchitectur,高级微控制器总线架构)标准中。AXI接口(AMBA4.0)分三种类型,一是AXI4(AXI4-FULL),其用于满足高性能存储器映射需求,二是AXI4-LITE,其用于简单的低吞吐量存储器映射通信,三是AXI4-STREAM,其用于高速数据流传输。
PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)总线是用来互联CPU(Central Processing Unit,中央处理器)和外围设备的高速接口总线,因其协议相对复杂,大部分FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)都集成了PCIe硬核来实现数据通信。这样不仅不占用FPGA的可编程资源,同时提高了应用的可靠性。PCIe硬核与用户逻辑的主要数据通信接口为AXI4-STREAM,但在部分采用第三方提供的PCIe硬核的FPGA中,其提供给用户逻辑的AXI4-STREAM存在一些非标准的数据格式封装,产生非标准数据流,如单时钟周期发送多个数据包,而标准数据流在单时钟周期只能发送一个数据包,因此,非标准的数据格式封装不能满足AXI4-STREAM的接口协议标准,很难适配后端的用户逻辑设备。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种数据处理方法、系统、设备及计算机可读存储介质,能够将非标准数据流转换为标准数据流,以适配后端的用户逻辑设备。
为解决上述技术问题,本发明提供了一种数据处理方法,应用于电子设备,所述电子设备包括存储器,所述数据处理方法包括:
当接收到实时数据,确定所述实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
判断是否所述存储器中未存储待传输数据且当前数据流封装格式为所述标准数据流封装格式;
若是,将所述实时数据作为当前传输数据输出;
若否,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出。
所述数据流封装格式还包括不满足所述目标传输协议要求的非标准数据流封装格式,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
若所述存储器中未存储所述待传输数据,且所述当前数据流封装格式为所述非标准数据流封装格式,将所述实时数据的高字节数据写入所述存储器;
基于所述实时数据的低字节数据得到所述标准数据流封装格式的当前传输数据输出。
所述存储器包括第一存储器和第二存储器,所述第一存储器的位宽大于所述第二存储器的位宽,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态;
根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器;
将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出。
所述第一存储器为先入先出存储器,所述第二存储器为寄存器。
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态之前,所述数据处理方法还包括:
在所述电子设备的随机存取存储器中配置所述先入先出存储器。
所述寄存器的数量为多个。
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态之前,所述数据处理方法还包括:
确定所述电子设备的目标接口对应的标准数据位宽;
将所述寄存器的位宽配置为所述标准数据位宽的一半。
所述待传输数据包括第一待传输数据和/或第二待传输数据;
所述第一存储状态包括对应所述第一存储器未存储有所述第一待传输数据的第一状态,以及对应所述第一存储器存储有所述第一待传输数据的第二状态;
所述第二存储状态包括对应所述第二存储器未存储有所述第二待传输数据的第三状态,以及对应所述第二存储器存储有所述第二待传输数据的第四状态。
所述数据处理方法还包括:
当对所述第一存储器执行写入操作,将所述第一存储器的第一状态标志位的值置为1,当对所述第一存储器执行读取操作,将所述第一存储器的第一状态标志位的值置为0,当对所述第一存储器同时执行所述写入操作和所述读取操作,保持所述第一状态标志位的值不变;
当对所述第二存储器执行所述写入操作,将所述第二存储器的第二状态标志位的值置为1,当对所述第二存储器执行所述读取操作,将所述第二存储器的第二状态标志位的值置为0,当对所述第二存储器同时执行所述写入操作和所述读取操作,保持所述第二状态标志位的值不变;
根据所述第一状态标志位的值确定所述第一存储器的第一存储状态;
根据所述第二状态标志位的值确定所述第二存储器的第二存储状态。
根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第三状态,确定所述实时数据的目标写入存储器为所述第一存储器。
将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第三状态,判断所述第一存储器中的所述第一待传输数据的低字节数据中是否包含传输结束符;
若是,取出所述第一存储器中的所述第一待传输数据的低字节数据,将所述第一待传输数据的低字节数据作为所述标准数据流封装格式的当前传输数据并输出,将所述第一待传输数据的高字节数据写入所述第二存储器,将所述实时数据写入所述第一存储器;
若否,取出所述第一存储器中的所述第一待传输数据,将所述第一待传输数据作为所述标准数据流封装格式的当前传输数据并输出。
根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,确定所述实时数据的目标写入存储器为所述第一存储器和所述第二存储器。
将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若是,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据并输出,将所述实时数据写入所述第一存储器;
若否,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据与所述实时数据的低字节数据聚合得到所述标准数据流封装格式的当前传输数据并输出,将所述实时数据的高字节数据写入所述第二存储器。
根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第四状态,确定所述实时数据的目标写入存储器为所述第一存储器。
将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若否,取出所述第一存储器中的所述第一待传输数据的低字节数据及所述第二存储器中的所述第二待传输数据,将所述第一待传输数据的低字节数据及所述第二存储器中的所述第二待传输数据聚合得到所述标准数据流封装格式的当前传输数据并输出,将所述第一存储器中的所述第一待传输数据的高字节数据写入所述第二存储器,将所述实时数据写入所述第一存储器;
若是,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据并输出,将所述实时数据写入所述第一存储器。
目标传输协议为高级拓展接口流协议。
为解决上述技术问题,本发明还提供了一种数据处理设备,包括:
存储模块,用于存储实时数据和待传输数据;
控制模块,用于当接收到所述实时数据,确定所述实时数据的当前数据流封装格式,判断是否所述存储模块中未存储所述待传输数据且当前数据流封装格式为标准数据流封装格式,若是,将所述实时数据写入所述存储模块,并将所述待传输数据写入聚合模块;
所述聚合模块,用于将所述待传输数据转换为所述标准数据流封装格式的当前传输数据,或将所述待传输数据及所述实时数据转换为所述标准数据流封装格式的当前传输数据;
选择模块,用于根据选择指令,输出对应的所述当前传输数据。
所述存储模块包括寄存器和先入先出存储器;
所述聚合模块包括:
第一聚合单元,用于对所述实时数据及从所述先入先出存储器取出的数据进行聚合,得到第一聚合数据;
第二聚合单元,用于对从所述先入先出存储器取出的数据及从所述寄存器取出的数据进行聚合,得到第二聚合数据;
第三聚合单元,用于对所述实时数据及从所述寄存器取出的数据进行聚合,得到第三聚合数据。
所述选择模块用于根据选择指令,选择所述实时数据、所述待传输数据、所述第一聚合数据、所述第二聚合数据及所述第三聚合数据中的一个作为当前传输数据。
为解决上述技术问题,本发明还提供了一种数据处理系统,应用于电子设备,所述电子设备包括存储器,所述数据处理系统包括:
第一确定模块,用于当接收到实时数据,确定所述实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
判断模块,用于判断是否所述存储器中未存储待传输数据且当前数据流封装格式为所述标准数据流封装格式,若是,生成第一触发指令,若否,生成第二触发指令;
输出模块,用于当接收到所述第一触发指令,将所述实时数据作为当前传输数据输出,当接收到所述第二触发指令,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出。
为解决上述技术问题,本发明还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任意一项所述的数据处理方法的步骤。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的数据处理方法的步骤。
本发明提供了一种数据处理方法,在电子设备中设置存储器,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储器中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储器中,并按预设规则取出存储器中的数据,将存储器的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。本发明还提供了一种数据处理系统、电子设备及计算机可读存储介质,具有和上述数据处理方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种数据处理方法的步骤流程图;
图2为本发明所提供的另一种数据处理方法的步骤流程图;
图3为本发明所提供的一种数据处理设备的结构示意图;
图4为本发明所提供的一种数据处理系统的结构示意图。
具体实施方式
本发明的核心是提供一种数据处理方法、系统、设备及计算机可读存储介质,能够将非标准数据流转换为标准数据流,以适配后端的用户逻辑设备。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,请参照图1,图1为本发明所提供的一种数据处理方法的步骤流程图,该数据处理方法包括:
S101:当接收到实时数据,确定实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
为便于理解本实施例的方案,对本实施例所提供的一种数据处理方法适用的电子设备进行说明,该电子设备包括目标接口,目标接口用于与后端的用户逻辑设备连接,电子设备包括但不限于FPGA,目标接口包括但不限于AXI4-Stream接口,该电子设备还包括存储器,存储器可以为先入先出存储器、寄存器或其组合,本实施例中对于先入先出存储器、寄存器的配置数量不做限定。
下面以电子设备为FPGA为例对本实施例的数据处理方法进行说明,实时数据为FPGA中的PCIe硬核提供的数据,该实时数据可以是按照标准数据流封装格式封装得到的数据流,也可以是按照非标准数据流封装格式封装得到的数据流,示例性地,按照标准数据流封装格式封装的数据流在单个时钟周期只发送一个数据包,按照非标准数据流封装格式封装的数据流在单个时钟周期可能发送多个数据包,非标准数据流封装格式封装的数据流不满足目标接口的目标传输协议要求,而后端的用户逻辑设备仅能对标准数据流封装格式封装的数据流进行解析,导致非标准封装格式数据流与后端的用户逻辑设备不适配。
请参照表1,表1中A代表数据包的包头,B代表数据包的包尾,D代表有效数据,X代表无效数据,SOT[0]表示第一个数据包的传输开始符,EOT[0]代表第一个数据包的传输结束符,SOT[1]表示第二个数据包的传输开始符,EOT[1]代表第二个数据包的传输结束符。
表1 非标准封装格式数据流组合表
参照表1,在单个256bit的数据中实际发送了两个数据包,以最大负载MAX_PAYLOAD=1024为例,可以理解,此时需要一个深度至少为512bit的先入先出存储器实现非标准数据流封装到标准的数据流封装的转化。
S102:判断是否存储器中未存储待传输数据且当前数据流封装格式为标准数据流封装格式,若是,执行S103,若否,执行S104;
S103:将实时数据作为当前传输数据输出;
S104:将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
本实施例中,在接收到PCIe硬核发送的实时数据后,先判断存储器中是否存在待传输数据,如果存储器不存在待传输数据,且实时数据的当前数据流封装格式为标准数据流封装格式,那么实时数据即为当前传输数据,直接通过向后端传输即可,实时数据与后端的用户逻辑适配。
如果存储器中存在待传输数据,则说明当前需要先传输待传输数据,将待传输数据从存储器中取出,将实时数据写入存储器中,等待发送。如果实时数据为非标准数据流封装格式,说明和后端不适配,此时也先将实时数据写入存储器,并按预设规则取出存储器中的数据,得到满足标准数据流封装格式的当前传输数据,实现非标准数据流封装格式到标准数据流封装格式的转换,将当前输出数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。
可见,本实施例中,在电子设备中设置存储器,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储器中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储器中,并按预设规则取出存储器中的数据,将存储器的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。
在上述实施例的基础上:
数据流封装格式还包括不满足目标传输协议要求的非标准数据流封装格式,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
若存储器中未存储待传输数据,且当前数据流封装格式为非标准数据流封装格式,将实时数据的高字节数据写入存储器;
基于实时数据的低字节数据得到标准数据流封装格式的当前传输数据输出。
本实施例中,为了降低存储器对电子设备中的存储资源的占用,对存储器的深度进行了限定,以256字节的实时数据为例,在存储器中未存储有待传输数据时,将低128字节的数据输出,将高128字节的数据存储到存储器中。
存储器包括第一存储器和第二存储器,第一存储器的位宽大于第二存储器的位宽,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
确定第一存储器的第一存储状态和第二存储器的第二存储状态;
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器;
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
第一存储器为先入先出存储器,第二存储器为寄存器。
本实施例中,存储器包括先入先出存储器和寄存器,采用先入先出存储器和寄存器实现二级缓冲机制,相比于使用多个先入先出存储器,本实施例的配置方案占用更少的内存资源,仍以256字节的实时数据为例进行说明,寄存器用于缓存128字节的数据,该数据可以来自于实时数据,还可以来自先入先出存储器,先入先出存储器用于缓存256字节的数据,该数据均来自于实时数据。进一步的,为了提高数据传输效率,可以令寄存器的数据传输优先级高于先入先出数据的数据传输优先级。
确定第一存储器的第一存储状态和第二存储器的第二存储状态之前,数据处理方法还包括:
在电子设备的随机存取存储器中配置先入先出存储器。
寄存器的数量为多个。
确定第一存储器的第一存储状态和第二存储器的第二存储状态之前,数据处理方法还包括:
确定电子设备的目标接口对应的标准数据位宽;
将寄存器的位宽配置为标准数据位宽的一半。
可以理解,在执行该数据处理方法之前,先在电子设备中配置一个位宽为AXI4-STREAM数据位宽一半的寄存器以及一个先入先出存储器,先入先出存储器可任意配置为内部分布式RAM(Random Access Memory,随机存取存储器)组合或BLOCK RAM组合,可根据实际数据类型及MAX PAYLOAD(传输最大字节数)大小进行调整,数据位宽不局限于256bit,还可以为512bit、1024bit等,本实施例在此不做具体限定。进一步的,寄存器的数量可以为多个,以便通过多个寄存器搭建的小FIFO(First Input First Output,先进先出)存储器,适配跨时钟域的异步数据流格式转化。
请参照图2,待传输数据包括第一待传输数据和/或第二待传输数据;
第一存储状态包括对应第一存储器未存储有第一待传输数据的第一状态,以及对应第一存储器存储有第一待传输数据的第二状态;
第二存储状态包括对应第二存储器未存储有第二待传输数据的第三状态,以及对应第二存储器存储有第二待传输数据的第四状态。
本实施例中,存储器包括寄存器和先入先出存储器,先入先出存储器存储第一待传输数据,寄存器存储第二待传输数据,先入先出存储器内有数据时,先入先出存储器处于第二状态,先入先出存储器为空时,处于第一状态,相应的,寄存器内有数据时,寄存器处于第四状态,寄存器为空时,寄存器处于第三状态。
数据处理方法还包括:
当对第一存储器执行写入操作,将第一存储器的第一状态标志位的值置为1,当对第一存储器执行读取操作,将第一存储器的第一状态标志位的值置为0,当对第一存储器同时执行写入操作和读取操作,保持第一状态标志位的值不变;
当对第二存储器执行写入操作,将第二存储器的第二状态标志位的值置为1,当对第二存储器执行读取操作,将第二存储器的第二状态标志位的值置为0,当对第二存储器同时执行写入操作和读取操作,保持第二状态标志位的值不变;
根据第一状态标志位的值确定第一存储器的第一存储状态;
根据第二状态标志位的值确定第二存储器的第二存储状态。
本实施例中分别为第一存储器和第二存储器配置了1bit的状态标志位,以寄存器为例进行说明,若寄存器为空,则状态标志位的初始值为0,若有数据写入,则状态标志位的值为1,若有数据读出,则状态标志位的值为0,若同时读写,则状态标志位的值保持不变,先入先出存储器,同理。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第二状态,且第二存储状态为第三状态,确定实时数据的目标写入存储器为第一存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第二状态,且第二存储状态为第三状态,判断第一存储器中的第一待传输数据的低字节数据中是否包含传输结束符;
若是,取出第一存储器中的第一待传输数据的低字节数据,将第一待传输数据的低字节数据作为标准数据流封装格式的当前传输数据并输出,将第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;
若否,取出第一存储器中的第一待传输数据,将第一待传输数据作为标准数据流封装格式的当前传输数据并输出。
本实施例中,以第一存储器为先入先出存储器、第二存储器为寄存器为例,若寄存器为空,先入先出存储器不为空,此时当前实时数据应写入先入先出存储器,当前输出的数据来自于先入先出存储器,在写入之前,判断先入先出存储器中存储的第一待传输数据的低128bit数据是否包含EOT(End Of Transmission,传输结束符),若是,则取出低128bit数据作为当前传输数据输出,将高128bit数据存入寄存器中,若否,直接取出第一待传输数据输出。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第一状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器和第二存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第一状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;
若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器;
若否,取出第二存储器中的第二待传输数据,将第二待传输数据与实时数据的低字节数据聚合得到标准数据流封装格式的当前传输数据并输出,将实时数据的高字节数据写入第二存储器。
本实施例中,以第一存储器为先入先出存储器、第二存储器为寄存器为例,若先入先出存储器为空、寄存器不为空,此时需要判断寄存器的第二待传输数据是否包含EOT,若是,则取出第二待传输数据输出,将实时数据全部写入FIFO,若否,取出第二待传输数据,将第二待传输数据与实时数据的低128bit数据进行聚合传输,将实时数据的高128bit数据写入寄存器,等待下一次传输。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第二状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第二状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;
若否,取出第一存储器中的第一待传输数据的低字节数据及第二存储器中的第二待传输数据,将第一待传输数据的低字节数据及第二存储器中的第二待传输数据聚合得到标准数据流封装格式的当前传输数据并输出,将第一存储器中的第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;
若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器。
本实施例中,以第一存储器为先入先出存储器、第二存储器为寄存器为例,若寄存器和先入先出存储器均非空,此时需要判断寄存器中的第二待传输数据中是否包含EOT,若不包含EOT,则取出寄存器中的第二待传输数据和先入先出存储器的低128bit数据进行聚合输出,将先入先出存储器的高128bit数据写入寄存器,然后将实时数据写入先入先出存储器;若包含EOT,则直接输出第二待传输数据,然后将实时数据写入先入先出存储器,等待下次输出。
综上所述,本发明基于FPGA实现了一种异构缓存AXI4-STREAM数据处理方法,结合分析多种数据流封装组合方式、采用寄存器和FIFO二级缓存机制,完全采用RTL设计,逻辑控制更加灵活、高效,不引入第三方任何IP,寄存器和FIFO位宽参数化定义、FIFO深度根据MAX_PAYLOAD实时调整,便于在各种平台移植,在FPGA逻辑功能设计及相关SOC开发中为用户提供极大的便利,具有设计灵活、兼容性强、资源利用率低等优点。
第二方面,本发明还提供了一种数据处理设备,该数据处理设备包括:
存储模块,用于存储实时数据和待传输数据;
控制模块,用于当接收到实时数据,确定实时数据的当前数据流封装格式,判断是否存储模块中未存储待传输数据且当前数据流封装格式为标准数据流封装格式,若是,将实时数据写入存储模块,并将待传输数据写入聚合模块;
聚合模块,用于将待传输数据转换为标准数据流封装格式的当前传输数据,或将待传输数据及实时数据转换为标准数据流封装格式的当前传输数据;
选择模块,用于根据选择指令,输出对应的当前传输数据。
可见,本实施例中,在数据处理设备中设置存储模块,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储模块中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储模块中,并按预设规则取出存储器中的数据,将存储模块的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使数据处理设备输出的当前传输数据适配后端用户逻辑。
参照图3所示,存储模块包括寄存器和先入先出存储器;
聚合模块包括:
第一聚合单元,用于对实时数据及从先入先出存储器取出的数据进行聚合,得到第一聚合数据;
第二聚合单元,用于对从先入先出存储器取出的数据及从寄存器取出的数据进行聚合,得到第二聚合数据;
第三聚合单元,用于对实时数据及从寄存器取出的数据进行聚合,得到第三聚合数据。
选择模块用于根据选择指令,选择实时数据、待传输数据、第一聚合数据、第二聚合数据及第三聚合数据中的一个作为当前传输数据。
第三方面,请参照图4,图4为本发明所提供的一种数据处理系统的结构示意图,该数据处理系统应用于电子设备,电子设备包括存储器,改数据处理系统包括:
第一确定模块1,用于当接收到实时数据,确定实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
判断模块2,用于判断是否存储器中未存储待传输数据且当前数据流封装格式为标准数据流封装格式,若是,生成第一触发指令,若否,生成第二触发指令;
输出模块3,用于当接收到第一触发指令,将实时数据作为当前传输数据输出,当接收到第二触发指令,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
可见,本实施例中,在电子设备中设置存储器,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储器中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储器中,并按预设规则取出存储器中的数据,将存储器的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。
数据流封装格式还包括不满足目标传输协议要求的非标准数据流封装格式,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
若存储器中未存储待传输数据,且当前数据流封装格式为非标准数据流封装格式,将实时数据的高字节数据写入存储器;
基于实时数据的低字节数据得到标准数据流封装格式的当前传输数据输出。
存储器包括第一存储器和第二存储器,第一存储器的位宽大于第二存储器的位宽,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
确定第一存储器的第一存储状态和第二存储器的第二存储状态;
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器;
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
第一存储器为先入先出存储器,第二存储器为寄存器。
数据处理系统还包括:
第一配置模块,用于在确定第一存储器的第一存储状态和第二存储器的第二存储状态之前,在电子设备的随机存取存储器中配置先入先出存储器。
寄存器的数量为多个。
数据处理系统还包括:
第二配置模块,用于在确定第一存储器的第一存储状态和第二存储器的第二存储状态之前,确定电子设备的目标接口对应的标准数据位宽,将寄存器的位宽配置为标准数据位宽的一半。
待传输数据包括第一待传输数据和/或第二待传输数据;
第一存储状态包括对应第一存储器未存储有第一待传输数据的第一状态,以及对应第一存储器存储有第一待传输数据的第二状态;
第二存储状态包括对应第二存储器未存储有第二待传输数据的第三状态,以及对应第二存储器存储有第二待传输数据的第四状态。
数据处理系统还包括:
第三配置模块,用于当对第一存储器执行写入操作,将第一存储器的第一状态标志位的值置为1,当对第一存储器执行读取操作,将第一存储器的第一状态标志位的值置为0,当对第一存储器同时执行写入操作和读取操作,保持第一状态标志位的值不变;
第四配置模块,用于当对第二存储器执行写入操作,将第二存储器的第二状态标志位的值置为1,当对第二存储器执行读取操作,将第二存储器的第二状态标志位的值置为0,当对第二存储器同时执行写入操作和读取操作,保持第二状态标志位的值不变;
第二确定模块,用于根据第一状态标志位的值确定第一存储器的第一存储状态;
第三确定模块,用于根据第二状态标志位的值确定第二存储器的第二存储状态。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第二状态,且第二存储状态为第三状态,确定实时数据的目标写入存储器为第一存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第二状态,且第二存储状态为第三状态,判断第一存储器中的第一待传输数据的低字节数据中是否包含传输结束符;
若是,取出第一存储器中的第一待传输数据的低字节数据,将第一待传输数据的低字节数据作为标准数据流封装格式的当前传输数据并输出,将第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;
若否,取出第一存储器中的第一待传输数据,将第一待传输数据作为标准数据流封装格式的当前传输数据并输出。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第一状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器和第二存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第一状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;
若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器;
若否,取出第二存储器中的第二待传输数据,将第二待传输数据与实时数据的低字节数据聚合得到标准数据流封装格式的当前传输数据并输出,将实时数据的高字节数据写入第二存储器。
根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器的过程包括:
当第一存储状态为第二状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器。
将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出的过程包括:
当第一存储状态为第二状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;
若否,取出第一存储器中的第一待传输数据的低字节数据及第二存储器中的第二待传输数据,将第一待传输数据的低字节数据及第二存储器中的第二待传输数据聚合得到标准数据流封装格式的当前传输数据并输出,将第一存储器中的第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;
若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器。
目标传输协议为高级拓展接口流协议。
第四方面,本发明还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上文任意一个实施例所描述的数据处理方法的步骤。
其中,存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器执行存储器中保存的计算机程序时,可以实现以下步骤:当接收到实时数据,确定实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;判断是否存储器中未存储待传输数据且当前数据流封装格式为标准数据流封装格式;若是,将实时数据作为当前传输数据输出;若否,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
可见,本实施例中,在电子设备中设置存储器,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储器中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储器中,并按预设规则取出存储器中的数据,将存储器的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置数据流封装格式还包括不满足目标传输协议要求的非标准数据流封装格式;若存储器中未存储待传输数据,且当前数据流封装格式为非标准数据流封装格式,将实时数据的高字节数据写入存储器;基于实时数据的低字节数据得到标准数据流封装格式的当前传输数据输出。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置存储器中的第一存储器的位宽大于第二存储器的位宽;确定第一存储器的第一存储状态和第二存储器的第二存储状态;根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器;将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置第一存储器为先入先出存储器,配置第二存储器为寄存器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:在电子设备的随机存取存储器中配置先入先出存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置寄存器的数量为多个。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:确定电子设备的目标接口对应的标准数据位宽;将寄存器的位宽配置为标准数据位宽的一半。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置待传输数据包括第一待传输数据和/或第二待传输数据;配置第一存储状态包括对应第一存储器未存储有第一待传输数据的第一状态,以及对应第一存储器存储有第一待传输数据的第二状态;配置第二存储状态包括对应第二存储器未存储有第二待传输数据的第三状态,以及对应第二存储器存储有第二待传输数据的第四状态。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当对第一存储器执行写入操作,将第一存储器的第一状态标志位的值置为1,当对第一存储器执行读取操作,将第一存储器的第一状态标志位的值置为0,当对第一存储器同时执行写入操作和读取操作,保持第一状态标志位的值不变;当对第二存储器执行写入操作,将第二存储器的第二状态标志位的值置为1,当对第二存储器执行读取操作,将第二存储器的第二状态标志位的值置为0,当对第二存储器同时执行写入操作和读取操作,保持第二状态标志位的值不变;根据第一状态标志位的值确定第一存储器的第一存储状态;根据第二状态标志位的值确定第二存储器的第二存储状态。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第三状态,确定实时数据的目标写入存储器为第一存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第三状态,判断第一存储器中的第一待传输数据的低字节数据中是否包含传输结束符;若是,取出第一存储器中的第一待传输数据的低字节数据,将第一待传输数据的低字节数据作为标准数据流封装格式的当前传输数据并输出,将第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;若否,取出第一存储器中的第一待传输数据,将第一待传输数据作为标准数据流封装格式的当前传输数据并输出。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第一状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器和第二存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第一状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器;若否,取出第二存储器中的第二待传输数据,将第二待传输数据与实时数据的低字节数据聚合得到标准数据流封装格式的当前传输数据并输出,将实时数据的高字节数据写入第二存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;若否,取出第一存储器中的第一待传输数据的低字节数据及第二存储器中的第二待传输数据,将第一待传输数据的低字节数据及第二存储器中的第二待传输数据聚合得到标准数据流封装格式的当前传输数据并输出,将第一存储器中的第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器。
处理器执行存储器中保存的计算机子程序时,可以实现以下步骤:配置目标传输协议为高级拓展接口流协议。
在上述实施例的基础上,该电子设备还包括:
输入接口,与处理器相连,用于获取外部导入的计算机程序、参数和指令,经处理器控制保存至存储器中。该输入接口可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板。
显示单元,与处理器相连,用于显示处理器发送的数据。该显示单元可以为液晶显示屏或者电子墨水显示屏等。
网络端口,与处理器相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术、通用串行总线、高清多媒体接口、无线保真技术、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术等。
第五方面,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上文任意一个实施例所描述的数据处理方法的步骤。
其中,计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:当接收到实时数据,确定实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;判断是否存储器中未存储待传输数据且当前数据流封装格式为标准数据流封装格式;若是,将实时数据作为当前传输数据输出;若否,将实时数据写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
可见,本实施例中,在电子设备中设置存储器,当接收到的实时数据的当前数据流封装格式为标准数据流封装格式时,且存储器中没有待传输数据时,将实时数据直接输出,当接收到的实时数据的当前数据流封装格式不是标准数据流封装格式时,将实时数据先存储到存储器中,并按预设规则取出存储器中的数据,将存储器的数据和/或实时数据进行聚合得到满足标准数据流封装格式的当前传输数据输出,以使电子设备输出的当前传输数据适配后端用户逻辑。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置数据流封装格式还包括不满足目标传输协议要求的非标准数据流封装格式;若存储器中未存储待传输数据,且当前数据流封装格式为非标准数据流封装格式,将实时数据的高字节数据写入存储器;基于实时数据的低字节数据得到标准数据流封装格式的当前传输数据输出。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置存储器中的第一存储器的位宽大于第二存储器的位宽;确定第一存储器的第一存储状态和第二存储器的第二存储状态;根据第一存储状态和第二存储状态在第一存储器和第二存储器中确定实时数据的目标写入存储器;将实时数据写入目标写入存储器,基于待传输数据和/或实时数据得到标准数据流封装格式的当前传输数据并输出。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置第一存储器为先入先出存储器,配置第二存储器为寄存器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:在电子设备的随机存取存储器中配置先入先出存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置寄存器的数量为多个。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:确定电子设备的目标接口对应的标准数据位宽;将寄存器的位宽配置为标准数据位宽的一半。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置待传输数据包括第一待传输数据和/或第二待传输数据;配置第一存储状态包括对应第一存储器未存储有第一待传输数据的第一状态,以及对应第一存储器存储有第一待传输数据的第二状态;配置第二存储状态包括对应第二存储器未存储有第二待传输数据的第三状态,以及对应第二存储器存储有第二待传输数据的第四状态。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当对第一存储器执行写入操作,将第一存储器的第一状态标志位的值置为1,当对第一存储器执行读取操作,将第一存储器的第一状态标志位的值置为0,当对第一存储器同时执行写入操作和读取操作,保持第一状态标志位的值不变;当对第二存储器执行写入操作,将第二存储器的第二状态标志位的值置为1,当对第二存储器执行读取操作,将第二存储器的第二状态标志位的值置为0,当对第二存储器同时执行写入操作和读取操作,保持第二状态标志位的值不变;根据第一状态标志位的值确定第一存储器的第一存储状态;根据第二状态标志位的值确定第二存储器的第二存储状态。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第三状态,确定实时数据的目标写入存储器为第一存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第三状态,判断第一存储器中的第一待传输数据的低字节数据中是否包含传输结束符;若是,取出第一存储器中的第一待传输数据的低字节数据,将第一待传输数据的低字节数据作为标准数据流封装格式的当前传输数据并输出,将第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;若否,取出第一存储器中的第一待传输数据,将第一待传输数据作为标准数据流封装格式的当前传输数据并输出。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第一状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器和第二存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第一状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器;若否,取出第二存储器中的第二待传输数据,将第二待传输数据与实时数据的低字节数据聚合得到标准数据流封装格式的当前传输数据并输出,将实时数据的高字节数据写入第二存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第四状态,确定实时数据的目标写入存储器为第一存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:当第一存储状态为第二状态,且第二存储状态为第四状态,判断第二存储器中的第二待传输数据是否包含传输结束符;若否,取出第一存储器中的第一待传输数据的低字节数据及第二存储器中的第二待传输数据,将第一待传输数据的低字节数据及第二存储器中的第二待传输数据聚合得到标准数据流封装格式的当前传输数据并输出,将第一存储器中的第一待传输数据的高字节数据写入第二存储器,将实时数据写入第一存储器;若是,取出第二存储器中的第二待传输数据,将第二待传输数据作为标准数据流封装格式的当前传输数据并输出,将实时数据写入第一存储器。
计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:配置目标传输协议为高级拓展接口流协议。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (20)
1.一种数据处理方法,其特征在于,应用于电子设备,所述电子设备包括存储器,所述数据处理方法包括:
当接收到实时数据,确定所述实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
判断是否所述存储器中未存储待传输数据且当前数据流封装格式为所述标准数据流封装格式;
若是,将所述实时数据作为当前传输数据输出;
若否,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出;
所述数据流封装格式还包括不满足所述目标传输协议要求的非标准数据流封装格式,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
若所述存储器中未存储所述待传输数据,且所述当前数据流封装格式为所述非标准数据流封装格式,将所述实时数据的高字节数据写入所述存储器;
基于所述实时数据的低字节数据得到所述标准数据流封装格式的当前传输数据并输出;
所述存储器包括第一存储器和第二存储器,所述待传输数据包括第一待传输数据和/或第二待传输数据,所述第一存储器的第一存储状态包括对应所述第一存储器未存储有所述第一待传输数据的第一状态,以及对应所述第一存储器存储有所述第一待传输数据的第二状态;所述第二存储器的第二存储状态包括对应所述第二存储器未存储有所述第二待传输数据的第三状态,以及对应所述第二存储器存储有所述第二待传输数据的第四状态;
基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态;
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若是,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据并输出;
若否,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据与所述实时数据的低字节数据聚合得到所述标准数据流封装格式的当前传输数据并输出。
2.根据权利要求1所述的数据处理方法,其特征在于,所述第一存储器的位宽大于所述第二存储器的位宽,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态;
根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器;
将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出。
3.根据权利要求2所述的数据处理方法,其特征在于,所述第一存储器为先入先出存储器,所述第二存储器为寄存器。
4.根据权利要求3所述的数据处理方法,其特征在于,确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态之前,所述数据处理方法还包括:
在所述电子设备的随机存取存储器中配置所述先入先出存储器。
5.根据权利要求3所述的数据处理方法,其特征在于,所述寄存器的数量为多个。
6.根据权利要求3所述的数据处理方法,其特征在于,确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态之前,所述数据处理方法还包括:
确定所述电子设备的目标接口对应的标准数据位宽;
将所述寄存器的位宽配置为所述标准数据位宽的一半。
7.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:
当对所述第一存储器执行写入操作,将所述第一存储器的第一状态标志位的值置为1,当对所述第一存储器执行读取操作,将所述第一存储器的第一状态标志位的值置为0,当对所述第一存储器同时执行所述写入操作和所述读取操作,保持所述第一状态标志位的值不变;
当对所述第二存储器执行所述写入操作,将所述第二存储器的第二状态标志位的值置为1,当对所述第二存储器执行所述读取操作,将所述第二存储器的第二状态标志位的值置为0,当对所述第二存储器同时执行所述写入操作和所述读取操作,保持所述第二状态标志位的值不变;
根据所述第一状态标志位的值确定所述第一存储器的第一存储状态;
根据所述第二状态标志位的值确定所述第二存储器的第二存储状态。
8.根据权利要求2所述的数据处理方法,其特征在于,根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第三状态,确定所述实时数据的目标写入存储器为所述第一存储器。
9.根据权利要求8所述的数据处理方法,其特征在于,将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第三状态,判断所述第一存储器中的所述第一待传输数据的低字节数据中是否包含传输结束符;
若是,取出所述第一存储器中的所述第一待传输数据的低字节数据,将所述第一待传输数据的低字节数据作为所述标准数据流封装格式的当前传输数据并输出,将所述第一待传输数据的高字节数据写入所述第二存储器,将所述实时数据写入所述第一存储器;
若否,取出所述第一存储器中的所述第一待传输数据,将所述第一待传输数据作为所述标准数据流封装格式的当前传输数据并输出。
10.根据权利要求2所述的数据处理方法,其特征在于,根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,确定所述实时数据的目标写入存储器为所述第一存储器和所述第二存储器。
11.根据权利要求10所述的数据处理方法,其特征在于,将所述实时数据写入所述目标写入存储器的过程包括:
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若是,将所述实时数据写入所述第一存储器;
若否,将所述实时数据的高字节数据写入所述第二存储器。
12.根据权利要求2所述的数据处理方法,其特征在于,根据所述第一存储状态和所述第二存储状态在所述第一存储器和所述第二存储器中确定所述实时数据的目标写入存储器的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第四状态,确定所述实时数据的目标写入存储器为所述第一存储器。
13.根据权利要求12所述的数据处理方法,其特征在于,将所述实时数据写入所述目标写入存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
当所述第一存储状态为所述第二状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若否,取出所述第一存储器中的所述第一待传输数据的低字节数据及所述第二存储器中的所述第二待传输数据,将所述第一待传输数据的低字节数据及所述第二存储器中的所述第二待传输数据聚合得到所述标准数据流封装格式的当前传输数据并输出,将所述第一存储器中的所述第一待传输数据的高字节数据写入所述第二存储器,将所述实时数据写入所述第一存储器;
若是,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据并输出,将所述实时数据写入所述第一存储器。
14.根据权利要求1-13任意一项所述的数据处理方法,其特征在于,目标传输协议为高级拓展接口流协议。
15.一种数据处理设备,其特征在于,包括:
存储模块,用于存储实时数据和待传输数据;
控制模块,用于当接收到所述实时数据,确定所述实时数据的当前数据流封装格式,判断是否所述存储模块中未存储所述待传输数据且当前数据流封装格式为满足目标传输协议要求的标准数据流封装格式,若是,将所述实时数据写入所述存储模块,并将所述待传输数据写入聚合模块;
所述聚合模块,用于将所述待传输数据转换为所述标准数据流封装格式的当前传输数据,或将所述待传输数据及所述实时数据转换为所述标准数据流封装格式的当前传输数据;
选择模块,用于根据选择指令,输出对应的所述当前传输数据;
所述数据流封装格式还包括不满足所述目标传输协议要求的非标准数据流封装格式,所述控制模块还用于若所述存储模块中未存储所述待传输数据,且所述当前数据流封装格式为所述非标准数据流封装格式,将所述实时数据的高字节数据写入所述存储模块;基于所述实时数据的低字节数据得到所述标准数据流封装格式的当前传输数据输出;
所述存储模块包括第一存储器和第二存储器,所述待传输数据包括第一待传输数据和/或第二待传输数据,所述第一存储器的第一存储状态包括对应所述第一存储器未存储有所述第一待传输数据的第一状态,以及对应所述第一存储器存储有所述第一待传输数据的第二状态;所述第二存储器的第二存储状态包括对应所述第二存储器未存储有所述第二待传输数据的第三状态,以及对应所述第二存储器存储有所述第二待传输数据的第四状态;
所述控制模块还用于确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态,当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符,若是,取出所述第二存储器中的所述第二待传输数据写入所述聚合模块,若否,取出所述第二存储器中的所述第二待传输数据写入所述聚合模块;
所述聚合模块,具体用于将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据,或将所述第二待传输数据与所述实时数据的低字节数据聚合得到所述标准数据流封装格式的当前传输数据。
16.根据权利要求15所述的数据处理设备,其特征在于,所述存储模块包括寄存器和先入先出存储器;
所述聚合模块包括:
第一聚合单元,用于对所述实时数据及从所述先入先出存储器取出的数据进行聚合,得到第一聚合数据;
第二聚合单元,用于对从所述先入先出存储器取出的数据及从所述寄存器取出的数据进行聚合,得到第二聚合数据;
第三聚合单元,用于对所述实时数据及从所述寄存器取出的数据进行聚合,得到第三聚合数据。
17.根据权利要求16所述的数据处理设备,其特征在于,所述选择模块用于根据选择指令,选择所述实时数据、所述待传输数据、所述第一聚合数据、所述第二聚合数据及所述第三聚合数据中的一个作为当前传输数据。
18.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1-14任意一项所述的数据处理方法的步骤。
19.一种数据处理系统,其特征在于,应用于电子设备,所述电子设备包括存储器,所述数据处理系统包括:
第一确定模块,用于当接收到实时数据,确定所述实时数据的当前数据流封装格式;数据流封装格式包括满足目标传输协议要求的标准数据流封装格式;
判断模块,用于判断是否所述存储器中未存储待传输数据且当前数据流封装格式为所述标准数据流封装格式,若是,生成第一触发指令,若否,生成第二触发指令;
输出模块,用于当接收到所述第一触发指令,将所述实时数据作为当前传输数据输出,当接收到所述第二触发指令,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出;
所述数据流封装格式还包括不满足所述目标传输协议要求的非标准数据流封装格式,将所述实时数据写入所述存储器,基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
若所述存储器中未存储所述待传输数据,且所述当前数据流封装格式为所述非标准数据流封装格式,将所述实时数据的高字节数据写入所述存储器;
基于所述实时数据的低字节数据得到所述标准数据流封装格式的当前传输数据并输出;
所述存储器包括第一存储器和第二存储器,所述待传输数据包括第一待传输数据和/或第二待传输数据,所述第一存储器的第一存储状态包括对应所述第一存储器未存储有所述第一待传输数据的第一状态,以及对应所述第一存储器存储有所述第一待传输数据的第二状态;所述第二存储器的第二存储状态包括对应所述第二存储器未存储有所述第二待传输数据的第三状态,以及对应所述第二存储器存储有所述第二待传输数据的第四状态;
基于所述待传输数据和/或所述实时数据得到所述标准数据流封装格式的当前传输数据并输出的过程包括:
确定所述第一存储器的第一存储状态和所述第二存储器的第二存储状态;
当所述第一存储状态为所述第一状态,且所述第二存储状态为所述第四状态,判断所述第二存储器中的所述第二待传输数据是否包含传输结束符;
若是,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据作为所述标准数据流封装格式的当前传输数据并输出;
若否,取出所述第二存储器中的所述第二待传输数据,将所述第二待传输数据与所述实时数据的低字节数据聚合得到所述标准数据流封装格式的当前传输数据并输出。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-14任意一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490238.2A CN117234977B (zh) | 2023-11-10 | 2023-11-10 | 数据处理方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490238.2A CN117234977B (zh) | 2023-11-10 | 2023-11-10 | 数据处理方法、系统、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117234977A CN117234977A (zh) | 2023-12-15 |
CN117234977B true CN117234977B (zh) | 2024-02-27 |
Family
ID=89095161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311490238.2A Active CN117234977B (zh) | 2023-11-10 | 2023-11-10 | 数据处理方法、系统、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117234977B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597644A (zh) * | 2019-09-10 | 2019-12-20 | 深圳市元征科技股份有限公司 | 数据流传输方法、传输装置、电子设备及存储介质 |
CN110824218A (zh) * | 2019-11-18 | 2020-02-21 | 重庆邮电大学 | 一种基于zynq的数字存储示波器系统 |
CN113961494A (zh) * | 2021-10-21 | 2022-01-21 | 上海安路信息科技股份有限公司 | 一种pcie总线与axi总线的桥接系统 |
CN114281724A (zh) * | 2021-12-10 | 2022-04-05 | 深圳市欧瑞博科技股份有限公司 | 数据传输方法、装置及电子设备 |
CN114760370A (zh) * | 2022-03-15 | 2022-07-15 | 杭州电子科技大学富阳电子信息研究院有限公司 | 基于udp协议的上位机与fpga高速数据传输架构及实现方法 |
WO2022261810A1 (zh) * | 2021-06-15 | 2022-12-22 | 中国科学技术大学 | 数据获取系统的构建方法及装置 |
CN115622896A (zh) * | 2021-07-13 | 2023-01-17 | 中国科学院声学研究所 | 一种axi4高速总线及多队列仿真验证方法及仿真验证装置 |
CN116627869A (zh) * | 2023-05-31 | 2023-08-22 | 成都赛力斯科技有限公司 | 应用于电子设备的数据传输方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100906941B1 (ko) * | 2007-12-18 | 2009-07-10 | 한국전자통신연구원 | 복수 수신채널을 갖는 케이블모뎀에서 케이블 데이터서비스 인터페이스 규격 프레임 재구성 장치 및 방법 |
CN111414325B (zh) * | 2020-02-29 | 2021-09-17 | 苏州浪潮智能科技有限公司 | 一种Avalon总线转Axi4总线的方法 |
-
2023
- 2023-11-10 CN CN202311490238.2A patent/CN117234977B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597644A (zh) * | 2019-09-10 | 2019-12-20 | 深圳市元征科技股份有限公司 | 数据流传输方法、传输装置、电子设备及存储介质 |
CN110824218A (zh) * | 2019-11-18 | 2020-02-21 | 重庆邮电大学 | 一种基于zynq的数字存储示波器系统 |
WO2022261810A1 (zh) * | 2021-06-15 | 2022-12-22 | 中国科学技术大学 | 数据获取系统的构建方法及装置 |
CN115622896A (zh) * | 2021-07-13 | 2023-01-17 | 中国科学院声学研究所 | 一种axi4高速总线及多队列仿真验证方法及仿真验证装置 |
CN113961494A (zh) * | 2021-10-21 | 2022-01-21 | 上海安路信息科技股份有限公司 | 一种pcie总线与axi总线的桥接系统 |
CN114281724A (zh) * | 2021-12-10 | 2022-04-05 | 深圳市欧瑞博科技股份有限公司 | 数据传输方法、装置及电子设备 |
CN114760370A (zh) * | 2022-03-15 | 2022-07-15 | 杭州电子科技大学富阳电子信息研究院有限公司 | 基于udp协议的上位机与fpga高速数据传输架构及实现方法 |
CN116627869A (zh) * | 2023-05-31 | 2023-08-22 | 成都赛力斯科技有限公司 | 应用于电子设备的数据传输方法及装置 |
Non-Patent Citations (5)
Title |
---|
变电站实时监控系统中的千兆以太网传输设计;李文辉;简献忠;肖儿良;;电子科技(第01期);全文 * |
基于AXI4-Stream总线的数字视频接口IP核设计;郑建立;漆荣辉;张璐;;电子科技(第09期);全文 * |
基于AXI总线的视频数据传输处理的FPGA实现;钟雪燕;夏前亮;赵德生;许鹤;;计算机测量与控制(第11期);全文 * |
基于Zynq-7000的视频采集平台设计;王浩宇;漆晶;谭歆;;工业控制计算机(第04期);全文 * |
基于ZYNQ的千兆以太网数据包处理架构;诸俊辉;刘一清;;电子设计工程(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117234977A (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8223796B2 (en) | Graphics multi-media IC and method of its operation | |
US8542693B2 (en) | Managing free packet descriptors in packet-based communications | |
US6925512B2 (en) | Communication between two embedded processors | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
CN114286035B (zh) | 图像采集卡、图像采集方法及图像采集系统 | |
CN112328523B (zh) | 传输双倍速率信号的方法、装置及系统 | |
GB2394323A (en) | High-throughput UART interfaces | |
CN108614792B (zh) | 1394事务层数据包存储管理方法及电路 | |
US6529945B1 (en) | Data buffer management between two different systems | |
CN117234977B (zh) | 数据处理方法、系统、设备及计算机可读存储介质 | |
US20130061247A1 (en) | Processor to message-based network interface using speculative techniques | |
CN112637602B (zh) | 一种jpeg接口及数字图像处理系统 | |
TWI727581B (zh) | 資料傳輸系統 | |
CN117076374B (zh) | 一种PCIe流式总线的转换方法、装置、设备及介质 | |
US20060002210A1 (en) | Ethernet controller with excess on-board flash for microcontroller interface | |
CN112637027B (zh) | 基于uart的帧边界界定装置及发送方法和接收方法 | |
CN115622958B (zh) | 一种zynq系统及虚拟mac实现方法 | |
WO2024198573A1 (zh) | 一种流量控制方法、装置及系统 | |
JP5282124B2 (ja) | パケット転送装置およびパケット転送方法 | |
CN115291898B (zh) | 一种多fpga从模式快速烧录方法及装置 | |
CN111538688B (zh) | 数据处理方法、装置、模组及芯片 | |
CN115357534B (zh) | 一种高速多路lvds采集系统及存储介质 | |
CN114741348A (zh) | 一种转换装置、方法以及集成电路 | |
CN115391264A (zh) | 一种RapidIO和万兆以太网协议高速交换系统及方法 | |
CN116846706A (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 |