CN107135047A - 循环冗余效验码的生成方法和装置 - Google Patents
循环冗余效验码的生成方法和装置 Download PDFInfo
- Publication number
- CN107135047A CN107135047A CN201610113250.5A CN201610113250A CN107135047A CN 107135047 A CN107135047 A CN 107135047A CN 201610113250 A CN201610113250 A CN 201610113250A CN 107135047 A CN107135047 A CN 107135047A
- Authority
- CN
- China
- Prior art keywords
- output result
- frame data
- data
- frame
- group
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了循环冗余效验码的生成方法,方法:将数据信息中每级数据划为M/N帧数据单元并划为Q组;针对每级数据,根据CRC输入值,每帧有效性计算每帧第一输出结果;针对每组根据该组所有数据单元,该组每帧有效性同步计算每组中每帧的第二输出结果;根据每组最后帧第二输出结果,该组最后帧至第(M/N-1)帧有效性同步计算每组的下组所有帧至第M/N帧的第三输出结果;将每帧的输出结果异或计算,得到每帧数据单元的CRC值,定义最后级数据中最后帧的CRC输出值为数据信息CRC值。本发明还公开了一种装置。本发明的方法和装置,缩短了CRC值计算时间,提高了CRC值计算频率,降低了芯片计算CRC值所占的资源和功耗。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种循环冗余校验码(CycleRedundancy Check,CRC)的生成方法和装置。
背景技术
在数据通信领域中通常采用并行算法来计算CRC值,根据多项式生成CRC计算函数,在一个周期内就可以计算出CRC结果。
现有技术中当需要处理的数据位宽很宽,并行算法不能满足频率要求,可以采用分离计算的方式实现pipeline操作,即对并行算法中的异或表达式进行分离计算,再对分离计算出的多个结果进行异或运算得到最终的CRC值。
现有技术的这种计算高位宽CRC值的方法,其计算时间长,占用芯片的资源和功耗大。
发明内容
本发明的主要目的在于解决现有技术中高位宽数据的CRC值计算时间长,占用的芯片资源和功耗大的技术问题。
为实现上述目的,本发明提供的一种循环冗余效验码的生成方法,所述循环冗余效验码的生成方法包括:
获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;
针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;并同时针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果;
根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;
将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值;所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果;
定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值;
当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错。
优选地,所述的循环冗余效验码的生成方法,在所述根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果之前还包括:
为第1帧数据单元配置相应的第一计算函数;
针对第i帧数据单元,i为自然数,且M/N≥i≥2,计算第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数;
所述根据CRC输入值以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果具体包括:
定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每帧数据单元分配相应的第一计算函数的输入数据;
针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果;
针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
优选地,所述的循环冗余效验码的生成方法,所述针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效情况,计算每组中每帧数据单元对应位置的第二输出结果之前还包括:
为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;
针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数;
确定每一组中每一帧数据单元相应的第二计算函数的输入数据;
所述针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效情况,计算每组中每帧数据单元对应位置的第二输出结果具体包括:
针对每一组的第1帧数据单元,根据相应的输入数据通过相应的第二计算函数,计算本组中第1帧数据单元对应位置的第二输出结果;
针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第j帧数据单元对应位置的第二输出结果。
优选地,所述的循环冗余效验码的生成方法,所述根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该最后一帧数据单元至(M/N-1)帧数据单元的有效情况,计算每该组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果之前还包括:
针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;
为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据;
所述根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该最后一帧数据单元至(M/N-1)帧数据单元的有效情况,计算每该组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果具体包括:
确定当前需要计算对应位置的第三输出结果的数据单元W;
若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数;
通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
优选地,所述的循环冗余效验码的生成方法,所述对每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC值包括:
当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;
当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出该帧数据单元对应位置的CRC值。
此外,为实现上述目的,本发明还提供一种循环冗余效验码的生成装置,所述循环冗余效验码的生成装置包括:
划分模块,用于获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;
第一输出结果计算模块,用于针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;
第二输出结果计算模块,用于针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果;
第三输出结果计算模块,用于根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;
CRC值计算模块,用于将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值;所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果;
定义模块,用于定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值;
当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错
所述第一输出结果计算模块与所述第二输出结果计算模块同步执行相关操作;
所述第一输出结果计算模块与所述第二输出结果计算模块同步执行相关操作。
优选地,所述的循环冗余效验码的生成装置还包括:
第一计算函数配置模块,用于为第1帧数据单元配置相应的第一计算函数;以及针对第i帧数据单元,i为自然数,且M/N≥i≥2,计算第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数;
所述第一输出结果计算模块包括:
输入数据确定单元,用于定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每帧数据单元分配相应的第一计算函数的输入数据;
第一输出结果计算单元,用于针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果;以及针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
优选地,所述的循环冗余效验码的生成装置还包括:
第二计算函数配置模块,用于为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;以及针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数;
输入数据确定模块,用于确定每一组中每一帧数据单元相应的第二计算函数的输入数据;
所述第二输出结果计算模块,具体用于针对每一组的第1帧数据单元,根据相应的输入数据通过相应的第二计算函数,计算本组中第1帧数据单元对应位置的第二输出结果;以及针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第j帧数据单元对应位置的第二输出结果。
优选地,所述的循环冗余效验码的生成装置还包括:
确定模块,用于针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;
第三计算函数配置模块,用于为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据;
所述第三输出结果计算模块包括;
确定单元,用于确定当前需要计算对应位置的第三输出结果的数据单元W;
第三计算函数查找单元,用于若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数;
第三输出结果计算单元,用于通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
优选地,所述的循环冗余效验码的生成装置,所述CRC值计算模块,具体用于当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;以及当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出该帧数据单元对应位置的CRC值。
本发明所提供的循环冗余效验码的生成方法和装置,通过根据数据信息的比特数M,将所述数据信息划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;在计算每帧数据单元对应位置的第一输出结果的同时,同步执行针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果的操作;然后根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;将每帧数据单元对应位置的输出结果进行异或计算的方式,得到每帧数据单元对应的CRC值,大大地缩短了每帧数据单元对应位置的CRC值的计算时间,提高了CRC值的计算频率,降低了芯片计算CRC值所占的资源和功耗。
附图说明
图1为本发明的的循环冗余效验码的生成方法一实施例的流程示意图;
图2为图1中步骤S20的具体细化流程示意图;
图3为图1中步骤S20的具体数据信号和控制信号的走向示意图;
图4为图1中步骤S30的具体数据信号和控制信号的走向示意图;
图5为图1中步骤S40的具体数据信号和控制信号走向示意图;
图6为图1中步骤S40的另一具体数据信号和控制信号的走向示意图;
图7为本发明的循环冗余效验码的生成装置一实施例的功能模块示意图;
图8为本发明的循环冗余效验码的生成装置另一实施例的功能模块示意图;
图9为图8中第一输出结果计算模块的具体细化功能模块示意图;
图10为本发明的循环冗余效验码的生成装置又一实施例的功能模块示意图;
图11为本发明的循环冗余效验码的生成装置又一实施例的功能模块示意图;
图12为图11中第三输出结果计算模块的具体细化功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明提供一种循环冗余效验码的生成方法。参照图1,图1为本发明的的循环冗余效验码的生成方法一实施例的流程示意图。在一实施例中,所述循环冗余效验码的生成方法包括:
步骤S10、获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组。
本发明中所述Q组中的每组中数据单元帧数可以相同也可以不同,本实施例优选为相同。
步骤S20、针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果。
本实施例中在计算每帧数据单元对应位置的第一输出结果之前需要为每帧数据单元配置相应的第一计算函数。即在本步骤S20之前还包括如下处理:为第1帧数据单元配置相应的第一计算函数;针对第i帧数据单元,i为自然数,且M/N≥i≥2,确定第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数。本发明中每帧数据单元可能是有效的也可能是无效的,每帧数据单元的有效性情况包括两种:一种是该帧数据单元有效,另一种是该帧数据单元无效。当i为大于等于3的自然数时,则第1帧至第(i-1)帧数据单元的有效性情况的可能组合包括多种。本发明中可以“0”作为有效标识、“1”作为无效标识;假设i=3,则第1帧至第(i-1)帧数据单元包括:第1帧数据单元和第2帧数据单元,其中第1帧数据单元的有效性情况为有效“0”或无效“1”;第2帧数据单元的有效性情况为有效“0”或无效“1”。因此第1、2帧数据单元的有效性情况可能的组合包括以下四种:第1帧数据单元有效“0”、第2帧数据单元有效“0”;第1帧数据单元有效“0”、第2帧数据单元无效“1”;第1帧数据单元有效“0”;第2帧数据单元无效“1”;第1帧数据单元无效“1”;第2帧数据单元无效“1”。
参见图2,图2为图1中步骤S20的具体细化流程示意图。所述步骤S20具体包括:
步骤S21、定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每个帧数据单元分配相应的第一计算函数的输入数据。
本发明中每帧数据单元的有效性情况包括两种:有效、无效,其中可以“0”作为有效标识、“1”作为无效标识。
步骤S22、针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果。
步骤S23、针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
参见图3,图3为图1中步骤S20的具体数据信号和控制信号的走向示意图。图3以比特数M为1536的数据信息为例,将数据信息划分为1536/64=24帧数据单元,每帧数据单元的比特位宽为64,将24帧数据单元划分为帧数相同的三组:第一组包括第1帧数据单元DATA0至第8帧数据单元DATA7;第二组包括第9帧数据单元DATA8至第16帧数据单元DATA15;第三组包括第17帧数据单元DATA16至第24帧数据单元DATA23。首先判断控制信号中的前一级数据的最后一帧数据单元的有效性信号“前一级CTRLIN[23]”的值为“0”还是“1”,若为“0”则pre_crc=CRC输入值;若为“1”则pre_crc=32‘hffff ffff;并将该pre_crc作为输入数据供每个第一计算函数选择。对于第1帧数据单元DATA0直接配置第一计算函数为C63_0,并选择确定pre_crc作为C63_0的输入数据。针对第i(i≥2)帧数据单元,预先确定第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数。以第3帧数据单元DATA2为例,第2帧数据单元DATA1无效“1”,配置第一计算函数为C63_0,选择确定32'hffff_ffff作为第一计算函数C63_0的输入数据。第2帧数据单元DATA1有效“0”,第1帧数据单元DATA0无效“1”,配置第一计算函数为C127_0,选择确定32'hffff_ffff作为第一计算函数C127_0的输入数据。其他有效性情况下,配置第一计算函数为C191_0,选择确定pre_crc作为第一计算函数C191_0的输入数据。而在实际计算过程中输入的控制信号CTRLIN[23:0]包含第1帧数据单元DATA0至第24帧数据单元DATA23的实际有效性标识。第1帧至第(i-1)帧数据单元实际有效性情况有且只有一种,首先根据控制信号CTRLIN[23:0]查找第1帧至第(i-1)帧数据单元实际有效性情况组合属于哪何种组合,然后查找该组合对应的第一计算函数,再通过所查找到的第一计算函数以相应的输入数据作为输入值计算该第i帧数据单元对应位置的第一输出结果。以第3帧数据单元DATA2为例,当控制信号中的CTRLIN[1:0]的值为“2'b01”,则表示计算第3帧数据单元DATA2对应位置的第一输出结果所需要的第1帧数据单元DATA0至第2=(3-1)帧数据单元DATA1实际有效性情况为:第2帧数据单元DATA1有效“0”,第1帧数据单元DATA0无效“1”,其对应的第一计算函数为C127_0,输入数据为32'hffff_ffff,即通过第一计算函数为C127_0,以输入数据32'hffff_ffff作为输入值计算第3帧数据单元DATA2的第一输出结果C_OUT2。另外计算第2帧数据单元及其后续的数据单元对应位置的第一输出结果原理与计算所述第3帧数据单元对应位置的第一输出结果的原理基本相同,具体参见图3,在此不再赘述。
步骤S30、针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果。
本发明中所述步骤S20与所述步骤S30同步进行。
本实施例中,所述本实施例中在计算每组中的每帧数据单元对应位置的第二输出结果之前需要为每组中的每帧数据单元配置相应的第二计算函数。即在本步骤S30之前还包括如下处理:为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数;确定每一组中每一帧数据单元相应的第二计算函数的输入数据。所述步骤S30针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效情况,计算该组中每帧数据单元对应位置的第二输出结果具体包括:针对每一组的第1帧数据单元,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第1帧数据单元对应位置的第二输出结果;针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第j帧数据单元对应位置的第二输出结果。参见图4,图4为图1中步骤S30的具体数据信号和控制信号的走向示意图。图4中涉及的数据信息与图3中所述的数据信息一致。现结合图4计算第一组中第3帧(DATA2)数据单元的第二输出结果为例,对本步骤S30进行进一步的描述。第一组中第1帧(DATA0)至第2帧(DATA1)数据单元的有效性情况的可能组合包括:第2帧无效“1”;第2帧有效“0”、第1帧无效“1”;其他有效性情况。第2帧无效“1”,对应配置的第二计算函数为D63_0,输入数据为(DATA2);第2帧有效“0”、第1帧无效“1”,对应配置的第二计算函数为D63_0^D127_64,其中D63_0的输入数据为DATA2;D127_64的输入数据DATA1;其他有效性情况,对应配置的第二计算函数为D63_0^D127_64^D191_128,其中D63_0的输入数据为DATA2;D127_64的输入数据为DATA1;D191_128的输入数据为DATA0。在实际计算过程中当输入的控制信号CTRLIN[1:0]的值为“2'b01”,表示针对计算第3帧数据单元(DATA2)对应位置的第二输出结果,第2帧数据单元DATA1有效“0”、第1帧数据单元无效“1”,选择采用D63_0^D127_64作为计算第3帧数据单元(DATA2)对应位置的第二输出结果的第二计算函数,其中D63_0的输入数据为DATA2,D127_64的输入数据为DATA1。本组中计算其他帧数据单元对应位置的第二输出结果原理一致,同时计算其他组的数据单元对应位置的第二输出结果与第1组原理一致,在此不再赘述。另外本发明中每一组的数据单元对应位置的第二输出结果的计算过程为同步进行,如此设计大大地缩短了所有数据单元对应位置的第二输出结果的计算时间,提高第二输出结果的计算频率,减少了资源的使用。
步骤S40、根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果。
本实施例中,在本步骤S40之前还包括如下处理:针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据。所述步骤S40根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该最后一帧数据单元至(M/N-1)帧数据单元的有效情况,计算出该组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果具体包括如下处理:确定当前需要计算对应位置的第三输出结果的数据单元W;若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,则根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数;通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
参见图5,图5为图1中步骤S40的具体数据信号和控制信号走向示意图。图5中涉及的数据信息为图3中所述的数据信息一致。现以第1组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第2组至第Q组中每帧数据单元对应位置的第三输出结果为例对本步骤S40进行进一步的描述。首先确定所述第1组最后一帧数据单元(DATA7)至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;例如以第1组中最后一帧数据单元(DATA7)对应位置的第二输出结果作为输入数据,针对计算第三组的第7帧数据单元(DATA22)的第三输出结果,其中DATA7至DATA22的有效性情况的可能组合包括:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”;其他有效性情况。DATA7至DATA22的有效性情况的组合为:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”,对应配置的第三计算函数为C959_0,第三计算函数C959_0的输入数据为第1组中最后一帧数据单元对应位置的第二输出结果D_OUT7。DATA7至DATA22的有效性情况为其他有效性情况,第三输出结果直接取值为32'h0。在实际计算过程中当输入的控制信号CTRLIN[22:7]的值为“16'b1000000000000000”,表明DATA7至DATA22的有效性情况的组合为:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”,则通过第三计算函数C959_0以输入数据D_OUT7作为输入值计算出DATA22对应位置的第三输出结果。
参见图6,图6为图1中步骤S40的另一具体数据信号和控制信号的走向示意图。图6中涉及的数据信息为图3中所述的数据信息一致。现结合图6以第2组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第3组至第Q组中每帧数据单元对应位置的第三输出结果为例对本步骤S40进行进一步的描述。首先确定所述第2组最后一帧数据单元(DATA15)至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;例如以第2组中最后一帧数据单元(DATA15)对应位置的第二输出结果作为输入数据,针对计算第三组的第7帧数据单元(DATA22)的第三输出结果,其中DATA15至DATA22的有效性情况的可能组合包括:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”;其他有效性情况。DATA15至DATA22的有效性情况组合为:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”,对应配置的第三计算函数为C447_0,第三计算函数C447_0的输入数据为第2组中最后一帧数据单元对应位置的第二输出结果D_OUT15。DATA15至DATA22的有效性情况组合为其他有效性情况,第三输出结果直接取值为32'h0。在实际计算过程中当输入的控制信号CTRLIN[22:15]的值为“8'b10000000”,表明DATA15至DATA22的有效性情况组合为:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”,则通过第三计算函数C447_0以输入数据D_OUT15作为输入值计算出DATA22的第三输出结果。
从图5和图6可知第三组中每个数据单元的第三输出结果包括两个,即本发明中第L组的每个数据单元对应位置的第三输出结果个数为(L-1)个。
本发明中以不同组中最后一帧数据单元对应位置的第二输出结果作为输入数据,对应组的下一组至第Q组中每帧数据单元对应位置的第三输出结果的计算过程为同步进行,如此设计大大地缩短了所有数据单元对应位置的第三输出结果的计算时间,提高了第三输出结果的计算频率,减少了资源的使用。
步骤S50、将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值;所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果。
本步骤S50对每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC值具体处理如下:当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出该帧数据单元对应位置的CRC值。其中不同组中的数据单元对应位置的第三输出结果个数不同,第L组的数据单元对应位置的第三输出结果为(L-1)个。
现以第一组的第1帧数据单元(DATA0)、第二组的第1帧数据单元(DATA8)、第三组的第1帧数据单元(DATA16)为例对本步骤S50进行举例式说明,由于第一组的第1帧数据单元对应位置的输出结果只包括第一输出结果C_OUT0、第二输出结果D_OUT0,则对该C_OUT0与D_OUT0进行异或计算得到该第1帧数据单元(DATA0)的CRC值。第二组的第1帧数据单元(DATA8)对应位置的输出结果包括第一输出结果C_OUT8、第二输出结果D_OUT8、第三输出结果C_D2_OUT8,则对该C_OUT8、D_OUT8、C_D2_OUT8进行异或计算得到该第二组的第1帧数据单元(DATA8)的CRC值。第三组的第1帧数据单元(DATA16)对应位置的输出结果包括第一输出结果C_OUT16、第二输出结果D_OUT16、第三输出结果C_D2_OUT16和C_D1_OUT16,则对该C_OUT16、D_OUT16、C_D2_OUT16、C_D1_OUT16进行异或计算得到该第三组的第1帧数据单元(DATA16)的CRC值。
步骤S60、定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值。
本实施例中,当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错。
以上实施例所提供的循环冗余效验码的生成方法,通过根据数据信息的比特数M,将所述数据信息划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;在计算每帧数据单元对应位置的第一输出结果的同时,同步执行针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果的操作;然后根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;将每帧数据单元对应位置的输出结果进行异或计算的方式,得到每帧数据单元对应的CRC值,大大地缩短了每帧数据单元对应位置的CRC值的计算时间,提高了CRC值的计算频率,降低了芯片计算CRC值所占的资源和功耗。
本发明进一步提供一种循环冗余效验码的生成装置,参照图7,图7为本发明的循环冗余效验码的生成装置一实施例的功能模块示意图。在一实施例中,该循环冗余效验码的生成装置100包括:划分模块110、第一输出结果计算模块120、第二输出结果计算模块130、第三输出结果计算模块140、CRC值计算模块150、定义模块160。其中,所述划分模块110,用于获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组。所述第一输出结果计算模块120,用于针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果。所述第二输出结果计算模块130,用于针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果。所述第三输出结果计算模块140,用于根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果。所述CRC值计算模块150,用于将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值。所述定义模块160,用于定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值;所述第一输出结果计算模块与所述第二输出结果计算模块同步执行相关操作。。
本实施例中,当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错。
上述循环冗余效验码的生成装置100实施例中所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果。其中第1组的每个数据单元对应位置的输出结果只包括第一输出结果、第二输出结果。只有第2组及其后续组的每个数据单元对应位置的输出结果包括有第一输出结果、第二输出结果、第三输出结果。另外本发明中所述Q组中的每组中数据单元帧数可以相同也可以不同,本实施例优选为相同。
本实施例中在计算每帧数据单元对应位置的第一输出结果之前需要为每帧数据单元配置相应的第一计算函数。参见图8,图8为本发明的循环冗余效验码的生成装置另一实施例的功能模块示意图。本实施例中所述循环冗余效验码的生成装置100还包括:第一计算函数配置模块170。所述第一计算函数配置模块170,用于为第1帧数据单元配置相应的第一计算函数;以及针对第i帧数据单元,i为自然数,且M/N≥i≥2,确定第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数。本发明中每帧数据单元可能是有效的也可能是无效的,每帧数据单元的有效性情况包括两种:一种是该帧数据单元有效,另一种是该帧数据单元无效。当i为大于等于3的自然数时,则第1帧至第(i-1)帧数据单元的有效性情况的可能组合包括多种。本发明中可以“0”作为有效标识、“1”作为无效标识;假设i=3,则第1帧至第(i-1)帧数据单元包括:第1帧数据单元和第2帧数据单元,其中第1帧数据单元的有效性情况为有效“0”或无效“1”;第2帧数据单元的有效性情况为有效“0”或无效“1”。因此第1、2帧数据单元的有效性情况可能的组合包括以下四种:第1帧数据单元有效“0”、第2帧数据单元有效“0”;第1帧数据单元有效“0”、第2帧数据单元无效“1”;第1帧数据单元有效“0”;第2帧数据单元无效“1”;第1帧数据单元无效“1”;第2帧数据单元无效“1”。
参见图9,图9为图8中第一输出结果计算模块的具体细化功能模块示意图。所述第一输出结果计算模块120包括:输入数据确定单元121和第一输出结果计算单元122。其中所述输入数据确定单元121,用于定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每个帧数据单元分配相应的第一计算函数的输入数据。所述第一输出结果计算单元122,用于针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果;以及针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
上述实施例中每帧所述数据单元的有效性情况包括两种:有效、无效,其中可以“0”作为有效标识、“1”作为无效标识。
参见图3,图3以比特数M为1536的数据信息为例,将数据信息划分为1536/64=24帧数据单元,每帧数据单元的比特位宽为64,将24帧数据单元划分为帧数相同的三组:第一组包括第1帧数据单元DATA0至第8帧数据单元DATA7;第二组包括第9帧数据单元DATA8至第16帧数据单元DATA15;第三组包括第17帧数据单元DATA16至第24帧数据单元DATA23。首先判断控制信号中前一级数据的最后一帧数据单元的有效性信号“前一级CTRLIN[23]的值为“0”还是“1”,若为“0”则pre_crc=CRC输入值;若为“1”则pre_crc=32‘hffff ffff;并将该pre_crc作为输入数据供每个第一计算函数选择。对于第1帧数据单元DATA0直接配置第一计算函数为C63_0,并选择确定pre_crc作为C63_0的输入数据。针对第i(i≥2)帧数据单元,预先确定第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数。以第3帧数据单元DATA2为例,第2帧数据单元DATA1无效“1”,配置第一计算函数为C63_0,选择确定32'hffff_ffff作为第一计算函数C63_0的输入数据。第2帧数据单元DATA1有效“0”,第1帧数据单元DATA0无效“1”,配置第一计算函数为C127_0,选择确定32'hffff_ffff作为第一计算函数C127_0的输入数据。其他有效性情况下,配置第一计算函数为C191_0,选择确定pre_crc作为第一计算函数C191_0的输入数据。而在实际计算过程中输入的控制信号CTRLIN[23:0]包含第1帧数据单元DATA0至第24帧数据单元DATA23的实际有效性标识。第1帧至第(i-1)帧数据单元实际有效性情况有且只有一种,首先根据控制信号CTRLIN[23:0]查找第1帧至第(i-1)帧数据单元实际有效性情况组合属于哪何种组合,然后查找该组合对应的第一计算函数,再通过所查找到的第一计算函数以相应的输入数据作为输入值计算该第i帧数据单元对应位置的第一输出结果。以第3帧数据单元DATA2为例,当控制信号CTRLIN[1:0]的值为“2'b01”,则表示计算第3帧数据单元DATA2对应位置的第一输出结果所需要的第1帧数据单元DATA0至第2=(3-1)帧数据单元DATA1实际有效性情况为:第2帧数据单元DATA1有效“0”,第1帧数据单元DATA0无效“1”,其对应的第一计算函数为C127_0,输入数据为32'hffff_ffff,即通过第一计算函数为C127_0,以输入数据32'hffff_ffff作为输入值计算第3帧数据单元DATA2的第一输出结果C_OUT2。另外计算第2帧数据单元及其后续的数据单元对应位置的第一输出结果原理与计算所述第3帧数据单元对应位置的第一输出结果的原理基本相同,具体参见图3,在此不再赘述。
上述任何一个实施例中在计算每组中的每帧数据单元对应位置的第二输出结果之前需要为每组中的每帧数据单元配置相应的第二计算函数。参见图10,图10为本发明的循环冗余效验码的生成装置又一实施例的功能模块示意图。本实施例中所述循环冗余效验码的生成装置100还包括:第二计算函数配置模块180和输入数据确定模块190。所述第二计算函数配置模块180,用于为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;以及针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数。所述输入数据确定模块190,用于确定每一组中每一帧数据单元相应的第二计算函数的输入数据。上述循环冗余效验码的生成装置100实施例中所述第二输出结果计算模块130,具体用于针对每一组的第1帧数据单元,根据相应的输入数据通过相应的第二计算函数,计算本组中第1帧数据单元对应位置的第二输出结果;以及针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,根据相应的输入结果通过相应的第二计算函数,计算本组中第j帧数据单元对应位置的第二输出结果。参见图4,图4为图2中步骤S30的具体数据信息和控制信号的走向示意图。图4中涉及的数据信息与图3中所述的数据信息一致。现结合图4计算第一组中第3帧(DATA2)数据单元的第二输出结果为例对所述第二输出结果计算模块130针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,计算该组中每帧数据单元对应位置的第二输出结果的过程进行进一步的描述。第一组中第1帧(DATA0)至第2帧(DATA1)数据单元的有效性情况的可能组合包括:第2帧无效“1”;第2帧有效“0”、第1帧无效“1”;其他有效性情况。第2帧无效“1”,对应配置的第二计算函数为D63_0,输入数据为(DATA2);第2帧有效“0”、第1帧无效“1”,对应配置的第二计算函数为D63_0^D127_64,其中D63_0的输入数据为DATA2;D127_64的输入数据DATA1;其他有效性情况,对应配置的第二计算函数为D63_0^D127_64^D191_128,其中D63_0的输入数据为DATA2;D127_64的输入数据为DATA1;D191_128的输入数据为DATA0。在实际计算过程中当输入的控制信号CTRLIN[1:0]的值为“2'b01”,表示针对计算第3帧数据单元(DATA2)对应位置的第二输出结果,第2帧数据单元DATA1有效“0”、第1帧数据单元无效“1”,选择采用D63_0^D127_64作为计算第3帧数据单元(DATA2)对应位置的第二输出结果的第二计算函数,其中D63_0的输入数据为DATA2,D127_64的输入数据为DATA1。本组中计算其他帧数据单元对应位置的第二输出结果原理一致,同时计算其他组的数据单元对应位置的第二输出结果与第1组原理一致,在此不再赘述。另外本发明中每一组的数据单元对应位置的第二输出结果的计算过程为同步进行,如此设计大大地缩短了所有数据单元对应位置的第二输出结果的计算时间,提高第二输出结果的计算频率,减少了资源的使用。
参见图11,图11为本发明的循环冗余效验码的生成装置又一实施例的功能模块示意图。上述任何一个实施例中所述循环冗余效验码的生成装置100还包括:确定模块201和第三计算函数配置模块101。所述确定模块201,用于针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1。所述第三计算函数配置模块101,用于为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据。
参见图12,图12为图11中第三输出结果计算模块的具体细化功能模块示意图。所述第三输出结果计算模块140包括:确定单元141、第三计算函数查找单元142、第三输出结果计算单元143。所述确定单元141,用于确定当前需要计算对应位置的第三输出结果的数据单元W。所述第三计算函数查找单元142,用于若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数。所述第三输出结果计算单元143,用于通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
参见图5,图5中涉及的数据信息为图3中所述的数据信息一致。现结合图5以第1组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第2组至第Q组中每帧数据单元对应位置的第三输出结果为例对第三输出结果计算模块140根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,计算出该组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果的具体过程进行进一步的描述。首先确定所述第1组最后一帧数据单元(DATA7)至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;例如以第1组中最后一帧数据单元(DATA7)对应位置的第二输出结果作为输入数据,针对计算第三组的第7帧数据单元(DATA22)的第三输出结果,其中DATA7至DATA22的有效性情况的可能组合包括:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”;其他有效性情况。DATA7至DATA22的有效性情况的组合为:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”,对应配置的第三计算函数为C959_0,第三计算函数C959_0的输入数据为第1组中最后一帧数据单元对应位置的第二输出结果D_OUT7。DATA7至DATA22的有效性情况为其他有效性情况,第三输出结果直接取值为32'h0。在实际计算过程中当输入的控制信号CTRLIN[22:7]的值为“16'b1000000000000000”,表明DATA7至DATA22的有效性情况的组合为:DATA22无效“1”、DATA21有效“0”、…DATA9有效“0”、DATA8有效“0”、DATA7有效“0”,则通过第三计算函数C959_0以输入数据D_OUT7作为输入值计算出DATA22对应位置的第三输出结果。
参见图6,图6为图2中步骤S40的另一具体数据信息和控制信号的走向示意图。图6中涉及的数据信息为图3中所述的数据信息一致。现结合图6以第2组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第3组至第Q组中每帧数据单元对应位置的第三输出结果为例,对第三输出结果计算模块140根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,计算出该组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果的具体过程进行进一步的描述。首先确定所述第2组最后一帧数据单元(DATA15)至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;例如以第2组中最后一帧数据单元(DATA15)对应位置的第二输出结果作为输入数据,针对计算第三组的第7帧数据单元(DATA22)的第三输出结果,其中DATA15至DATA22的有效性情况的可能组合包括:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”,其他有效性情况。DATA15至DATA22的有效性情况组合为:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”,对应配置的第三计算函数为C447_0,第三计算函数C447_0的输入数据为第2组中最后一帧数据单元对应位置的第二输出结果D_OUT15。DATA15至DATA22的有效性情况组合为其他有效性情况,第三输出结果直接取值为32'h0。在实际计算过程中当输入的控制信号CTRLIN[22:15]的值为“8'b10000000”,表明DATA16至DATA22的有效性情况组合为:DATA22无效“1”、DATA21有效“0”、…DATA16有效“0”、DATA15有效“0”,则通过第三计算函数C447_0以输入数据D_OUT15作为输入值计算出DATA22的第三输出结果。
从图5和图6可知第三组中每个数据单元的第三输出结果包括两个,即本发明中第L组的每个数据单元对应位置的第三输出结果个数为(L-1)个。
本发明中以不同组中最后一帧数据单元对应位置的第二输出结果作为输入数据,对应组的下一组至第Q组中每帧数据单元对应位置的第三输出结果的计算过程为同步进行,如此设计大大地缩短了所有数据单元对应位置的第三输出结果的计算时间,提高了第三输出结果的计算频率,减少了资源的使用。
上述循环冗余效验码的生成装置任何一个实施例中,所述CRC值计算模块150,具体用于当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;以及当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出帧数据单元对应位置的CRC值。
现以第一组的第1帧数据单元(DATA0)、第二组的第1帧数据单元(DATA8)第三组的第1帧数据单元(DATA16)为例对本步骤S50进行举例式说明,由于第一组的第1帧数据单元对应位置的输出结果只包括第一输出结果C_OUT0、第二输出结果D_OUT0,则对该C_OUT0与D_OUT0进行异或计算得到该第1帧数据单元(DATA0)的CRC值。第二组的第1帧数据单元(DATA8)对应位置的输出结果包括第一输出结果C_OUT8、第二输出结果D_OUT8、第三输出结果C_D2_OUT8,则对该C_OUT8、D_OUT8、C_D2_OUT8进行异或计算得到该第二组的第1帧数据单元(DATA8)的CRC值。第三组的第1帧数据单元(DATA16)对应位置的输出结果包括第一输出结果C_OUT16、第二输出结果D_OUT16、第三输出结果C_D2_OUT16和C_D1_OUT16,则对该C_OUT16、D_OUT16、C_D2_OUT16、C_D1_OUT16进行异或计算得到该第三组的第1帧数据单元(DATA16)的CRC值。
以上实施例所提供的循环冗余效验码的生成装置100,通过根据数据信息的比特数M,将所述数据信息划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;在计算每帧数据单元对应位置的第一输出结果的同时,同步执行针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果的操作;然后根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;将每帧数据单元对应位置的输出结果进行异或计算的方式,得到每帧数据单元对应的CRC值,大大地缩短了每帧数据单元对应位置的CRC值的计算时间,提高了CRC值的计算频率,降低了芯片计算CRC值所占的资源和功耗。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种循环冗余效验码的生成方法,其特征在于,所述循环冗余效验码的生成方法包括:
获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;
针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;并同时针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果;
根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;
将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值;所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果;
定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值;
当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错。
2.根据权利要求1所述的循环冗余效验码的生成方法,其特征在于,在所述根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果之前还包括:
为第1帧数据单元配置相应的第一计算函数;
针对第i帧数据单元,i为自然数,且M/N≥i≥2,计算第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数;
所述根据CRC输入值以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果具体包括:
定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每帧数据单元分配相应的第一计算函数的输入数据;
针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果;
针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
3.根据权利要求1所述的循环冗余效验码的生成方法,其特征在于,所述针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效情况,计算每组中每帧数据单元对应位置的第二输出结果之前还包括:
为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;
针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数;
确定每一组中每一帧数据单元相应的第二计算函数的输入数据;
所述针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效情况,计算每组中每帧数据单元对应位置的第二输出结果具体包括:
针对每一组的第1帧数据单元,根据相应的输入数据通过相应的第二计算函数,计算本组中第1帧数据单元对应位置的第二输出结果;
针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第j帧数据单元对应位置的第二输出结果。
4.根据权利要求1所述的循环冗余效验码的生成方法,其特征在于,所述根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该最后一帧数据单元至(M/N-1)帧数据单元的有效情况,计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果之前还包括:
针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;
为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据;
所述根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该最后一帧数据单元至(M/N-1)帧数据单元的有效情况,计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果具体包括:
确定当前需要计算对应位置的第三输出结果的数据单元W;
若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数;
通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
5.根据权利要求1至4任一项所述的循环冗余效验码的生成方法,其特征在于,所述对每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC值包括:
当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;
当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出该帧数据单元对应位置的CRC值。
6.一种循环冗余效验码的生成装置,其特征在于,所述循环冗余效验码的生成装置包括:
划分模块,用于获取数据信息,根据所述数据信息中每一级数据的比特数M,将所述每一级数据划分为M/N帧比特位宽为N的数据单元,将所述M/N帧数据单元划分为Q组;
第一输出结果计算模块,用于针对每一级数据,根据CRC输入值,以及每帧所述数据单元的有效性情况,计算每帧数据单元对应位置的第一输出结果;
第二输出结果计算模块,用于针对每一组数据单元,根据该组中所有数据单元的数据内容,以及该组中每帧数据单元的有效性情况,同步计算每组中每帧数据单元对应位置的第二输出结果;
第三输出结果计算模块,用于根据每一组数据单元中最后一帧数据单元对应位置的第二输出结果,以及该组中最后一帧数据单元至第(M/N-1)帧数据单元的有效性情况,同步计算出每组的下一组所有帧数据单元至第M/N帧数据单元对应位置的第三输出结果;
CRC值计算模块,用于将每帧数据单元对应位置的输出结果进行异或计算,得到每帧数据单元对应的CRC输出值;所述输出结果包括第一输出结果、第二输出结果,或者包括第一输出结果、第二输出结果、第三输出结果;
定义模块,用于定义所述数据信息中最后一级数据中最后一帧数据单元对应的CRC输出值为所述数据信息的CRC值;
当所述数据信息为待发送类型,所述CRC值用于嵌入所述数据信息,与所述数据信息一并发送至接收端,以使数据接收端根据自身生成的第一CRC值与所述CRC值的比对结果,判断所接收的数据信息是否出错;当所述数据信息为已接收类型,所述CRC值用于与所述数据信息中嵌入的第二CRC值进行大小比对,以使数据接收端根据比对结果判断所述数据信息是否出错;
所述第一输出结果计算模块与所述第二输出结果计算模块同步执行相关操作。
7.根据权利要求6所述的循环冗余效验码的生成装置,其特征在于,还包括:
第一计算函数配置模块,用于为第1帧数据单元配置相应的第一计算函数;以及针对第i帧数据单元,i为自然数,且M/N≥i≥2,计算第1帧至第(i-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第一计算函数;
所述第一输出结果计算模块包括:
输入数据确定单元,用于定义前一级数据中最后一帧数据单元所对应的CRC输出值为当前级的CRC输入值;根据每帧所述数据单元的有效性情况,为当前级数据中每帧数据单元分配相应的第一计算函数的输入数据;
第一输出结果计算单元,用于针对第1帧数据单元,通过相应的第一计算函数以相应的输入数据作为输入值,计算所述第1帧数据单元对应位置的第一输出结果;以及针对第i帧数据单元,根据第1帧至第(i-1)帧数据单元实际有效性情况,查找相应的第一计算函数,根据相应的输入数据通过相应的第一计算函数,计算所述第i帧数据单元对应位置的第一输出结果。
8.根据权利要求6所述的循环冗余效验码的生成装置,其特征在于,还包括:
第二计算函数配置模块,用于为每一组数据单元中的第1帧数据单元配置相应的第二计算函数;以及针对每一组数据单元中的第j帧数据单元,每组中数据单元总帧数≥j≥2,计算第1帧至第(j-1)帧数据单元的有效性情况的可能组合,为每一种组合配置一个相应的第二计算函数;
输入数据确定模块,用于确定每一组中每一帧数据单元相应的第二计算函数的输入数据;
所述第二输出结果计算模块,具体用于针对每一组的第1帧数据单元,根据相应的输入数据通过相应的第二计算函数,计算本组中第1帧数据单元对应位置的第二输出结果;以及针对每一组中第j帧数据单元,根据本组中第1帧至第(j-1)帧数据单元的实际有效性情况,查找相应的第二计算函数,通过相应的第二计算函数以相应的输入数据作为输入值,计算本组中第j帧数据单元对应位置的第二输出结果。
9.根据权利要求6所述的循环冗余效验码的生成装置,其特征在于,还包括:
确定模块,用于针对以第f组中最后一帧数据单元对应位置的第二输出结果作为输入数据,计算第f+1组至第Q组中每帧数据单元对应位置的第三输出结果的情况,确定所述第f组最后一帧数据单元至每个需要计算对应位置的第三输出结果的数据单元的有效性情况的可能组合,(Q-1)≥f≥1;
第三计算函数配置模块,用于为每个需要计算对应位置的第三输出结果的数据单元的每一种组合配置一个相应的第三计算函数,确定每个第三计算函数的输入数据;
所述第三输出结果计算模块包括;
确定单元,用于确定当前需要计算对应位置的第三输出结果的数据单元W;
第三计算函数查找单元,用于若该数据单元为第f+1组中第1帧数据单元至第M/N帧数据单元中的任何一帧数据单元,根据第f组最后一帧数据单元至当前需要计算对应位置的第三输出结果的数据单元的实际有效性情况,查找相应的第三计算函数;
第三输出结果计算单元,用于通过相应的第三计算函数以所述输入数据作为输入值,计算所述数据单元W对应位置的第三输出结果。
10.根据权利要求6至9任一项所述的循环冗余效验码的生成装置,其特征在于,
所述CRC值计算模块,具体用于当某一帧数据单元对应位置的输出结果包括第一输出结果、第二输出结果,则通过对所述第一输出结果、第二输出结果进行异或计算,得出该帧数据单元对应位置的CRC值;以及当某一帧数据单元计算出的输出结果包括第一输出结果、第二输出结果、第三输出结果,则通过对所述第一输出结果、第二输出结果、第三输出结果进行异或计算,得出该帧数据单元对应位置的CRC值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113250.5A CN107135047A (zh) | 2016-02-29 | 2016-02-29 | 循环冗余效验码的生成方法和装置 |
PCT/CN2016/092716 WO2017148096A1 (zh) | 2016-02-29 | 2016-08-01 | 循环冗余校验码的生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113250.5A CN107135047A (zh) | 2016-02-29 | 2016-02-29 | 循环冗余效验码的生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107135047A true CN107135047A (zh) | 2017-09-05 |
Family
ID=59720947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610113250.5A Pending CN107135047A (zh) | 2016-02-29 | 2016-02-29 | 循环冗余效验码的生成方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107135047A (zh) |
WO (1) | WO2017148096A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656833A (zh) * | 2017-11-06 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种crc计算设备及计算方法 |
CN109787713A (zh) * | 2017-11-15 | 2019-05-21 | 华为技术有限公司 | 一种循环冗余校验crc计算方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101286238B1 (ko) * | 2007-08-01 | 2013-07-15 | 삼성전자주식회사 | 데이터 병렬화 수신기 |
CN104639294A (zh) * | 2015-02-10 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种改进的crc校验实现方法 |
CN105049057B (zh) * | 2015-08-17 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向128位并行输入的crc‑32校验电路 |
CN105119694B (zh) * | 2015-09-11 | 2018-06-12 | 烽火通信科技股份有限公司 | 一种计算高速网络中crc值的方法及系统 |
-
2016
- 2016-02-29 CN CN201610113250.5A patent/CN107135047A/zh active Pending
- 2016-08-01 WO PCT/CN2016/092716 patent/WO2017148096A1/zh active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656833A (zh) * | 2017-11-06 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种crc计算设备及计算方法 |
CN109787713A (zh) * | 2017-11-15 | 2019-05-21 | 华为技术有限公司 | 一种循环冗余校验crc计算方法和装置 |
CN109787713B (zh) * | 2017-11-15 | 2020-10-09 | 华为技术有限公司 | 一种循环冗余校验crc计算方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017148096A1 (zh) | 2017-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108008948B (zh) | 一种指令生成过程的复用装置及方法、处理装置 | |
CN109214973A (zh) | 针对隐写分析神经网络的对抗安全载体生成方法 | |
CN107688853A (zh) | 一种用于执行神经网络运算的装置及方法 | |
CN102215183A (zh) | 盲检测装置及方法 | |
CN107135047A (zh) | 循环冗余效验码的生成方法和装置 | |
CN104461593A (zh) | 差分升级包的制作方法及装置 | |
CN108875482A (zh) | 物体检测方法和装置、神经网络训练方法和装置 | |
CN110518945A (zh) | 一种基于深度学习与sdr算法的mimo检测方法及装置 | |
CN106776401A (zh) | 消息传输方法和装置 | |
CN107194383A (zh) | 基于改进Hu不变矩和ELM的交通标志牌识别方法和装置 | |
CN105224577A (zh) | 一种多标签文本分类方法及系统 | |
CN109933304B (zh) | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 | |
CN109389216A (zh) | 神经网络的动态裁剪方法、装置及存储介质 | |
CN105389386B (zh) | 一种基于搜索结果的分页处理方法和装置 | |
CN109359650A (zh) | 目标检测方法及装置、嵌入式设备 | |
CN103260154B (zh) | 一种基于128-eia3的完整性保护增强方法 | |
CN105978889A (zh) | 生物特征加密方法及装置 | |
CN109117939A (zh) | 神经网络及在移动感知设备上部署神经网络的方法 | |
CN103927560A (zh) | 一种特征选择方法及装置 | |
CN106960419A (zh) | 一种图像伽马校正方法及装置 | |
CN113205501A (zh) | 一种基于轻量化空洞卷积的焊缝缺陷多尺度特征提取模块 | |
CN106354581A (zh) | 一种循环冗余校验方法以及多核处理器 | |
CN109039608B (zh) | 一种基于双S核的8-bitAES电路 | |
CN109460533A (zh) | 一种提高gemm计算性能的方法及装置 | |
CN107220024A (zh) | 一种基于fpga的数据处理方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170905 |