CN108574490A - 计算循环冗余校验crc编码的方法及装置 - Google Patents

计算循环冗余校验crc编码的方法及装置 Download PDF

Info

Publication number
CN108574490A
CN108574490A CN201810433230.5A CN201810433230A CN108574490A CN 108574490 A CN108574490 A CN 108574490A CN 201810433230 A CN201810433230 A CN 201810433230A CN 108574490 A CN108574490 A CN 108574490A
Authority
CN
China
Prior art keywords
data
data segment
segment
bit
highest
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
CN201810433230.5A
Other languages
English (en)
Other versions
CN108574490B (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.)
University of Science and Technology of China USTC
Huawei Technologies Co Ltd
Original Assignee
University of Science and Technology of China USTC
Huawei Technologies 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 University of Science and Technology of China USTC, Huawei Technologies Co Ltd filed Critical University of Science and Technology of China USTC
Priority to CN201810433230.5A priority Critical patent/CN108574490B/zh
Publication of CN108574490A publication Critical patent/CN108574490A/zh
Priority to PCT/CN2018/125871 priority patent/WO2019214265A1/zh
Application granted granted Critical
Publication of CN108574490B publication Critical patent/CN108574490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

一种计算循环冗余校验CRC编码方案,在本方案中,基于本源多项式的倍式对信息序列进行处理,将处理后的信息序列基于本源多项式计算CRC编码。

Description

计算循环冗余校验CRC编码的方法及装置
技术领域
本发明涉及信息技术领域,更具体地,涉及一种计算循环冗余校验CRC编码的方法及装置。
背景技术
在存储系统中,循环冗余校验(Cyclic Redundancy Check,CRC)编码是一种循环码,在存储系统中的CRC编码通常使用基于伽罗华域GF(2)的本源多项式设计CRC编码方案。CRC编码原理:假设一个L比特的信息序列(信息取值为0或1),aL-1,aL-2,…,a0,其中信息序列可以为待处理的数据,比如待存储或发送的数据,L-比特的信息序列表示成一个多项式:
C(x)=aL-1x^(L-1)+aL-2x^(L-2)+aL-3x^(L-3)+…+a0。其中al-1是信息序列的最高有效位(Most Significant Bit,MSB),a0是信息序列的最低有效位(Least SignificantBit,LSB),x^(L-1)表示X的L-1次幂或X的L-1次方。
另外,m阶本原多项式G(m)为:
G(x)=gmx^m+gm-1x^(m-1)+gm-2x^(m-2)+…+g0
则,
计算C(x)的编码可以表示为:CRC(C(x))=C(x)*x^m mod G(x)
从上面的式子可以看出,CRC编码表示的是C(x)*x^m除以另一个固定的数G(x)之后的余数,其中“*”表示数学运算符号中的“乘”。
在存储系统中,为了对有效数据进行检错,存储系统会对数据进行CRC编码,从而数据在存储或传输过程中发生错误后,存储系统能快速的进行数据一致性校验,因此CRC编码是存储系统中的常用特性。
现有技术中采用流水线(pipeline)的方式结合查表法对数据进行CRC编码,如图1所示:
a)把数据分成若干个段(segment),如segment0至SegmentN,其中N为不小于1的自然数。
b)对每个段单独进行CRC编码,分别得到crc0至crcN。
c)将每个段编码得到的crc和特定的常量系数(Constant)进行无进位乘法(Carry-less Multiplication,CLMUL)。如将crc0与Constant0进行CLMUL,将crc1与Constant1进行CLMUL,……,将crcN与ConstantN进行CLMUL。
d)将每个段的CLMUL结果进行CRC编码,分别得到C0,C1,C2,……,CN。
e)将C0,C1,C2,……,CN进行异或(Exclusive OR,XOR),得到最终的CRC编码CRCF。
然而,现有技术CRC编码方式的步骤b和d中的CRC编码操作需要大量的移位和异或运行,增加了计算的复杂度,需要消耗大量的计算资源,从而影响了CRC编码的效率与性能。
发明内容
本发明实施例第一方面,提供了计算循环冗余校验CRC编码的方案,包括:获取第一数据;将第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;基于一个或多个第一本源多项式处理第二数据得到第三数据;其中所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;基于第二本源多项式处理第三数据得到第一数据的N位CRC编码;其中,所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。具体实现,可以由存储阵列的控制器、服务器等设备执行上述方案,设备中存储第一本源多项式和第二本源多项式。该方案减少移位和异或运算操作,提高了计算CRC编码的效率和性能。
结合第一方面,在第一种可能的实现方式中,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的项数小于所述第二本源多项式有效的项数,从而减少了移位操作和异或操作。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一本源多项式为所述第二本源多项式的倍式中有效的项数最少的倍式,使用有效项数最少的倍式,可以进一步减少移位操作和异或操作。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。该实现方式可以减少进行移位和异或操作的数据段的数量,从而提高计算数据CRC编码的效率与性能。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到所述第二数据的长度小于2*X位,其中“*”表示乘。该实现方式可以减少进行移位和异或操作的数据段的数量,从而提高计算数据CRC编码的效率与性能。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第五种可能的实现方式中,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数;所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。该实现方式可以进一步减少进行移位和异或操作的数据段的数量,从而提高计算数据CRC编码的效率与性能。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,将所述第二数据基于Q1(x)进行处理得到第四数据,包括:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
结合第一方面的第五种或第六种可能的实现方式,在第七种可能的实现方式中,将所述第四数据基于Q2(x)进行处理得到所述第三数据,包括:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
结合第一方面的第五种或第六种可能的实现方式,在第八种可能的实现方式中,将所述第四数据基于Q2(x)进行处理得到所述第三数据,包括:
步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低R位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
结合第一方面或第一方面的第一种至第八种任一可能的实现方式,在第九种可能的实现方式中,所述基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码,包括:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
结合第一方面或第一方面的第一种至第九种任一可能的实现方式,在第十种可能的实现方式中,所述方法还包括:
存储所述第一数据和所述N位CRC编码。本该案可以提高数据存储的可靠性,防止存储的数据发生错误。进一步的,该该案还包括读取所述第一数据和所述N位CRC编码,计算所述第一数据的N位CRC编码,比较计算出来的N位CRC编码是否与读取出来的N位CRC编码一致,从而判断第一数据在存储过程中是否发生错误。
结合第一方面或第一方面的第一种至第十种任一可能的实现方式,在第十一种可能的实现方式中,所述方法还包括:
发送所述第一数据和所述N位CRC编码。
本发明实施例第二方面,提供了一种计算循环冗余校验CRC编码的装置,包括各种单元,分别用于实现本发明实施例第一方面各种可能的实现方式。
本发明实施例第三方面提供了一种计算循环冗余校验CRC编码的装置,包括接口和处理器,接口和处理器通信,处理器用于执行本发明实施例第一方面的各种可能的实现方式。
本发明实施例第四方面提供了一种计算循环冗余校验CRC编码的装置,包括接口和处理器,接口和处理器通信,接口用于执行本发明实施例第一方面的各种可能的实现方式。
相应地,本发明实施例第五方面还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本发明实施例第一方面各种可能的实现方式。
本发明实施还第六方面提供了一种芯片,包括各种单元,分别用于执行本发明实施例第一方面的各种可能的实现方式。
附图说明
图1是现有技术CRC编码示意图。
图2是本发明实施例存储阵列架构示意图。
图3是本发明实施例存储阵列的控制器的示意图。
图4是本发明实施例分布式块存储系统的示意图。
图5是分布式块存储系统的服务器的示意性结构框图。
图6是本发明实施例CRC编码示意性流程图。
图7是本发明实施例划分信息序列示意图。
图8是本发明实施例CRC编码示意性流程图。
图9是本发明实施例CRC编码示意性流程图。
图10是本发明实施例划分信息序列示意图。
图11是本发明实施例芯片结构示意图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行描述。
如图2所示,本发明实施例中的存储系统,可以为存储阵列(如 18000系列,V3系列)。存储阵列包括存储控制器201和多块硬盘,其中,硬盘包含固态硬盘(Solid State Disk,SSD)、磁盘或者混合硬盘等。如图3所示,控制器201包含中央处理单元(Central Processing Unit,CPU)301、存储器302和接口303,存储器302中存储计算机指令,CPU301执行存储器302中的计算机指令对存储系统进行管理及数据访问操作。另外,为节省CPU301的计算资源,现场可编程门阵列(Field Programmable Gate Array,FPGA)或其他硬件也可以用于执行本发明实施例中CPU301全部操作;或者,FPGA或其他硬件与CPU301分别用于执行本发明实施例CPU301的部分操作。为方便描述,本发明实施例统一用处理器来指CPU301和存储器302的组合,以及上述各种实现,处理器与接口303通信。接口303可以为网络接口卡(Networking Interface Card,NIC)、主机总线适配器(Host BusAdaptor,HBA),天线等。
如图2和图3所描述的存储阵列,控制器201用于获取数据,如接收主机或客户端发送的数据,使用本发明实施例提供的计算CRC编码的方法计算数据的CRC编码。
进一步的,本发明实施例的存储系统还可以为分布式文件存储系统(如9000系列),分布式块存储系统(如系列)等。以 系列。示例性的如图4所示,分布式块存储系统包括多台服务器,如服务器1、服务器2、服务器3,……,服务器6,服务器间通过InfiniBand或以太网络等互相通信。在实际应用当中,分布式块存储系统中服务器的数量可以根据实际需求增加或减少,本发明实施例对此不作限定。
分布式块存储系统的服务器中包含如图5所示的结构。如图5所示,分布式块存储系统中的每台服务器包含中央处理单元(Central Processing Unit,CPU)501、内存502、接口503、硬盘1、硬盘2和硬盘3,内存502中存储计算机指令,CPU501执行内存502中的程序指令执行相应的操作。接口503可以为硬件接口,如网络接口卡(Network Interface Card,NIC)或主机总线适配器(Host Bus Adaptor,HBA)等,也可以为程序接口模块等。硬盘包含固态硬盘(Solid State Disk,SSD)、磁盘或者混合硬盘。。另外,为节省CPU401的计算资源,现场可编程门阵列(Field Programmable Gate Array,FPGA)或其他硬件也可以代替CPU501执行上述相应的操作,或者,FPGA或其他硬件与CPU501共同执行上述相应的操作。为方便描述,本发明实施例将CPU501与内存502、FPGA及其他替代CPU501的硬件或FPGA及其他替代CPU501的硬件与CPU501的组合统称为处理器。接口303可以为网络接口卡(NetworkingInterface Card,NIC)、主机总线适配器(Host Bus Adaptor,HBA),天线等。
如图4和图5所描述的分布式块存储系统,服务器的处理器用于获取数据,如接收主机或客户端发送的数据,使用本发明实施例提供的计算CRC编码的方法计算数据的CRC编码。
除图2-图5所示的场景外,本发明实施例还可以应用到数据传输场景,为了保证数据传输的可靠性,如计算机网络、各种通信网络中传输数据时使用本发明实施例所提供的计算数据CRC编码方法。如计算机获取数据,如计算机上应用程序产生的数据,计算数据的CRC编码。
为更好的理解本发明实施例,首先本发明实施例结合图2所示的存储系统介绍CRC编码的基本原理是:控制器201接收数据后(下面以接收K位数据进行举例说明),将K位数据作为信息序列,在K位信息序列之后再拼接N位的校验码,整个编码长度为K+N=R位。因此,这种编码也叫(R,K)码。对于一个给定的(R,K)码,可以证明存在一个最高次幂为R-K=N的多项式G(x),根据G(x)可以生成K位序列的CRC编码,而G(x)叫做这个CRC编码的生成多项式。N位校验码的具体生成过程为:假设要存储的数据称为信息序列,一个信息序列可以用多项式C(X)表示,将C(x)左移N位(可表示成C(x)*X^N),这样C(x)的右边就会空出N位,这N位就是放置CRC编码的位置。本发明实施例基于用C(x)*X^N和生成多项式G(x)得到校验码,即用C(x)*X^N除以G(x)得到的余数作为N位CRC编码。其中,任意一个由二进制位串组成的数据都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。其中,系数为1的项称为有效的项。例如:数据为1010111对应的多项式为X^6+X^4+X^2+X+1,其中,X^6表示X的6次幂或x的6次方,x为伪变量,幂指数(也称为指数)用于指示各位间的排列位置,幂指数为非负整数,“+”表示异或。多项式为X^5+X^3+X^2+X+1对应的数据为101111。在INCITS(InterNational Committee on Information Technology Standards)的T10技术委员会制定的CRC16的本源多项式为0x18BB7,写成二进制为0001 1000 1011 1011 0111,对应的多项式为X^16+X^15+X^11+X^9+X^8+X^7+X^5+X^4+X^2+X^1+1。按照现有的CRC16编码方法,需要将信息序列划分为大小为16位的数据段,信息序列划分出来的数据段从最高位(从左到右)分别为第1数据段、第2数据段、……、第N数据段。其中,N为不小于2的自然数。首先,第1数据段要分别左移15位(bit),左移11位,左移9位,左移8位,左移7位,左移5位,左移4位,左移2位,左移1位,左移0位,将第1数据段进行上述移位后的得到的数据段进行异或,将异或结果与第2数据段进行异或得到的异或结果,再与第3数据段及第N数据段重新构成数据序列,如果重新构成的新数据序列的长度大于16位,那么对新的数据序列重复执行上述操作(也就是将新的数据序列按照16位划分得到新的数据段,对新的数据段再次执行上述移位及异或操作,以再次构成更新的数据序列),重复的次数可以是一次或者多次,直到最后信息序列长度等于16位为止。
因此,得到如下公式(1)CRC(C(x))=(xdeg(G(x))C(x))(mod(G(x));其中,CRC(C(x))表示信息序列C(x)的CRC编码,G(x)表示本源多项式,如T10的CRC16的本源多项式为X^16+X^15+X^11+X^9+X^8+X^7+X^5+X^4+X^2+X^1+1;deg(G(x))表示本源多项式的最高项的指数,如T10的CRC16的本源多项式的最高项的指数为16,即最高位的指数;xdeg(G(x))C(x)表示将信息序列C(x)左移本源多项式的最高项的指数位,mod表示取模。
结合公式(1),令Q(x)=G(x)T(x),则CRC(C(x))=R(x)(mod(G(x)));其中,R(x)=(xdeg(G(x))C(x))(mod(Q(x)),Q(x)表示G(x)的倍式,T(x)表示某一个多项式,用于表示Q(x)是G(x)的倍式,R(x)表示信息序列C(x)左移16bit得到的多项式除以Q(x)的余数。其中Q(x)所含的有效的最高项的指数和有效的次最高项的指数之差大于1,从而相对G(x)可以减少循环移位操作次数,进一步的,可以选择含有效的项数的个数少的Q(x)进一步减少异或运算的次数,从而大幅降低了CRC编码复杂度,例如选择有效的项数最少的倍式。本发明实施例中,多项式的有效项是指系数为1的项,例如,T10的CRC16的本源多项式中X^16、X^15、X^11、X^9、X^8、X^7、X^5、X^4、X^2、X^1、1的系数均为1,为有效的项。
本发明实施例以G(X)=X^16+X^15+X^11+X^9+X^8+X^7+X^5+X^4+X^2+X^1+1为例,可以利用计算机计算G(x)的倍式,例如使用如下程序查找G(x)的倍式,通常为限定查找范围,可以限定倍式的最高项的指数,例如524287。G(x)的倍式Q(x)表示为x^i+x^j。本发明实施例计算倍式可以由独立的计算机计算,也可以由本发明实施例提供的设备计算,如存储系统等,在此不作限定。以独立的计算机计算为例,计算机执行如下操作:
第一步:遍历i和j,其中,对i和j进行赋值,并且0<=j<i<=524287。
第二步:初始化长度为524288位的信息序列C(x)为全0。因为如果倍式的最高项的指数为524287,则信息序列C(x)有524288位。
第三步:设置信息序列C(x)的第i位和第j位的值为1。
第四步:对长度为524288的信息序列C(x)进行CRC16编码方法进行计算得到CRC编码,如果CRC编码为0,则表示找到1个G(x)倍式。
重复执行第一步至第四步,直到遍历完所有的i与j。
本发明实施例以G(x)的倍式Q(x)=X^369+X^31+1为例,从此倍式可以看出,除去最高项的指数369以外,多项式只有2项的系数是1,即除去最高项外,只有两位有效的项,因此循环移位操作和异或运算次数只需2次。
本发明实施例以G(x)=X^16+X^15+X^11+X^9+X^8+X^7+X^5+X^4+X^2+X^1+1,Q(x)=X^369+X^31+1,C(x)为4096位的信息序列为例,计算信息序列的CRC16编码。本发明实施例中,控制器201需要存储Q(x)和G(x),以用于计算数据的CRC编码。本发明实施例如图6所示,包括:
步骤601:将C(x)左移16位。
即在4096位后面补16个0,移位后的信息序列作为新的信息序列,长度为4096+16=4112位。
步骤602:将新的信息序列从新的信息序列的最高位开始划分为长度为369位的数据段。
新的信息序列从最高位划分表示从新的信息信息的左边开始划分,其中左边第1位为最高位。步骤602将移位后的信息序列划分为11个长度为369位的数据段和1个长度为53的数据段。如图7所示,长度为369位的数据段分别表示为第1数据段、第2数据段、第3数据段、……、第11数据段,长度为53位的数据段记为第12数据段。其中,第1数据段的信息序列表示为A,第2数据段的信息序列表示为B。将新的信息序列从新的信息序列的最高位开始划分为长度为369位的数据段也称为将新的信息序列从新的信息序列的最高位以369位大小划分数据段,即以Q(x)有效的最高项的指数位大小划分数据段。
步骤603:将第1数据段分别左移31位和0位(换句话说:对第1数据段左移31位生成一个数据段,以及对第1数据段左移0位生成第二个数据段),将左移31位和左移0位的第1数据段异或。
根据前面计算CRC16编码的操作,第1数据段根据倍式的次最高指数开始向左移位。
步骤604:将左移31位和左移0位的第1数据段异或结果再与第2数据段异或。
步骤605:将步骤604的结果作为第1数据段与剩余的数据段组成新的信息序列。
将步骤605生成的新的信息序列执行步骤602-605,如此循环,直到最后根据步骤605得到的新的信息序列长度为394位,即新的信息序列的长度小于2*369。
本发明实施例,步骤605后,当新的信息序列的长度大于2*369,则执行步骤602;当新的信息序列的长度小于2*369,则执行步骤606。
上述实施例中,数据段根据Q(x)每次需要向左移31位,但是每一次经过步骤602-605操作,会减少一个数据段,因此即使数据段向左移31位,但仍然减少了(369-31)位的长度,即减少了338位长度。因此相对于现有技术,减少了移位操作数量。步骤601中新的信息序列的长度为4112位,即(12*338+56)位,所以当步骤605得到的新的信息序列长度为394位时,则不能再进行步骤2-4的操作。步骤605得到的新的信息序列长度为394位时,执行606。
步骤606:将新的信息序列基于G(x)计算CRC16编码。即基于G(x)处理新的信息序列得到CRC16编码,实际实现中将新的信息序列除得G(x)的余数作为CRC16编码。
在图6所示的实施例中,相对现有技术,减少了移位操作数量和异或操作的数量,因此节省了计算资源,提高了计算CRC编码的效率和性能。
本发明另一实施例中,如图8所示,在本发明实施例中,步骤801-803分别参考图6所示步骤601-603。
步骤804:将左移31位和左移0位的第1数据段异或结果的低369位与第2数据段异或。
其中,左移31位和左移0位的第1数据段异或结果共400位,将左移31位和左移0位的第1数据段异或结果的左边定义为高位(反之定义为低位),例如从左边开始的前31位称为高31位,从右边开始的369位称为低369位。
步骤805:将左移31位和左移0位的第1数据段异或结果的高31位分别左移31位和0位后,对二者进行异或。
步骤806:将步骤804和步骤805的结果进行异或得到新的数据段,将新的数据段与剩余的数据段组成新的信息序列。
对新的信息序列重复执行步骤802-806,直到最后根据步骤805得到的新的信息序列长度为(369+53)位,即422位。
本发明实施例,步骤806后,当新的信息序列的长度大于2*369,则执行步骤802;当新的信息序列的长度小于2*369,则执行步骤807。
上述实施例中,数据段根据Q(x)每次需要向左移31位,但是每一次经过步骤802-804操作,即使数据段向左移31位,但仍然减少了369位的长度。因此相对于现有技术,大大减少了移位操作数据。步骤1中新的信息序列的长度为4112位,即(11*369+56)位,所以当步骤806得到的新的信息序列长度为422位时,则不能再进行步骤802-805的操作,即新的信息序列长度小于2*369。步骤806得到的新的信息序列长度为422位时,执行步骤807。
步骤807:将新的信息序列基于G(x)计算CRC16编码。即基于G(x)处理新的信息序列得到CRC16编码,实际实现中将新的信息序列除以G(x)的余数作为CRC16编码。
在图8所示的实施例中,相对现有技术,减少了移位操作数量和异或操作的数量,因此节省了计算资源,提高了计算CRC编码的效率和性能。
本发明另一实施例中,以
G(x)=X^16+X^15+X^11+X^9+X^8+X^7+X^5+X^4+X^2+X^1+1,Q(x)=X^369+X^31+1,C(x)为512KB的信息序列为例,其中512KB的信息序列的位数为512*1024*8=4194304位,本发明实施例中可以使用多个倍式进行CRC16计算,如倍式Q1(x)=x^65535+1,倍式Q2(x)=x^369+x^31+1。本发明实施如图9所示,包括:
步骤901:将C(x)左移16位。
即在4194304位后面补16个0,移位后的信息序列作为新的信息序列,长度为4194304+16=4194320位。
步骤902:将新的信息序列从最高位开始划分为长度为65535位的数据段。
新的信息序列从最高位划分表示从新的信息信息的左边开始划分。步骤902将移位后的信息序列划分为64个长度为65535位的数据段和1个长度为80位的数据段。如图10所示,长度为65535位的数据段分别表示为第1数据段、第2数据段、第3数据段,……,第64数据段,长度为80位的数据段记为第65数据段。其中,第1数据段的信息序列表示为A,第2数据段的信息序列表示为B。
步骤903:将第1数据段和第2数据段异或。
根据前面计算CRC16校验数据的操作,第1数据段根据倍式的次最高指数开始向左移位。在本发明实施例中,Q1(x)=x^65535+1的次最高指数为0,向左移0位。
步骤904:将步骤903异或的结果作为第1数据段与剩余的数据段组成新的信息序列。
将新的信息序列执行步骤902-904,直到最后根据步骤904得到的新的信息序列长度为(65536+80)位,即新的信息序列长度小于2*65535。
本发明实施例,步骤904后,当新的信息序列的长度大于2*65535,则执行步骤902,直到新的信息序列长度小于2*65535。
上述实施例中,数据段根据Q1(x)每次需要向左移0位,但是每一次经过步骤902-904操作,数据序列减少了65535位的长度。因此相对于现有技术,大大减少了移位操作数据。所以当步骤904得到的新的信息序列长度为65615位时,则不能再进行步骤902-904的操作。当步骤904得到的新的信息序列长度为65615位时,根据Q2(x)执行图6所示实施例的步骤602-606或图8所示实施例的步骤802-807。
在图9所示的实施例中,使用了多个倍式,可以有效减少较长的信息序列在计算CRC编码时移位操作次数和异或计算量,因此节省了计算资源,提高了计算CRC编码的效率和性能。
本发明实施例,为减少数据处理时延,可以使用中央处理器(Central ProcessingUnit,CPU)计算CRC校验码,例如使用不同规格的CPU的寄存器大小不同,例如有64位寄存器,128位寄存器、256位寄存器、512位寄存器。在确定Q(x)时可以考虑CPU的寄存器的大小,以充分利用CPU的硬件资源。例如,在支持流式单指令多数据扩展指令集(Streaming Single Instruction Single Instruction Multiple DataExtensions,SSE)的CPU中,寄存器大小为128位,因此,可以使用Q(x)=x^384+x^46+x^15,这样可以将信息序列按照384位大小划分成数据段,那么需要3个128位寄存器,可以充分利用CPU硬件资源。
上述各实施例应用于存储系统,存储系统计算数据的CRC编码,存储数据和数据的CRC编码,保证数据存储的准确性和一致性。存储系统在读取数据时,同时读取数据的CRC编码,存储系统计算读取到的数据的CRC编码,比较读取的数据的CRC编码与读取的数据计算得到的CRC编码是否相同。如果相同,则表明数据在存储过程中没有发生错误;如果不相同,则表明数据在存储过程中发生错误。
本发明实施例提供的技术方案,还可以用于数据链接层的CRC校验。在通信系统中,网络层协议的数据单元是互联网协议(Internet Protocol,IP)数据包,而数据链路层的工作就是把网络层交下来的IP数据包封装为帧(frame)发送到链路上,以及把接收到的帧中的数据包取出并上交给网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:
将数据包封装为帧,帧是数据链路层的传送单位;
控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配;
在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
数据链接层在控制帧的传输需要具有如下功能:
差错控制:
通信系统必须具备发现差错的能力,并采取措施纠正之,使差错控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。
反馈重发:
接收方通过对CRC编码的检查,可以判定一帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这就要求接受方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方据此做出是否需要重新发送的决定。发送方仅当收到接收方已正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。其中,接收方,即接收设备接收帧,获取帧中的数据和CRC编码,接收设备使用与发送设备相同的方式计算数据的CRC编码,比较接收设备计算得到的CRC编码与帧中的CRC编码是否相同,如果相同,则证明帧在传输过程中没有发生差错,否则则发生了差错。
因此,本发明实施例还可以应用于交换机、物理网卡中执行的CRC编码的操作。本发明实施例还可以应用于FPGA芯片、处理器或者专用集成电路(Application-specific integrated circuit,ASIC)等计算CRC编码。物理网卡、FPGA芯片、ARM或者ASIC等可以应用于服务器、用户终端、车载设备、无线基站、路由器、交换机、网关等设备。具体实现中,可以根据CRC编码的长度,如16位的CRC编码,生成本源多项式G(x)和一个或多个本源多项式的倍式Q(x),为方便计算CRC编码,G(x)和Q(x)可以预置在芯片或设备中,在本发明实施例的各种设备计算CRC编码时查询或调用G(x)和Q(x)。G(x)和Q(x)可以以二进制、十六进制等形式呈现,本发明实施对此不作限定。
本发明实施例提供存储设备、服务器、用户终端、车载设备、无线基站、路由器、交换机、网关等设备包括接口和处理器,处理器用于执行本发明实施例各方案,或者由上述设备的接口卡执行本发明实施例各方案。另一种实现方式,上述设备包括各种单元,如图11所示,包括获取单元111、移位单元112和处理单元113。其中,获取单元111,用于获取第一数据;移位单元112,用于将所述第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;处理单元113,用于基于一个或多个第一本源多项式处理所述第二数据得到第三数据,基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码;其中,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;所述第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。进一步的,处理单元113,具体用于执行如下步骤:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
进一步的,处理单元113,具体用于执行如下步骤:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到的所述第二数据的长度小于2*X位,其中“*”表示乘。
进一步的,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数,处理单元113,具体用于执行如下步骤:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。
进一步的,处理单元113,具体用于执行以下步骤:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
进一步的,所述处理单元113,具体用于执行以下步骤:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
进一步的,处理单元113具体用于执行以下步骤:
步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低K位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
进一步的,处理单元113,具体用于:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
进一步的,还包括存储单元,用于存储所述第一数据和所述N位CRC编码。
进一步的,还包括发送单元,用于发送所述第一数据和所述N位CRC编码。
进一步的,存储单元,还用于存储本源多项式和倍式。上述各单元分别用于执行本发明实施例各方案对应的实现,各种单元具体实现可以是本发明实施例的设备结构,也可以为软件模块,可以运行在服务器上,从而使设备完成本发明实施例中描述的各种实现。各种单元也可以为硬件设备,例如各单元可以处理器或接口实现。上述设备包括各种单元实现可以参考前面方法实施例描述,在此不再赘述。
本发明实施例还提供了一种芯片,如图11所示,包含:获取单元111、移位单元112和处理单元113。进一步的,上述芯片还可以包含存储单元114,用于存储本源多项式和倍式。上述各单元分别用于执行本发明实施例各方案对应的实现,图11所示的各单元可以为芯片的硬件逻辑模块、ASCI或网卡等。
本申请的又一方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述各实施例。
本申请的又一方面提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述各实施例。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的计算机可读取存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (48)

1.一种计算循环冗余校验CRC编码的方法,其特征在于,所述方法包括:
获取第一数据;
将所述第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;
基于一个或多个第一本源多项式处理所述第二数据得到第三数据;其中所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;所述第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;
基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码;其中,
所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。
2.根据权利要求1所述的方法,其特征在于,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的项数小于所述第二本源多项式有效的项数。
3.根据权利要求1或2所述的方法,其特征在于,所述第一本源多项式为所述第二本源多项式的倍式中有效的项数最少的倍式。
4.根据权利要求1-3任一所述的方法,其特征在于,所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
5.根据权利要求1-3任一所述的方法,其特征在于,所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
6.根据权利要求1-3任一所述的方法,其特征在于,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数;所述基于一个或多个第一本源多项式处理所述第二数据得到第三数据,包括:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。
7.根据权利要求6所述的方法,其特征在于,将所述第二数据基于Q1(x)进行处理得到第四数据,包括:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
8.根据权利要求7所述的方法,其特征在于,将所述第四数据基于Q2(x)进行处理得到所述第三数据,包括:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
9.根据权利要求7所述的方法,其特征在于,将所述第四数据基于Q2(x)进行处理得到所述第三数据,包括:
步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低K位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
10.根据权利要求1-9任一所述的方法,其特征在于,所述基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码,包括:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
11.根据权利要求1-10任一所述的方法,其特征在于,所述方法还包括:
存储所述第一数据和所述N位CRC编码。
12.根据权利要求1-10任一所述的方法,其特征在于,所述方法还包括:
发送所述第一数据和所述N位CRC编码。
13.一种计算循环冗余校验CRC编码的装置,其特征在于,包括:
获取单元,用于获取第一数据;
移位单元,用于将所述第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;
处理单元,用于基于一个或多个第一本源多项式处理所述第二数据得到第三数据,基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码;其中,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;所述第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。
14.根据权利要求13所述的装置,其特征在于,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的项数小于所述第二本源多项式有效的项数。
15.根据权利要求13或14所述的装置,其特征在于,所述第一本源多项式为所述第二本源多项式的倍式中有效的项数最少的倍式。
16.根据权利要求11-15任一所述的装置,其特征在于,所述处理单元,具体用于执行如下步骤:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
17.根据权利要求11-15任一所述的装置,其特征在于,所述处理单元,具体用于执行以下步骤:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到的所述第二数据的长度小于2*X位,其中“*”表示乘。
18.根据权利要求11-15任一所述的装置,其特征在于,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数;所述处理单元,具体用于执行以下步骤:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。
19.根据权利要求18所述的装置,其特征在于,所述处理装置具体用于执行以下步骤:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
20.根据权利要求18所述的装置,其特征在于,所述处理单元,具体用于执行以下步骤:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
21.根据权利要求18所述的装置,其特征在于,所述处理单元具体用于执行以下步骤:
步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低K位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
22.根据权利要求13-21任一所述的装置,其特征在于,所述处理单元,具体用于:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
23.根据权利要求13-22任一所述的装置,其特征在于,还包括存储单元,用于存储所述第一数据和所述N位CRC编码。
24.根据权利要求13-22任一所述的装置,其特征在于,还包括发送单元,用于发送所述第一数据和所述N位CRC编码。
25.一种计算循环冗余校验CRC编码的装置,其特征在于,所述装置包括接口和处理器,所述处理器用于:
获取第一数据;
将所述第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;
基于一个或多个第一本源多项式处理所述第二数据得到第三数据;
基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码;其中,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;所述第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。
26.根据权利要求25所述的装置,其特征在于,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的项数小于所述第二本源多项式有效的项数。
27.根据权利要求25或26所述的装置,其特征在于,所述第一本源多项式为所述第二本源多项式的倍式中有效的项数最少的倍式。
28.根据权利要求25-27任一所述的装置,其特征在于,所述处理器具体用于:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
29.根据权利要求25-27任一所述的装置,其特征在于,所述处理器具体用于:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
30.根据权利要求25-27任一所述的装置,其特征在于,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数;所述处理器具体用于:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。
31.根据权利要求30所述的装置,其特征在于,所述处理器具体用于:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
32.根据权利要求30所述的装置,其特征在于,所述处理器具体用于:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
33.根据权利要求30所述的装置,其特征在于,所述处理器具体用于:步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低K位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
34.根据权利要求25-33任一所述的装置,其特征在于,所述处理器具体用于:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
35.根据权利要求25-34任一所述的装置,其特征在于,所述处理器还用于:
存储所述第一数据和所述N位CRC编码。
36.根据权利要求25-34任一所述的装置,其特征在于,所述处理器还用于:
发送所述第一数据和所述N位CRC编码。
37.一种计算机程序产品,其特征在于,所述计算机程序产品包含计算机指令,处理器执行所述计算机指令用于:
获取第一数据;
将所述第一数据左移N位得到第二数据,其中N为循环冗余校验CRC编码位数;
基于一个或多个第一本源多项式处理所述第二数据得到第三数据;
基于第二本源多项式处理所述第三数据得到所述第一数据的N位CRC编码;其中,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X与有效的次最高项的指数Y之差大于1;所述第三数据的长度小于所述第二数据的长度;X与Y为正整数,X大于Y;所述一个或多个第一本源多项式中的每一个是所述第二本源多项式的倍式,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的最高项的指数X大于所述第二本源多项式的有效的最高项的指数R。
38.根据权利要求37所述的计算机程序产品,其特征在于,所述一个或多个第一本源多项式中的每一个第一本源多项式有效的项数小于所述第二本源多项式有效的项数。
39.根据权利要求37或38所述的计算机程序产品,其特征在于,所述第一本源多项式为所述第二本源多项式的倍式中有效的项数最少的倍式。
40.根据权利要求37-39任一所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
41.根据权利要求37-39任一所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
步骤1:将所述第二数据从最高位开始以X位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述第一本源多项式进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;其中,所述第三数据段的长度为M位;
步骤3:将所述第三数据段的低X位与第二数据段进行异或操作得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以X位大小划分得到的第二个数据段;
步骤4:将所述第三数据段的高(M-X)位基于所述Q(x)进行移位操作得到第五数据段;
步骤5:将所述第四数据段与所述第五数据段进行异或得到第六数据段;
步骤6:将所述第六数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至6,直到所述第二数据的长度小于2*X位,其中“*”表示乘。
42.根据权利要求37-39任一所述的计算机程序产品,其特征在于,所述一个或多个第一本源多项式包括第一本源多项式Q1(x)和Q2(x),其中,Q1(x)有效的最高项的指数大于Q2(x)有效的最高项的指数;所述处理器执行所述计算机程序产品具体用于:
将所述第二数据基于Q1(x)进行处理得到第四数据;
将所述第四数据基于Q2(x)进行处理得到所述第三数据。
43.根据权利要求42所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
步骤1:将所述第二数据从最高位开始以Q1(x)有效的最高项的指数位大小划分数据段;
步骤2:将所述第二数据的第一数据段基于所述Q1(x)进行移位操作,将移位操作得到的数据段进行异或得到第三数据段;所述第一数据段为所述步骤1中的从所述第二数据最高位开始得到的第一个数据段;
步骤3:将所述第三数据段与第二数据段进行异或得到第四数据段;所述第二数据段为步骤1中从所述最高位开始以Q1(x)有效的最高项的指数位大小划分得到的第二个数据段;
步骤4:将所述第四数据段取代步骤1中的所述第二数据的所述第一数据段和所述第二数据段从而构成所述第二数据,执行步骤1至4,直到所述第二数据的长度小于Q1(x)有效的最高项的指数位2倍的长度。
44.根据权利要求42所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
步骤21:将所述第四数据从最高位开始以Q2(x)有效的最高项的指数位大小划分数据段;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段与所述第四数据的第二数据段进行异或操作得到第六数据段;所述第四数据的所述第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;
步骤24:将所述第六数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤21至24,直到所述第四数据的长度小于Q2(x)有效的最高项的指数位2倍的长度。
45.根据权利要求42所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
步骤21:将所述第四数据从最高位开始以K位大小划分数据段;其中K表示Q2(x)有效的最高项的指数;
步骤22:将所述第四数据的第一数据段基于所述Q2(x)进行移位操作,将移位操作得到的数据段进行异或得到第五数据段;所述第四数据的第一数据段为所述步骤21中的从所述第四数据最高位开始得到的第一个数据段;
步骤23:将所述第五数据段的低R位与所述第四数据的第二数据段进行异或得到第六数据段;所述第四数据的第二数据段为步骤21中从所述第四数据的最高位开始划分得到的第二个数据段;所述第五数据段的长度为M位;
步骤24:将所述第五数据段的高(M-K)位基于所述Q(2x)进行移位操作得到第七数据段;
步骤25:将所述第六数据段与所述第七数据段进行异或得到第八数据段;
步骤26:将所述第八数据段取代步骤21中的所述第四数据的第一数据段和第二数据段从而构成所述第四数据,执行步骤22至26,直到所述第四数据段的长度小于2*K,其中“*”表示乘。
46.根据权利要求37-45任一所述的计算机程序产品,其特征在于,所述处理器执行所述计算机程序产品具体用于:
将所述第三数据除以所述第二本源多项式得到N位余数作为所述第一数据的N位CRC编码。
47.根据权利要求37-46任一所述的计算机程序产品,其特征在于,所述处理器执行所述计算机指令还用于:
存储所述第一数据和所述N位CRC编码。
48.根据权利要求37-46任一所述的计算机程序产品,其特征在于,所述处理器执行所述计算机指令还用于:
发送所述第一数据和所述N位CRC编码。
CN201810433230.5A 2018-05-08 2018-05-08 计算循环冗余校验crc编码的方法及装置 Active CN108574490B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810433230.5A CN108574490B (zh) 2018-05-08 2018-05-08 计算循环冗余校验crc编码的方法及装置
PCT/CN2018/125871 WO2019214265A1 (zh) 2018-05-08 2018-12-29 计算循环冗余校验crc编码的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810433230.5A CN108574490B (zh) 2018-05-08 2018-05-08 计算循环冗余校验crc编码的方法及装置

Publications (2)

Publication Number Publication Date
CN108574490A true CN108574490A (zh) 2018-09-25
CN108574490B CN108574490B (zh) 2022-05-10

Family

ID=63571968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810433230.5A Active CN108574490B (zh) 2018-05-08 2018-05-08 计算循环冗余校验crc编码的方法及装置

Country Status (2)

Country Link
CN (1) CN108574490B (zh)
WO (1) WO2019214265A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019214265A1 (zh) * 2018-05-08 2019-11-14 华为技术有限公司 计算循环冗余校验crc编码的方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115086684B (zh) * 2022-08-22 2022-11-18 中科金勃信(山东)科技有限公司 一种基于crc的图像压缩方法、系统及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5384786A (en) * 1991-04-02 1995-01-24 Cirrus Logic, Inc. Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords
EP0840462B1 (en) * 1996-10-29 2004-12-15 International Business Machines Corporation A method and apparatus for a two-step calculation of CRC-32
CN1633030A (zh) * 2003-12-22 2005-06-29 普天信息技术研究院 一种循环冗余校验的快速计算方法
CN101902228A (zh) * 2009-05-25 2010-12-01 中兴通讯股份有限公司 快速循环冗余校验编码方法及装置
CN102739258A (zh) * 2011-04-14 2012-10-17 普天信息技术研究院有限公司 一种计算循环冗余校验码的方法及装置
WO2014204373A1 (en) * 2013-06-20 2014-12-24 Telefonaktiebolaget L M Ericsson (Publ) Access control in a network
CN105790773A (zh) * 2016-04-08 2016-07-20 暨南大学 一种新型的万兆以太网并行crc编译码方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234097B1 (en) * 2003-01-27 2007-06-19 Marvell International Ltd. Methods of supporting host CRC in data storage systems without RLL coding
US20150339183A1 (en) * 2014-05-21 2015-11-26 Kabushiki Kaisha Toshiba Controller, storage device, and control method
CN107239362B (zh) * 2017-02-20 2020-06-05 中国科学院微电子研究所 一种并行crc校验码的计算方法及系统
CN108234081B (zh) * 2017-09-08 2019-02-12 华为技术有限公司 编码方法及装置
CN108574490B (zh) * 2018-05-08 2022-05-10 华为技术有限公司 计算循环冗余校验crc编码的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5384786A (en) * 1991-04-02 1995-01-24 Cirrus Logic, Inc. Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords
EP0840462B1 (en) * 1996-10-29 2004-12-15 International Business Machines Corporation A method and apparatus for a two-step calculation of CRC-32
CN1633030A (zh) * 2003-12-22 2005-06-29 普天信息技术研究院 一种循环冗余校验的快速计算方法
CN101902228A (zh) * 2009-05-25 2010-12-01 中兴通讯股份有限公司 快速循环冗余校验编码方法及装置
CN102739258A (zh) * 2011-04-14 2012-10-17 普天信息技术研究院有限公司 一种计算循环冗余校验码的方法及装置
WO2014204373A1 (en) * 2013-06-20 2014-12-24 Telefonaktiebolaget L M Ericsson (Publ) Access control in a network
CN105790773A (zh) * 2016-04-08 2016-07-20 暨南大学 一种新型的万兆以太网并行crc编译码方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
C. E. KENNEDY: "《Generalized Parallel CRC Computation on FPGA》", 《015 IEEE 28TH CANADIAN CONFERENCE ON ELECTRICAL AND COMPUTER ENGINEERING (CCECE)》 *
C. KENNEDY: "《Retimed two-step CRC computation on FPGA》", 《CCECE 2010》 *
DIPANWITA GANGOPADHYAY: "《Multiple-Bit Parity-Based Concurrent Fault Detection Architecture for Parallel CRC Computation》", 《IEEE TRANSACTIONS ON COMPUTERS》 *
R. J. GLAISE: "《two-step computation of cyclic redundancy code CRC-32 for ATM networks》", 《IBM JOURNAL OF RESEARCH 》 *
朱磊: "《通信网络的可靠数据传输控制策略研究与实现》", 《万方数据知识服务平台》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019214265A1 (zh) * 2018-05-08 2019-11-14 华为技术有限公司 计算循环冗余校验crc编码的方法及装置

Also Published As

Publication number Publication date
WO2019214265A1 (zh) 2019-11-14
CN108574490B (zh) 2022-05-10

Similar Documents

Publication Publication Date Title
JP6584036B2 (ja) 署名対応Polarエンコーダ及びデコーダ
CN105991227B (zh) 数据编码方法及装置
JP2012249305A (ja) さまざまな符号クラスの符号化および復号化への応用を有するインプレース変換
JPWO2003090362A1 (ja) 誤り検出符号化及び復号装置並びに除算装置
JP2006244259A (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
CN110999095B (zh) 用于极化码的按块并行冻结位生成
CN113541856A (zh) 数据恢复方法及装置
CN101795175B (zh) 数据的校验处理方法及装置
CN113110954A (zh) 一种crc码并行计算方法、装置及其应用
CN112306741A (zh) 一种crc校验方法及相关装置
CN108574490B (zh) 计算循环冗余校验crc编码的方法及装置
US11075715B2 (en) Encoding method and apparatus
CN101296053A (zh) 计算循环冗余校验码之方法及系统
CN108270508B (zh) 一种循环冗余校验crc实现方法、装置及网络设备
US20170222752A1 (en) Decoding device, information transmission system, decoding method, and non-transitory computer readable medium
US7266760B1 (en) Method and apparatus for calculating cyclic redundancy checks for variable length packets
CN116861493B (zh) 一种校验码生成方法、处理器及电子设备
JP2010509891A (ja) 通信ネットワークにおいてデータを符号化するための方法および装置
US11804855B2 (en) Pipelined forward error correction for vector signaling code channel
WO2019214266A1 (zh) 计算crc编码的方法和装置
WO2012109872A1 (zh) 通信系统中的循环冗余校验处理方法、装置和lte终端
CN115858230A (zh) 最大距离可分离码的构造、修复方法及相关装置
KR101619049B1 (ko) 병렬 bch 디코더
CN114342265A (zh) 使用存储在查找表lut中的生成器矩阵的部分并行循环冗余校验crc计算
CN110603759B (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
CB03 Change of inventor or designer information

Inventor after: Lin Xianzheng

Inventor after: Zhang Jinyi

Inventor after: Wang Gongyi

Inventor after: Shen Jianqiang

Inventor before: Zhang Jinyi

Inventor before: Wang Gongyi

Inventor before: Shen Jianqiang

Inventor before: Lin Xianzheng

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant