CN112087418A - 计算报文数据填充位的方法及装置 - Google Patents

计算报文数据填充位的方法及装置 Download PDF

Info

Publication number
CN112087418A
CN112087418A CN202010715963.5A CN202010715963A CN112087418A CN 112087418 A CN112087418 A CN 112087418A CN 202010715963 A CN202010715963 A CN 202010715963A CN 112087418 A CN112087418 A CN 112087418A
Authority
CN
China
Prior art keywords
data
bit
filling
data segment
segment
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
Application number
CN202010715963.5A
Other languages
English (en)
Other versions
CN112087418B (zh
Inventor
刘利平
刘振宇
曹海成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingwei Hirain Tech Co Ltd
Original Assignee
Beijing Jingwei Hirain Tech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingwei Hirain Tech Co Ltd filed Critical Beijing Jingwei Hirain Tech Co Ltd
Priority to CN202010715963.5A priority Critical patent/CN112087418B/zh
Publication of CN112087418A publication Critical patent/CN112087418A/zh
Application granted granted Critical
Publication of CN112087418B publication Critical patent/CN112087418B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种计算报文数据填充位的方法及装置,该方法包括:在第一数据字典中查找报文数据的N个数据段中第一个数据段的填充位数和电平积累状态,第一个数据段是从报文数据的帧起始位开始依次划分所得的N个数据段中的第一个;依次获得第2个数据段至第N个数据段的填充位数,根据当前数据段的前一个数据段的电平积累状态在与当前数据段相对应的第二数据字典中查找当前数据段的填充位数和电平积累状态,第2个数据段至第N个数据段中每个数据段配置有一个第二数据字典;累加各个数据段的填充位数得到报文数据的填充位。通过上述技术方案,能够在保证报文数据填充位计算精确度的同时提升计算效率。

Description

计算报文数据填充位的方法及装置
技术领域
本发明涉及报文数据分析技术领域,具体来说,涉及一种计算报文数据填充位的方法及装置。
背景技术
总线分析工具在计算总线负载时需要计算报文数据在总线上的填充位。现有的总线填充位计算方法主要有以下两种:方法1是根据总线位填充规则对总线上的比特流进行计算。方法2是根据报文数据帧中各位场的长度进行估算。其中,本文中的总线可以为CAN(Controller Area Network,控制器局域网络)总线,CAN FD(CAN with Flexible Data-Rate,具有灵活数据速率的CAN)总线等。
方法1根据总线位填充规则对总线上的比特流逐位计算,这种方法的性能开销与比特流长度成正比,因此性能开销巨大。
方法2根据报文数据帧中各位场的长度进行估算,虽然这种方法能够节省计算性能开销,但是,因为总线上的填充位不仅与数据帧中各位场的长度有关,而且还与数据帧中各位场的具体内容有关,所以这种方法不能保证计算结果的精确度,误差较大。
发明内容
针对相关技术中的上述问题,本发明提出一种计算报文数据填充位的方法及装置,能够在保证报文数据填充位计算精确度的同时提升计算效率。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种用于计算报文数据填充位的方法,包括:
在第一数据字典中查找报文数据划分所得N个数据段中第一个数据段的填充位数和电平积累状态,N为大于1的整数,第一个数据段是从报文数据的帧起始位开始依次划分所得的N个数据段中的第一个;
依次获得N个数据段中第2个数据段至第N个数据段的填充位数,其中,根据当前数据段的前一个数据段的电平积累状态在与当前数据段相对应的第二数据字典中查找当前数据段的填充位数和电平积累状态,其中,每个电平积累状态表示在位填充之后相应数据段最后的电平连续状态,第2个数据段至第N个数据段中每个数据段配置有一个第二数据字典;
累加第一个数据段的填充位数、第2个数据段至第N个数据段的填充位数,得到报文数据的填充位。
根据本发明的实施例,第一数据字典的生成过程,包括:获取与第一个数据段的位数相同的所有第一数据串;利用报文数据的位填充规则计算与每个第一数据串相对应的填充位数和电平积累状态;建立第一数据串与填充位数和电平积累状态对应关系,得到第一数据字典。
根据本发明的实施例,第一数据字典为key-value形式,其中,key为第一数据串,value为与第一数据串相对应的填充位数和电平积累状态。
根据本发明的实施例,通过第一填充位状态记录器存储第一数据字典的value。
根据本发明的实施例,第二数据字典的生成过程,包括:针对2个数据段至第N数据段中的每个数据段,获取与其位数相同的所有第二数据串,并利用报文数据的位填充规则计算与其前一个数据段位数相同的所有数据串的电平历史累积状态;针对2个数据段至第N数据段中的每个数据段,利用报文数据的位填充规则计算各电平历史累积状态下与每个获取的第二数据串相对应的填充位数和电平积累状态;建立电平历史累积状态和第二数据串与填充位数和电平积累状态对应关系,得到第二数据字典。
根据本发明的实施例,第二数据字典为key-value形式,key为电平历史积累状态,value为各子数据字典,每个电平历史累积状态对应一个子数据字典;其中,每个子数据字典也为key-value的形式,每个子数据字典的key为与相应数据段位数相同的所有第二数据串,每个子数据字典的value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。
根据本发明的实施例,通过第二填充位状态记录器存储每个子数据字典的所有value。
根据本发明的实施例,报文数据划分所得N个数据段中每个数据段来自于相同的位场。
根据本发明的实施例,报文数据为CAN总线报文数据或者CAN FD总线报文数据。
根据本发明的另一方面,提供了一种计算报文数据填充位的装置,包括:
第一填充位数查找模块,用于在第一数据字典中查找报文数据划分所得N个数据段中第一个数据段的填充位数和电平积累状态,N为大于1的整数,第一个数据段是从报文数据的帧起始位开始依次划分所得的N个数据段中的第一个;
第二填充位数查找模块,用于依次获得N个数据段中第2个数据段至第N个数据段的填充位数,其中,根据当前数据段的前一个数据段的电平积累状态在与当前数据段相对应的第二数据字典中查找当前数据段的填充位数和电平积累状态,其中,每个电平积累状态表示在位填充之后相应数据段最后的电平连续状态,第2个数据段至第N个数据段中每个数据段配置有一个第二数据字典;
填充位数累加模块,用于累加第一个数据段的填充位数、第2个数据段至第N个数据段的填充位数,得到报文数据的填充位。
本发明通过将需要计算填充位数的报文数据划分为多个数据段,然后各个数据段在数据字典中进行查表来获得填充位数,提供了一种高效率填充位计算方法;该方法利用数据字典中所存储精确的填充位数,从而可以精确获得各个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的对报文数据进行位填充的示意图;
图2是根据本发明实施例的计算报文数据填充位的方法的流程图;
图3是根据本发明实施例的计算报文数据填充位的方法的流程图;
图4是根据本发明实施例的CAN报文标准帧结构的示意图;
图5是根据本发明实施例的计算报文数据填充位的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种计算报文数据填充位的方法,可以用于分析CAN总线报文数据或CAN FD总线报文数据。在以下具体实施方式中将以CAN总线报文数据为例来对本发明进行说明。但是,本发明并不限于此。本发明的方法也可以用于其它需要进行位填充的总线报文数据。
图1是根据本发明实施例的对报文数据进行位填充的示意图。如图1中的位填充规则所示,CAN总线通信协议规范中规定:5个连续高电平、或者5个连续低电平之后填充一个极性相反的位,如图1中以“$”标记出三个填充位。应理解,虽然以5个连续高或低电平的位填充规则进行说明,但是本发明不限于此。根据具体应用,位填充规则规定的连续高或低电平的数量可以是M个,M为大于1的整数,例如M可以是4或6等。
本发明采用分段计算策略来计算报文数据的填充位,各数据段的填充位数可以从预存储的数据字典中查找。根据位填充规则,由于产生填充位与连续的电平状态相关,因此为了获得报文数据的填充位数,本发明的方法需要记录高低电平累积状态(也称为电平积累状态)。为了理解本发明的技术方案,下面对填充位计算过程中的高低电平累积状态进行说明。
按照CAN总线填充位填充规则(也称为位填充规则)对一定长度的比特流进行填充位计算的过程中,会判断是否有5个连续的高低电平,这个过程可以看做是一个高低位电平积累的过程,本发明将这个电平积累过程中对应的状态进行了总结,提出“高低电平累积状态”的概念,如表1所示。在计算过程中,电平积累状态一定属于表1的10种状态中的一种。
表1高低电平累积状态
状态 描述
OneDominant 1个低电平(0)
TwoDominant 2个低电平(00)
ThreeDominant 3个低电平(000)
FourDominant 4个低电平(0000)
FiveDominant 5个低电平(00000),产生一个填充位1
OneRecessive 1个高电平(1)
TwoRecessive 2个高电平(11)
ThreeRecessive 3个高电平(111)
FourRecessive 4个高电平(1111)
FiveRecessive 5个高电平(11111),产生一个填充位0
按照上述的填充位填充规则,只有高低电平累积状态为5个高电平或者5个低电平时才产生一个极性相反的填充位。这样,在对二进制数据串进行填充位计算过程中,数据串的高低电平积累状态会发生改变,即高低电平累积状态转换,共会有表1中的10种状态。
具体来说,除FiveDominant(5个低电平)以外的所有低电平类的积累状态(1个低电平、2个低电平、...、4个低电平)在遇到低电平位时,其状态向下一个低电平类状态转移,转移顺序为:OneDominant(1个低电平)->TwoDominant(2个低电平)->ThreeDominant(3个低电平)->FourDominant(4个低电平)->FiveDominant(5个低电平)。当电平积累状态为5个低电平状态(FiveDominant)时会产生1个填充位,在产生填充位之后,填充位数加1,并且高低电平累积状态也进行转换,从5个低电平状态(FiveDominant)转换为1个高电平状态(OneRecessive)。另外,除FiveDominant(5个低电平)以外的所有低电平类的积累状态在遇到高电平位时,其状态都转换为OneRecessive(1个高电平)状态。
类似的,除FiveRecessive(5个高电平)以外的所有高电平类的积累状态在遇到高电平位时,其状态向下一个高电平类状态转移,转移顺序为:OneRecessive(1个高电平)->TwoRecessive(2个高电平)->ThreeRecessive(3个高电平)->FourRecessive(4个高电平)->FiveRecessive(5个高电平)。当电平积累状态为5个高电平状态(FiveRecessive)时会产生1个填充位,在产生填充位之后,填充位数加1,并且高低电平累积状态进行转换,从FiveRecessive(5个高电平状态)转换为OneDominant(1个低电平)状态。除FiveRecessive(5个高电平)以外的所有高电平类的积累状态在遇到低电平位时,其状态都转换为1个低电平状态(OneDominant)。
以一个具体示例来说明数据串的高低电平累积状态转换和填充位计算。在一个示例中,二进制数据串为“010011 111000 01000”,假设将该数据串分为三个数据段,三个数据段从左到右依次为“010011”、“111000”和“01000”,并且从左到右依次进行填充位计算。第一个数据段中的数子串“010011”计算完成后填充位总数为0,计算完成后高低电平累积状态为2个高电平(11),计算过程中高低电平累积状态变化过程为:1个低电平->1个高电平->1个低电平->2个低电平->1个高电平->2个高电平。
接下来对第二个数据段的数子串“111000”进行填充位计算。由于在分段计算中前一个数据段数据串的电平积累状态对下一个数据段数据串填充位的计算会产生影响,所以需要保证积电平累状态的连续性,才能精确计算下一个数据段的填充位。因此,在分段计算中考虑前一个数据段数据串的电平积累状态对下一个数据段数据串填充位计算产生的影响,计算第二个数据段时需要以第一个数据段(前一个数据段)计算完成后的高低电平累积状态为前提来计算第二个数据段(当前数据段)。在第二个数据段“111000”的计算过程中高低电平累积状态变化过程为:3个高电平->4个高电平->5个高电平(产生一个填充位,状态转换为1个低电平)->2个低电平->3个低电平->4个低电平。
最后计算第三个数据段的数子串“01000”的填充位。计算时同样需要以第二个数据段(前一个数据段)计算完成后的高低电平累积状态为前提来计算第三个数据段(当前数据段)。第三个数据段“01000”的计算过程中高低电平累积状态变化过程为:5个低电平(产生一个填充位,状态转换为1个高电平)->2个高电平->1个低电平->2个低电平和3个低电平。
对二进制数据串“010011 111000 01000”计算填充位结束后得到,最终的高低电平累积状态为3个低电平(ThreeDominant)状态,并且共产生了两个填充位。
图2是根据本发明实施例的计算报文数据填充位的方法的流程图。本发明采用分段计算策略来计算报文数据的填充位,各数据段的填充位数可以从预存储的数据字典中查找。如图2所示,本发明的计算报文数据填充位的方法包括步骤S110、S120和S130。
在步骤S110处,在第一数据字典中查找与报文数据的N个数据段中的第一个数据段的填充位数和电平积累状态。N可以是大于1的整数。N个数据段的划分可以是从报文数据的帧起始位开始依次划分,第一个数据段是从报文数据的帧起始位开始依次划分所得的N个数据段中的第一个数据分段。第一数据字典中预存储有与第一个数据段位数相同的所有数据串以及每个数据串的填充位数和电平积累状态,因此可以通过第一数据字典来查找第一个数据段的填充位数和电平积累状态。
在步骤S120处,依次获得N个数据段中的第2个数据段的填充位数至第N个数据段的填充位数。应理解,第2个数据段至第N个数据段是指报文数据的N个数据段中除第一个数据段以外的所有其他数据段。例如,如果N=6,就是指从报文数据的帧起始位开始将其划分为6个数据段,那么第2个数据段至第N个数据段就是指除第一个数据段以外的第2个数据段至第6个数据段。
具体的,在步骤S120处,是根据当前数据段的前一个数据段的电平积累状态在与当前数据段相对应的第二数据字典中查找与当前数据段的填充位数和电平积累状态。在本发明中,电平积累状态表示的是在位填充之后相应数据段最后的电平连续状态。并且,第2个数据段至第N个数据段中每个数据段配置有一个第二数据字典,第二数据字典中预存储有第2个数据段至第N个数据段中每个数据段分别与其前一个数据段相关联的填充位数,因此可以通过第二数据字典来查找第2个数据段至第N个数据段的填充位数。
在进行上述步骤S110和S120之后可以获得N个数据段中各个数据段对应的填充位数。然后,可以进行步骤S130,累加N个数据段的填充位数,从而获得报文数据的填充位数。
本发明的上述方法,通过采用分段计算策略,将报文数据划分为N个数据段来计算报文填充位,并且各数据段的填充位数直接从用于第一个数据段的第一数据字典和用于第2个至第N个数据段的第二数据字典中查找,从而无需逐位进行填充位计算,提升了计算效率。
在一些实施例中,如图3所示,本发明的方法可以在步骤S110之前首先进行报文数据分段的步骤S102,来将报文数据划分为N个数据段。可以将报文数据帧中需要计算填充位的部分进行分段,每个数据段的二进制数据串的长度可以根据实际应用场景来确定,本发明对此不进行限定。如果数据段中的二进制数据串的长度越长,则预存储的第一数据字典或第二数据字典占用的内存空间越大,但计算填充位的速度越快。如果数据段中的二进制数据串的长度越短,则预存储的第一数据字典或第二数据字典占用的内存空间越小,但计算填充位的速度越慢。在实际应用中,可以在内存占用与计算速度间进行权衡来确定每个数据段的数据串长度。
需要进一步说明的是,在对报文数据进行分段时尽量不要跨位场来划分各个数据段,因为在实际应用中,各位场的数据通常会存储在各自的数据结构中,跨位场的数据段在计算时需要组合两个场的数据位,这种操作会增加计算性能。因此在一些实施例中,可以根据报文数据帧的位场将报文数据划分为N个数据段,报文数据帧包括需要进行位填充的多个待填充位场,N个数据段中每个数据段可以是来自相同的位场。也就是说,对报文数据划分的各个数据段不跨越两个需要进行位填充的位场。在这样的实施例中,报文数据帧还可以包括不需要进行位填充的位场。
图4是根据本发明实施例的CAN报文标准帧结构的示意图。这里以CAN报文数据帧的位场包括帧起始位、仲裁场、控制场、数据场、CRC(Cyclic Redundancy Check,循环冗余校验)场和帧结束位为例的一个具体实施例对数据段划分进行说明。在该实施例中,帧起始位为1位,仲裁场的数据位长度为12位,控制场的数据位长度为6位,假设数据场的数据位长度为16位;CRC场的数据位长度为16位。CAN报文数据中除数据场以外的各个位场的数据位长度是固定的。数据场的数据位长度是可变的,数据场的数据位长度在0-64位的范围内。但数据场的数据位长度都是以字节为单位,是8的整数倍。在该实施例中,假设数据场长度为16位。对报文数据划分数据段时可以是沿着从帧起始位到帧结束位的方向进行,并且第一个数据段应包含帧起始位。则在从帧起始位到帧结束位的方向上可以依次划分的数据段为:13位(包括帧起始位和仲裁场)、6位(控制场)、8位(数据场)、8位(数据场)、9位(CRC场)和6位(CRC场)。中间的两个8位对应数据场,后边的9位和6位对应CRC场。以这种方式对报文数据划分的各个数据段不跨越两个需要进行位填充的位场,即每个数据段是来自相同的位场。另外,由于CRC场最后一位的界定符、ACK(应答)场和帧结束场不进行位填充,因此,也就无需再划分数据段。图4所示CAN报文标准帧结构中各英文简写的含义参见现有技术,此处不再赘述。
需要说明的是:即使数据帧的各位场长度是确定的,在进行数据段划分时的划分方式也可以是不同的,例如仍以上述数据帧为例,上述数据帧的CRC场划分时也可以对应8位和7位两个数据段。
仍参考图3,在报文数据分段的规则确定之后,可以进行步骤数据初始化的步骤S104,来生成后续需要使用的第一数据字典和第二数据字典。数据初始化可以只需进行一次。本发明所使用的第一数据字典和第二数据字典可以是预存储的,数据初始化的步骤可用于生成第一数据字典和第二数据字典。在步骤S104中,可以首先生成用于第一个数据段的第一数据字典。第一数据字典中包括与第一个数据段的位数相同的所有第一数据串、以及每个第一数据串的填充位数和电平积累状态。具体的,在第一数据字典的生成过程中,可以首先获取与第一个数据段的位数相同的所有第一数据串并将所有第一数据串存储在第一数据字典中,然后利用报文数据的位填充规则计算与每个第一数据串相对应的填充位数和电平积累状态,再建立第一数据串与填充位数和电平积累状态对应关系,得到第一数据字典。
在一些实施例中,第一数据字典可以是key-value(键-值)形式,key为第一数据串,value为与第一数据串相对应的填充位数和电平积累状态。在一些实施例中,可以通过填充位状态记录器存储第一数据字典的value,即通过填充位状态记录器存储与第一数据串相对应的填充位数和电平积累状态。填充位状态记录器是一个数据容器,可以用于记录对特定长度的数据串进行填充位计算后所产生的填充位数和高低电平累积状态这两个结果数据。在其它实施例中,第一数据字典也可以采用能够存储多个第一数据串、以及相对应的填充位数和电平积累状态其它存储形式,本发明对此不进行限定。
在一个具体实施例中,可以首先计算N个数据段中的第一个数据段的二进制数据串长度所对应的所有二进制数据串的填充位数。在计算填充位数的过程中记录每个数据串在填充位计算结束时的高低电平积累状态,然后利用计算得到的填充位数和高低电平积累状态来生成填充位状态记录器的实例,并将计算结果放入第一数据字典中。利用填充位状态记录器来存储精确的填充位数,可以精确获得第一个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
以第一个数据段的二进制数据串的长度为14位数据串为例对第一数据字典进行说明。首先计算第一个数据段14位二进制数所对应的所有二进制数据串的填充位数,即计算0-8191(10进制)范围内每个整数对应的二进制数据串的填充位数。在计算过程中记录每个数据串在填充位计算结束时的高低电平积累状态,生成8192条分别以二进制数据串作为key,每个二进制数据串相对应的填充位状态记录器的实例(包括填充位数和高低电平积累状态)为value的记录。表2列出了部分14位二进制数对应的填充位状态记录器的实例数据。
表2 14位二进制数对应的填充位状态记录器实例数据
Figure BDA0002598157870000101
Figure BDA0002598157870000111
该数据字典即作为第一数据字典。当然,实际使用中,第一个数据段的二进制数据串的长度为是根据实际应用场景确定的,并不限于14位。
然后,在步骤S104处还根据N个数据段的划分生成第二数据字典。具体的,可以计算除第一个数据段外其他数据段(第2个至第N个数据段)长度对应的所有第二数据串在给定高低电平累积状态下的填充位数,并将计算结果存储在相应的第二数据字典中,从而生成用于第2个至第N个数据段的第二数据字典。
再一次说明,由于在分段计算中前一个数据段数据串的电平积累状态对下一个数据段数据串填充位的计算会产生影响,所以为了保证积电平累状态的连续性,在计算第2个至第N个数据段的填充位时,需要考虑当前数据段的前一个数据段的电平积累状态,在计算第2个至第N个数据段的填充位时都需要获得前一段数据计算填充位后的高低电平累积状态,来做为当前数据段的计算前提。即,根据前一段数据计算填充位后的高低电平累积状态在当前数据段数据位长度所对应的子数据字典查找相应的填充位。
在一些实施例中,在第二数据字典的生成过程中,首先,针对2个数据段至第N数据段中的每个数据段,获取与其位数相同的所有第二数据串。例如,如果一个数据段的长度为5,那么存在与其位数相同的32个互不相同的二进制数据串。然后,利用报文数据的位填充规则计算与其前一个数据段位数相同的所有数据串的电平历史累积状态。在一个具体实施例中,以5个连续高或低电平的位填充规则为例,即连续5个高电平或者连续5个低电平时产生一个填充位。如果前一个段数据计算填充位后的高低电平累积状态为4个高电平(0000),当前数据段的二进制数据串为“0101110”,则此时前一个数据段的4个高电平(0000)与其后的当前数据段的第一个二进数“0”能够产生一个填充位“1”。另外,因为当出现这两种状态时会增加1个填充位,同时状态会转为1个低电平或1个高电平,所以在计算第2个至第N个数据段时,与前一个数据段相关联的给定的高低电平累积状态中不包含5个高电平与5个低电平这两种状态。并且,不同长度的二进制数据串的记录存储在不同的第二数据字典中,可以保证数据记录不会被覆盖。在该实施例中,长度为5的二进制数据串对应的第二数据字典总共有8种状态(对应8种电平积累状态,不包含5个高电平和5个低电平这两种状态),8种状态对应有8条记录。这样,2个数据段至第N数据段中每个数据段的前一个数据段的电平历史累积状态将是这8种电平积累状态中的一种。
然后,针对2个数据段至第N数据段中的每个数据段,利用报文数据的位填充规则计算各电平历史累积状态下与每个获取的第二数据串相对应的填充位数和电平积累状态,便得到了相应第二数据串的填充位数和最终的高低电平累积状态,例如32个数据串各自的填充位数和最终的高低电平累积状态。之后,就可以建立电平历史累积状态和第二数据串与填充位数和电平积累状态对应关系,从而得到第二数据字典。通过第二数据字典可以记录在电平积累状态下,各个第二数据串的填充位数和最终的高低电平累积状态。这样在计算当前数据段的填充位时,利用电平积累状态再根据当前数据段本身对应的第二数据串即可确定数据段对应的填充位。
在一些实施例中,第二数据字典为key-value形式,key为上述电平历史积累状态,value为子数据字典,每个电平历史累积状态对应一个子数据字典。其中,每个子数据字典也为key-value的形式,每个子数据字典的key为与相应数据段位数相同的所有第二数据串,每个子数据字典的value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。在5个连续高或低电平的位填充规则的实施例中,第二数据字典的key为8种电平积累状态。第二数据字典的value又是一个子数据字典。每个子数据字典各有32条记录,子数据字典的key是长度为5的二进制数据串对应的32个互不相同的二进制数据串,value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。应理解,在其它实施例中,第二数据字典也可以是任何其它适当的存储形式,本发明对此不进行限定。
在一些实施例中,可以通过第二填充位状态记录器存储每个子数据字典的所有value。利用填充位状态记录器来存储精确的填充位数,可以精确获得各个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
如上,在步骤S104处生成了第一数据字典和第二数据字典,第一数据字典的key可以为一个二进制数据串,value可以为一个填充位状态记录器的实例;第二数据字典的key可以为一个高低电平累积状态,value可以为一个与第一数据字典结构相同的子数据字典。
随后,可以进行步骤S110、S120和S130,根据划分的N个数据段来计算报文数据的填充位。计算报文数据填充位时,可以按着从第一个数据段至第N个数据段的顺序来依次进行计算。
在步骤S110处,根据报文数据分段的分段结果,在第一数据字典中查找与报文数据的第一个数据段相对应的填充位数和电平积累状态。
在步骤S120处,根据第2个至第N个数据段中的当前数据段的前一个数据段的电平积累状态,在第二数据字典中查找与当前数据段相对应的填充位数和电平积累状态。这样,可以获得N个数据段中各个数据段的填充位。
然后,在步骤S130处,在分段计算填充位结束后,累加N个数据段的填充位数,从而获得最终的报文数据的填充位数。
综上,借助于本发明的上述技术方案,通过将需要计算填充位数的报文数据划分为多个数据段,然后各个数据段在数据字典中进行查表来获得填充位数,提供了一种高效率填充位计算方法;该方法利用填充位状态记录器来存储精确的填充位数,从而可以精确获得各个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
根据本发明的另一方面,提供了一种计算报文数据填充位的装置。图5是根据本发明实施例的计算报文数据填充位的装置的示意图。如图5所示,计算报文数据填充位的装置500可以包括第一填充位数查找模块510、第二填充位数查找模块520和填充位数累加模块530。
第一填充位数查找模块510可以用于在第一数据字典中查找报文数据划分所得N个数据段中第一个数据段的填充位数和电平积累状态,N为大于1的整数,第一个数据段是从报文数据的帧起始位开始依次划分所得的N个数据段中的第一个。第一数据字典中预存储有与第一个数据段位数相同的所有数据串以及每个数据串的填充位数和电平积累状态,因此可以通过第一数据字典来查找第一个数据段的填充位数和电平积累状态。
第二填充位数查找模块520可以用于依次获得N个数据段中的第2个数据段的填充位数至第N个数据段的填充位数。并且,根据当前数据段的前一个数据段的电平积累状态在与当前数据段相对应的第二数据字典中查找与当前数据段的填充位数和电平积累状态。在本发明中,电平积累状态表示的是在位填充之后相应数据段最后的电平连续状态。并且,第2个数据段至第N个数据段中每个数据段配置有一个第二数据字典,第二数据字典中预存储有第2个数据段至第N个数据段中每个数据段分别与其前一个数据段相关联的填充位数,因此可以通过第二数据字典来查找第2个数据段至第N个数据段的填充位数。
通过第一填充位数查找模块510和第二填充位数查找模块520可以获得N个数据段中各个数据段对应的填充位数。然后,可以通过填充位数累加模块530累加第一个数据段的填充位数、第2个数据段至第N个数据段的填充位数,得到报文数据的填充位。
本发明的上述装置,通过采用分段计算策略,将报文数据划分为N个数据段来计算报文填充位,并且各数据段的填充位数直接从用于第一个数据段的第一数据字典和用于第2个至第N个数据段的第二数据字典中查找,从而无需逐位进行填充位计算,提升了计算效率。
本发明的装置可以用于分析CAN总线报文数据或CAN FD总线报文数据。在以下具体实施方式中将以CAN总线报文数据为例来对本发明进行说明。但是,本发明并不限于此。本发明的装置也可以用于其它需要进行位填充的总线报文数据。
本发明的装置还可以包括用于进行报文数据分段的模块,以将报文数据划分为N个数据段。报文数据划分所得N个数据段中每个数据段来自于相同的位场。具体的报文数据的划分方式如以上关于图3和图4,此处不再赘述。
在一些实施例中,计算报文数据填充位的装置还可以包括用于生成第一数据字典的第一数据字典生成模块。第一数据字典生成模块可以具体包括数据串获取单元、第一计算单元和第一字典建立单元。
数据串获取单元可以首先获取与第一个数据段的位数相同的所有第一数据串并将所有第一数据串存储在第一数据字典中。然后,第一计算单元利用报文数据的位填充规则计算与每个第一数据串相对应的填充位数和电平积累状态,最后通过第一字典建立单元建立第一数据串与填充位数和电平积累状态对应关系,得到第一数据字典。
在一些实施例中,第一数据字典可以是key-value(键-值)形式,key为第一数据串,value为与第一数据串相对应的填充位数和电平积累状态。在一些实施例中,可以通过填充位状态记录器存储第一数据字典的value,即通过填充位状态记录器存储与第一数据串相对应的填充位数和电平积累状态。填充位状态记录器是一个数据容器,可以用于记录对特定长度的数据串进行填充位计算后所产生的填充位数和高低电平累积状态这两个结果数据。在其它实施例中,第一数据字典也可以采用能够存储多个第一数据串、以及相对应的填充位数和电平积累状态其它存储形式,本发明对此不进行限定。
在一个具体实施例中,可以首先计算N个数据段中的第一个数据段的二进制数据串长度所对应的所有二进制数据串的填充位数。在计算填充位数的过程中记录每个数据串在填充位计算结束时的高低电平积累状态,然后利用计算得到的填充位数和高低电平积累状态来生成填充位状态记录器的实例,并将计算结果放入第一数据字典中。利用填充位状态记录器来存储精确的填充位数,可以精确获得第一个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
在一些实施例中,计算报文数据填充位的装置还可以包括用于生成第二数据字典的第二数据字典生成模块。第二数据字典生成模块可以具体包括电平历史获取单元、第二计算单元和第二字典建立单元。
由于在分段计算中前一个数据段数据串的电平积累状态对下一个数据段数据串填充位的计算会产生影响,所以为了保证积电平累状态的连续性,在计算第2个至第N个数据段的填充位时,需要考虑当前数据段的前一个数据段的电平积累状态,在计算第2个至第N个数据段的填充位时都需要获得前一段数据计算填充位后的高低电平累积状态,来做为当前数据段的计算前提。即,根据前一段数据计算填充位后的高低电平累积状态在当前数据段数据位长度所对应的子数据字典查找相应的填充位。
因此在第二数据字典的生成过程中,首先,针对2个数据段至第N数据段中的每个数据段,通过电平历史获取单元获取与其位数相同的所有第二数据串。然后,针对2个数据段至第N数据段中的每个数据段,通过第二计算单元利用报文数据的位填充规则计算各电平历史累积状态下与每个获取的第二数据串相对应的填充位数和电平积累状态,便得到了相应第二数据串的填充位数和最终的高低电平累积状态。之后,可以通过第二字典建立单元建立电平历史累积状态和第二数据串与填充位数和电平积累状态对应关系,从而得到第二数据字典。通过第二数据字典可以记录在电平积累状态下,各个第二数据串的填充位数和最终的高低电平累积状态。这样在计算当前数据段的填充位时,利用电平积累状态再根据当前数据段本身对应的第二数据串即可确定数据段对应的填充位。
在一些实施例中,第二数据字典为key-value形式,key为上述电平历史积累状态,value为子数据字典,每个电平历史累积状态对应一个子数据字典。其中,每个子数据字典也为key-value的形式,每个子数据字典的key为与相应数据段位数相同的所有第二数据串,每个子数据字典的value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。
在一些实施例中,第二数据字典为key-value形式,key为电平历史积累状态,value为各子数据字典,每个电平历史累积状态对应一个子数据字典。其中,每个子数据字典也为key-value的形式,每个子数据字典的key为与相应数据段位数相同的所有第二数据串,每个子数据字典的value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。
在一些实施例中,可以通过第二填充位状态记录器存储每个子数据字典的所有value。利用填充位状态记录器来存储精确的填充位数,可以精确获得各个数据段的填充位数,以保证报文数据填充位数计算结果的精确度。
这样,第一填充位数查找模块和第二填充位数查找模块可以分别利用由第一数据字典生成模块和第二数据字典生成模块生成的第一数据字典和第二数据字典,来查找第一个数据段的填充位数和电平积累状态、N个数据段中的第2个数据段的填充位数至第N个数据段的填充位数,再通过填充位数累加模块进行累加得到报文数据的填充位。
在一些实施例中,本发明的装置可以构造为工具软件的一部分,利用这样的工具软件可以实时精确的计算例如CAN FD总线上的报文负载率。并且能在保证CAN FD总线报文负载率精度的同时提升总线数据分析软件的计算效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种计算报文数据填充位的方法,其特征在于,包括:
在第一数据字典中查找报文数据划分所得N个数据段中第一个数据段的填充位数和电平积累状态,N为大于1的整数,所述第一个数据段是从所述报文数据的帧起始位开始依次划分所得的所述N个数据段中的第一个;
依次获得所述N个数据段中第2个数据段至第N个数据段的填充位数,其中,根据当前数据段的前一个数据段的电平积累状态在与所述当前数据段相对应的第二数据字典中查找所述当前数据段的填充位数和电平积累状态,其中,每个电平积累状态表示在位填充之后相应数据段最后的电平连续状态,所述第2个数据段至所述第N个数据段中每个数据段配置有一个所述第二数据字典;
累加所述第一个数据段的填充位数、所述第2个数据段至所述第N个数据段的填充位数,得到所述报文数据的填充位。
2.根据权利要求1所述的计算报文数据填充位的方法,其特征在于,所述第一数据字典的生成过程,包括:
获取与所述第一个数据段的位数相同的所有第一数据串;
利用所述报文数据的位填充规则计算与每个所述第一数据串相对应的填充位数和电平积累状态;
建立所述第一数据串与填充位数和电平积累状态对应关系,得到所述第一数据字典。
3.根据权利要求2所述的计算报文数据填充位的方法,其特征在于,所述第一数据字典为key-value形式,其中,key为所述第一数据串,value为与所述第一数据串相对应的填充位数和电平积累状态。
4.根据权利要求3所述的计算报文数据填充位的方法,其特征在于,通过第一填充位状态记录器存储所述第一数据字典的value。
5.根据权利要求1所述的计算报文数据填充位的方法,其特征在于,所述第二数据字典的生成过程,包括:
针对所述2个数据段至所述第N数据段中的每个数据段,获取与其位数相同的所有第二数据串,并利用所述报文数据的位填充规则计算与其前一个数据段位数相同的所有数据串的电平历史累积状态;
针对所述2个数据段至所述第N数据段中的每个数据段,利用所述报文数据的位填充规则计算各电平历史累积状态下与每个获取的所述第二数据串相对应的填充位数和电平积累状态;
建立电平历史累积状态和所述第二数据串与填充位数和电平积累状态对应关系,得到所述第二数据字典。
6.根据权利要求5所述的计算报文数据填充位的方法,其特征在于,所述第二数据字典为key-value形式,key为电平历史积累状态,value为各子数据字典,每个电平历史累积状态对应一个子数据字典;
其中,每个子数据字典也为key-value的形式,每个子数据字典的key为与相应数据段位数相同的所有第二数据串,每个子数据字典的value为与第二数据串和电平历史积累状态相对应的填充位数和电平积累状态。
7.根据权利要求6所述的计算报文数据填充位的方法,其特征在于,通过第二填充位状态记录器存储每个子数据字典的所有value。
8.根据权利要求1所述的计算报文数据填充位的方法,其特征在于,所述报文数据划分所得N个数据段中每个数据段来自于相同的位场。
9.根据权利要求1-8任一项所述的计算报文数据填充位的方法,其特征在于,所述报文数据为CAN总线报文数据或者CAN FD总线报文数据。
10.一种计算报文数据填充位的装置,其特征在于,包括:
第一填充位数查找模块,用于在第一数据字典中查找报文数据划分所得N个数据段中第一个数据段的填充位数和电平积累状态,N为大于1的整数,所述第一个数据段是从所述报文数据的帧起始位开始依次划分所得的所述N个数据段中的第一个;
第二填充位数查找模块,用于依次获得所述N个数据段中第2个数据段至第N个数据段的填充位数,其中,根据当前数据段的前一个数据段的电平积累状态在与所述当前数据段相对应的第二数据字典中查找所述当前数据段的填充位数和电平积累状态,其中,每个电平积累状态表示在位填充之后相应数据段最后的电平连续状态,所述第2个数据段至所述第N个数据段中每个数据段配置有一个所述第二数据字典;
填充位数累加模块,用于累加所述第一个数据段的填充位数、所述第2个数据段至所述第N个数据段的填充位数,得到所述报文数据的填充位。
CN202010715963.5A 2020-07-23 2020-07-23 计算报文数据填充位的方法及装置 Active CN112087418B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010715963.5A CN112087418B (zh) 2020-07-23 2020-07-23 计算报文数据填充位的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010715963.5A CN112087418B (zh) 2020-07-23 2020-07-23 计算报文数据填充位的方法及装置

Publications (2)

Publication Number Publication Date
CN112087418A true CN112087418A (zh) 2020-12-15
CN112087418B CN112087418B (zh) 2022-08-09

Family

ID=73735674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010715963.5A Active CN112087418B (zh) 2020-07-23 2020-07-23 计算报文数据填充位的方法及装置

Country Status (1)

Country Link
CN (1) CN112087418B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113708890A (zh) * 2021-08-10 2021-11-26 深圳市华星光电半导体显示技术有限公司 数据编码方法、数据解码方法、存储介质及计算机设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030012218A1 (en) * 1998-08-27 2003-01-16 Russell John Paul Payload mapping in synchronous networks
CN102594680A (zh) * 2012-02-15 2012-07-18 迈普通信技术股份有限公司 一种报文分段处理系统及处理方法
WO2012132217A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 Can通信システム、can送信装置、can受信装置、およびcan通信方法
WO2013040752A1 (en) * 2011-09-20 2013-03-28 Renesas Mobile Corporation Enhanced mac padding for data transmissions
EP2908475A1 (en) * 2014-02-17 2015-08-19 Consiglio Nazionale Delle Ricerche Limitation of bit stuffing in a communication frame of an electronic signal
CN106992879A (zh) * 2017-03-14 2017-07-28 中国第汽车股份有限公司 一种can总线负载率的计算方法
US20190215094A1 (en) * 2018-01-08 2019-07-11 Samsung Electronics Co., Ltd. Digital bus noise suppression
US20190246184A1 (en) * 2016-09-23 2019-08-08 Hangzhou Hikvision Digital Technology Co., Ltd. Data Transmission Method and Apparatus, and Electronic Device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030012218A1 (en) * 1998-08-27 2003-01-16 Russell John Paul Payload mapping in synchronous networks
WO2012132217A1 (ja) * 2011-03-31 2012-10-04 ルネサスエレクトロニクス株式会社 Can通信システム、can送信装置、can受信装置、およびcan通信方法
WO2013040752A1 (en) * 2011-09-20 2013-03-28 Renesas Mobile Corporation Enhanced mac padding for data transmissions
CN102594680A (zh) * 2012-02-15 2012-07-18 迈普通信技术股份有限公司 一种报文分段处理系统及处理方法
EP2908475A1 (en) * 2014-02-17 2015-08-19 Consiglio Nazionale Delle Ricerche Limitation of bit stuffing in a communication frame of an electronic signal
US20190246184A1 (en) * 2016-09-23 2019-08-08 Hangzhou Hikvision Digital Technology Co., Ltd. Data Transmission Method and Apparatus, and Electronic Device
CN106992879A (zh) * 2017-03-14 2017-07-28 中国第汽车股份有限公司 一种can总线负载率的计算方法
US20190215094A1 (en) * 2018-01-08 2019-07-11 Samsung Electronics Co., Ltd. Digital bus noise suppression

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
何志阳,陈淑荣: "《船舶CAN总线响应时间特性研究》", 《机械设计与制造工程》, 15 November 2016 (2016-11-15) *
冯化: "CANopen协议总线负载优化的研究", 《煤矿现代化》, no. 04, 15 August 2016 (2016-08-15) *
刘宇等: "基于填充系数法的汽车车身CAN总线性能分析", 《机械与电子》, no. 08, 24 August 2008 (2008-08-24) *
刘小威: "《基于重复数据检测的网络差异备份系统研究》", 《中国硕士学位论文全文数据库 信息技术辑》, 1 April 2012 (2012-04-01) *
李木国等: "基于EtherCAT的工业以太网数据采集系统", 《计算机工程》, no. 03, 5 February 2010 (2010-02-05) *
王俊波等: "CAN报文实时性分析及在线评估", 《控制与决策》, no. 04, 30 April 2007 (2007-04-30) *
邵丙新: "CAN总线在计算机远程控制中的应用", 《科技创新与应用》, no. 07, 8 March 2013 (2013-03-08) *
金百东等: "MIS系统通用插入组件的设计与实现", 《辽宁师范大学学报(自然科学版)》, no. 03, 20 September 2004 (2004-09-20) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113708890A (zh) * 2021-08-10 2021-11-26 深圳市华星光电半导体显示技术有限公司 数据编码方法、数据解码方法、存储介质及计算机设备
CN113708890B (zh) * 2021-08-10 2024-03-26 深圳市华星光电半导体显示技术有限公司 数据编码方法、数据解码方法、存储介质及计算机设备

Also Published As

Publication number Publication date
CN112087418B (zh) 2022-08-09

Similar Documents

Publication Publication Date Title
US8006160B2 (en) Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
US20180121286A1 (en) Efficient repair of erasure coded data based on coefficient matrix decomposition
US6728929B1 (en) System and method to insert a TCP checksum in a protocol neutral manner
CN107370560B (zh) 一种极化码的编码和速率匹配方法、装置及设备
CN108574561A (zh) 极化码编码的方法和装置
CN101635611B (zh) 一种信道译码方法和装置
CN1992583A (zh) 用于使用二进制奇偶校验来重建丢失分组的方法
CN100512020C (zh) 一种译码方法及译码装置
CN112087418B (zh) 计算报文数据填充位的方法及装置
CN106649217A (zh) 数据的匹配方法及装置
US11652573B2 (en) Error correction in network packets using soft information
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
JP2021505028A (ja) エンコーディング方法および装置、電子デバイスおよび記憶媒体
CN112380383A (zh) 一种实时视频流数据的高效容错索引方法
CN112131609A (zh) 基于Merkle树的电能质量数据交换格式文件完整性校验方法及系统
CN1359067A (zh) 使循环缓冲器中的数据有效的方法
CN102170649B (zh) Pdcch盲检测方法及装置
KR102128037B1 (ko) 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법
US20070140326A1 (en) Method for rate matching in data transmission
CN108628697B (zh) 一种基于二进制的节点修复方法及系统
CN110175185B (zh) 一种基于时序数据分布特征的自适应无损压缩方法
CN112702141B (zh) 可调的串行抵消列表极化码译码方法和装置
EP4100954A1 (en) Improved quality value compression framework in aligned sequencing data based on novel contexts
CN102934387B (zh) 对数据包进行循环冗余校验的方法及装置
CN104901947A (zh) 一种基于tcam连续数值匹配方法和装置

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