一种获得CRC码的方法及装置与流程

文档序号:21541350发布日期:2020-07-17 17:43阅读:146来源:国知局
一种获得CRC码的方法及装置与流程

本申请涉及通信技术领域,尤其涉及一种获得crc码的方法及装置。



背景技术:

循环冗余校验(cyclicredundancycheck,crc)是一种常用的数据校验方法。crc校验的基本思想是利用线性码原理,源端对需要进行传输的待处理数据按照一定的规则处理,获得crc码,并将crc码附加在待处理数据后面,形成包括crc码的待处理数据,最后将该包括crc码的待处理数据发送给宿端。宿端收到包括crc码的待处理数据后,可以根据crc码校验待处理数据在传送过程中是否发生错误。现有计算crc码的方式包括查表法。

查表法的思路是:提前将各种可能的数据对应的crc余式存储在余式表中。先将待处理数据的高m比特(bit)存入寄存器,从余式表中获得对应的crc余式(m表示并行处理的目标比特数量),将寄存器中的高m个bit移出更新为低m个bit,crc余式和更新后的寄存器进行异或,异或结果存入寄存器的高mbit,依次类推,一直到待处理数据处理完成,从而获得待处理数据的crc码。

查表法可以相对快速地获得待处理数据对应的crc码,但是如果需要计算k个bit的待处理数据的crc码,需要将k位二进制序列数从0~2m-1的crc余式全部计算出来,则对应需要存储2m个余式表。如果m取值较大时,则需要存储的余式表较多,占用的内存空间较大。



技术实现要素:

本申请提供一种获得crc码的方法及装置,用于减少并行计算多比特数据的crc码过程中占用的内存空间。

第一方面,提供一种获得循环冗余校验crc码的方法,应用于获得crc的装置中,所述获得crc的装置包括crc寄存器,所述方法包括:

按照目标比特数量,将待处理数据依次分成n个数据切片;其中,所述n个数据切片中的每个数据切片的比特数量与所述目标比特数量均为m,n为正整数;

将第i数据切片与所述crc寄存器中的当前值进行异或运算,得到第i异或运算结果,所述n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

对所述第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,所述第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指所述每个子切片中补0之前的比特数量,h大于或等于2;

根据预存的余式表,获得所述第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得所述第i异或运算结果的h个crc余式;

若n为1,则根据所述第i异或运算结果的h个子切片进行异或运算,获得所述待处理数据的crc码;

若n大于1,则根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码。

在上述方案中,将第一异或运算结果进行再划分,每个子切片的有效净荷比特数量均比第一异或运算结果的比特数量少,从而在对每个子切片进行查表时,只需存储每个子切片的有效净荷比特数据对应的余式表,即只需要存2^(m/h)个余式表,相对于现有技术中,直接存储目标比特对应的余式表,即需要存2^m个余式表,因此,上述方案能相对减少了余式表的个数,从而减少了余式表所占用的存储空间,也就减少并行计算多比特数据的crc码过程中占用的内存空间。且,本申请实施例在减少存储的余式表的个数的同时,实现了并行处理目标比特,也就是说,在减少并行计算多比特数据的crc码过程中占用的内存空间的同时,还保证了计算crc码的效率。

在一种可能的设计中,根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码,包括:

将所述crc寄存器中的当前值更新为所述第i异或运算结果;

对所述第i异或运算结果的h个crc余式,以及所述第i+1数据切片进行异或运算,获得第i+1异或运算结果,所述第i+1数据切片为位于所述n个数据切片中的第i+1个数据切片;

将i依次从1取到n-1,当i取到n-1时,则所述第i+1个异或运算结果为所述待处理数据的crc码。

在上述方案中,当待处理数据的比特数量较多时,对待处理数据中的数据切片依次进行处理,也就是说,即使待处理数据的比特数量较多,也能实现计算待处理数据的crc码。且,在上述方案中,即使待处理数据的比特数据量较多,异或运算的次数较少,计算crc码的复杂程度低。

在一种可能的设计中,根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码,包括:

将所述crc寄存器中的当前值更新为所述第i异或运算结果;

对所述第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,得到第i+2异或运算结果,并同时根据所述余式表,获得第i+1异或运算结果的h个子切片的h个crc余式;其中,所述第i+1异或运算结果的h个子切片满足所述第一条件,所述第i+1异或运算结果为所述第i+1数据切片与所述crc寄存器中的当前值的异或运算的结果,所述n个数据切片包括所述第i+2数据切片和所述第i+1数据切片;

将i依次从1取到n-2,当i取到n-2时,则对所述第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得所述待处理数据的crc码。

在上述方案中,在进行异或运算的同时,就对某些数据切片进行查表,从进一步提高了计算待处理数据的crc码的效率。

在一种可能的设计中,对所述第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片,包括:

将所述第i异或运算结果划分为h个有效净荷子切片,所述h个有效净荷子切片中每个有效净荷子切片的比特数量均相同;

将所述每个有效净荷子切片中的有效净荷数据移位到高位,并将所述每个有效净荷子切片的低位补0,从而获得所述第i异或运算结果的h个子切片。

在上述方案中,对h个子切片进行补0操作,保持了h个子切片中的有效净荷数据的比特位,方便后期获得待处理数据的crc码。

在一种可能的设计中,按照目标比特数量,将待处理数据依次分成n个数据切片,包括:

确定所述待处理数据的比特数量能否被所述目标比特数量整除;

若所述待处理数据的比特数量不能被所述目标比特数量整除,则对所述待处理数据进行移位补0操作;

将移位补0操作后的所述待处理数据划分为比特数量均为m的n个数据切片。

在上述方案中,由于待处理数据的比特数量可能并不能被目标比特数量整除,对待处理数据进行补0操作,使得补0之后的待处理数据的比特数量能够被目标比特数量整除,从而便于后期对待处理数据进行划分。

第二方面,提供一种获得循环冗余校验crc码的装置,包括:

存储器,用于存储计算机指令;

处理器,包括crc寄存器,处理器与存储器通信连接,用于执行存储器中的计算机指令,以在执行计算机指令时执行如下操作:

按照目标比特数量,将待处理数据依次分成n个数据切片;其中,n个数据切片中的每个数据切片的比特数量与目标比特数量均为m,n为正整数;

将第i数据切片与crc寄存器中的当前值进行异或运算,得到第i异或运算结果,n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

对第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指每个子切片中补0之前的比特数量,h大于或等于2;

根据预存的余式表,获得第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得第i异或运算结果的h个crc余式;

若n为1,则根据第i异或运算结果的h个子切片进行异或运算,获得待处理数据的crc码;

若n大于1,则根据第i异或运算结果的h个crc余式,以及n个数据切片中除了第i数据切片之外的数据切片,获得待处理数据的crc码。

在一种可能的设计中,所述处理器具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式,以及第i+1数据切片进行异或运算,获得第i+1异或运算结果,n个数据切片包括第i+1个数据切片;

将i依次从1取到n-1,当i取到n-1时,则第i+1个异或运算结果为待处理数据的crc码。

在一种可能的设计中,所述处理器具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,得到第i+2异或运算结果,并同时根据余式表,获得第i+1异或运算结果的h个子切片的h个crc余式;其中,第i+1异或运算结果的h个子切片满足第一条件,第i+1异或运算结果为第i+1数据切片与crc寄存器中的当前值的异或运算的结果,n个数据切片包括第i+2数据切片和第i+1数据切片;

将i依次从1取到n-2,当i取到n-2时,则对第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得待处理数据的crc码。

在一种可能的设计中,所述处理器具体用于:

将第i异或运算结果划分为h个有效净荷子切片,h个有效净荷子切片中每个有效净荷子切片的比特数量均相同;

将每个有效净荷子切片中的有效净荷数据移位到高位,并将每个有效净荷子切片的低位补0,从而获得第i异或运算结果的h个子切片。

在一种可能的设计中,所述处理器具体用于:

确定待处理数据的比特数量能否被目标比特数量整除;

若待处理数据的比特数量不能被目标比特数量整除,则对待处理数据进行移位补0操作;

将移位补0操作后的待处理数据划分为比特数量均为m的n个数据切片。

第三方面,提供一种获得循环冗余校验crc码的装置,包括:

收发模块,用于接收待处理数据;

处理模块,用于按照目标比特数量,将待处理数据依次分成n个数据切片;其中,所述n个数据切片中的每个数据切片的比特数量与所述目标比特数量均为m,n为正整数;

所述处理模块,还用于将第i数据切片与所述crc寄存器中的当前值进行异或运算,得到第i异或运算结果,所述n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

所述处理模块,还用于对所述第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,所述第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指所述每个子切片中补0之前的比特数量,h大于或等于2;

所述处理模块,还用于获得所述第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得所述第i异或运算结果的h个crc余式;

所述处理模块,还用于若n为1,则根据所述第i异或运算结果的h个子切片进行异或运算,获得所述待处理数据的crc码;

所述处理模块,还用于若n大于1,则根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面中任一项所述的方法。

附图说明

图1为现有技术中的并行计算待处理数据的crc码的过程示意图;

图2为本申请实施例提供的一种获得crc码的方法的流程图;

图3为本申请实施例提供的一种划分数据的示意图;

图4为本申请实施例提供的一种获得crc码的过程示意图;

图5为本申请实施例提供的一种获得crc码的过程示意图;

图6为本申请实施例提供的一种获得crc码的装置的结构图;

图7为本申请实施例提供的一种获得crc码的装置的结构图。

具体实施方式

为了更好的理解本申请实施例提供的技术方案,下面将结合说明书附图以及具体的实施方式进行详细的说明。

为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及到的专业名词进行介绍。

1)循环冗余校验(cyclicredundancycheck,crc),crc的主要思路是根据生成多项式(generatorpolynomial),获得待处理数据的crc码。待处理数据可以是二进制序列(binarysequence),二进制序列可以是报文。crc应用于数据传输过程中,包括但不限于移动通信系统、光通信系统、网络通信系统等。

2)余式表,提前将各种可能的数据对应的crc余式存储在余式表中。k个bit的待处理数据的crc码,需要将k位二进制序列数从0~2m-1的crc余式全部计算出来,则对应需要存储2m个余式表。以并行处理的目标比特数量为4为例,4bit的余式表如下:

crc_tab4=[00000000;...%0000

10011011;...%0001

10101101;...%0010

00110110;...%0011

11000001;...%0100

01011010;...%0101

01101100;...%0110

11110111;...%0111

00011001;...%1000

10000010;...%1001

10110100;...%1010

00101111;...%1011

11011000;...%1100

01000011;...%1101

01110101;...%1110

11101110];...%1111]

3)寄存器,寄存器是处理器的组成部分。寄存器是有限存贮容量的高速存贮部件,可用来暂存指令、数据和地址等。

下面对crc的基本原理进行简要说明。

crc校验的基本思想是利用线性码原理,对需要进行传输的待处理数据(以k位二进制数为例)按照一定的规则处理,产生一个r位的校验码并附加在待处理数据后面,形成一个k+r位的二进制数据,最后一起发送。假设crc生成多项式为g(x),待处理数据为t(x)=tk-1xk-1+tk-2xk-2+…+t0x0,对应的crc码的计算公式如下:

上式中的b(x)则为crc码。

下面对现有技术中利用查表法并行计算待处理数据的crc码的过程进行说明。

请参照图1,先将待处理数据中的高m个bit存入寄存器,从余式表中获得对应的crc余式,再将寄存器中的高m个bit移除,更新为待处理数据中的低m个bit,crc余式和更新后的寄存器中的低m个bit进行异或,将异或结果存为寄存器中的高m个bit,一直到待处理数据完成,从而获得待处理数据的crc码。

但是现有查表法在计算crc的过程中,需要存储2^m个对应的余式表,当并行处理的目标比特数量m比较大时,则对应的余式表会占用较多的内存。

例如,需要并行处理32比特时,则需要存储2^32个对应的余式表,占用的内存较大。

鉴于此,本申请实施例提供一种获得crc码的方法,该方法可以由获得crc码的装置来执行。获得crc码的装置可以通过现场可编程门阵列(fieldprogrammablegatearray,fpga)实现,也可以通过专用集成电路(applicationspecificintegratedcircuit,asic)实现,也可以通过一个或多个微处理器(digitalsignalprocessor,dsp)实现。获得crc码的装置例如,发送器、以太网设备或系统芯片等。该获得crc码的装置包括crc寄存器,crc寄存器用于存储计算crc码过程中的数据。

下面对本申请实施例中的获得crc码方法的过程进行介绍。请参照图2,该方法包括:

步骤201,按照目标比特数量,将待处理数据依次分成n个数据切片;其中,所述n个数据切片中的每个数据切片的比特数量与所述目标比特数量均为m,n为正整数;

步骤202,将第i数据切片与所述crc寄存器中的当前值进行异或运算,得到第i异或运算结果,所述n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

步骤203,对所述第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,所述第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指所述每个子切片中补0之前的比特数量,h大于或等于2;

步骤204,根据预存的余式表,获得所述第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得所述第i异或运算结果的h个crc余式;

步骤205,若n为1,则根据所述第i异或运算结果的h个子切片进行异或运算,获得所述待处理数据的crc码,若n大于1,则根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码。

获得crc码的装置先接收到待处理数据。该待处理数据可以是源端中准备发送的数据。源端是指通信系统中的具有传输数据功能的设备,源端例如终端设备、基站等。获得crc码的装置可以是源端的一部分。待处理数据可以是二进制序列,例如101100000000111110010111010110011。

在源端将待处理数据发送到获得crc码的装置之后,由于获得crc码的装置并行处理的目标比特数量一般是固定的,目标比特数量可以理解为获得crc码的装置能够同时处理的比特数量,例如32bit,64bit。因此,当待处理数据的比特数量超过目标比特数量时,则需要先对待处理数据进行切分处理。获得crc码的装置先执行步骤201,即按照目标比特数量,将待处理数据分成n个数据切片。下面执行步骤201的方式进行示例说明。

一种按照目标比特数量m,将待处理数据分成n个数据切片的方式为:

确定待处理数据的比特数量能否被目标比特数量整除;

若待处理数据的比特数量不能被目标比特数量整除,则对待处理数据进行移位补0操作;

将移位补0操作后的待处理数据划分为比特数量均为m的n个数据切片。

具体来说,获得crc码的装置先判断待处理数据的比特数量能够被目标比特数量整除。如果待处理数据的比特数量能够被目标比特数量整除,则直接将待处理数据按照目标比特数据m进行等比划分,从而获得n个数据切片。如果待处理数据的比特数量不能被目标比特数量整除,则对待处理数据进行移位补0操作,再将移位补0之后的待处理数据,按照目标比特数据m进行等比划分,从而获得n个数据切片。补0的个数可以是(目标比特数量-待处理数据的比特数量%目标比特数量)个。%表示相除之后的余数。

例如,待处理数据为k个比特数量,如果k能被m整除,则n=k/m。例如,待处理数据为32bit,目标比特数量为32bit,则对应的n为1。如果k不能被m整除,则可以在待处理数据前补充(m-k%m)个0,对应的n=[(m-k%m)+k]/m。例如,待处理数据为66bit,目标比特数量为32bit,则需要在待处理数据前补充30个0,对应n为3。

n个数据切片中,每个数据切片的比特数量均等于目标比特数量。为了便于后续对n个数据切片进行处理,n个数据切片按照待处理数据的顺序依次划分为n个数据切片。

例如,请参照图3,将待处理数据移位补0之后,依次分为第一数据切片、第二数据切片、第三数据切片、第四数据切片等。第一数据切片为待处理数据中的最高m比特,第二数据切片为相对第一数据切片的低m比特,第三数据切片为相对第二数据切片的低m比特,第四数据切片为相对第三数据切片的低m比特。

获得crc码的装置在执行步骤201之后,执行步骤202,即将第i数据切片与所述crc寄存器中的当前值进行异或运算,得到第i异或运算结果。

其中,当前值可以理解为处理第i数据切片时,寄存器此刻存储的值。应当说明的是,crc寄存器中的当前值一般初始值为0,后随着对待处理数据处理过程,会不断地更新crc寄存器中的当前值。

当i取值为1的时候,则crc寄存器中的当前值一般均为0,那么第一数据切片与该寄存器中的当前值进行异或运算的结果实际上与第一数据切片相同。

当i取值为大于1的数的时候,则crc寄存器中的当前值为上次计算结束后的异或运算的结果。然后第i数据切片与该crc寄存器中的当前值进行异或运算,从而得到第i异或运算结果。

获得crc码的装置在执行步骤202之后,执行步骤203,即对第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片。

其中,第一条件是指h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同。m能被h整除。有效净荷比特数量是指每个子切片中补0之前的比特数量。下面对执行步骤203的方式进行示例说明。

一种执行步骤203的方式为:

将第i异或运算结果划分为h个有效净荷子切片;

将每个有效净荷子切片中的有效净荷数据移位到高位,并将每个有效净荷子切片的低位补0,从而获得第i异或运算结果的h个子切片。

具体来说,获得crc码的装置将第i异或运算结果划分为h个有效净荷子切片,每个有效净荷子切片的比特数量为m/h。为了保证第i异或运算结果中的数据比特位,因此,需要对每个有效净荷子切片进行补0,但是每个有效净荷子切片补0的个数不同,对第一个有效净荷子切片补(m-m/h)个0,对第二个有效净荷子切片补(m-2m/h)个0,依次类推,从而获得比特数量按照m/h依次递减的h个子切片。

例如,请继续参照图3,在获得第一数据切片之后,将第一数据切片与crc寄存器中的当前值(这里是以寄存器中的当前值的初始值为0)进行异或运算,然后获得第一异或运算结果,将第一异或运算结果划分为4个有效净荷子切片,再对4个有效净荷子切片进行分别补0,从而获得4个子切片,4个子切片包括第一子切片、第二子切片、第三子切片以及第四子切片。

例如,以第一数据切片为101100000000111110010111010110011例,crc寄存器的初始值为0,则第一异或运算结果为101100000000111110010111010110011,将第一异或运算结果划分为4个有效净荷子切片。4个有效净荷子切片依次为:101100000;00011111;00101110;10110011,对4个有效净荷子切片中的有效净荷数据移位到高位,将每个有效净荷子切片的低位补0,从而获得第一子切片为“101100000000000000000000000000000”,第二子切片为“000111110000000000000000”,第三子切片为“0010111000000000”,第四子切片为“10110011”。

在获得crc码的装置执行步骤203之后,可以执行步骤204,即根据预存的余式表,获得第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得第i异或运算结果的h个crc余式。

具体来说,第i异或运算结果中有h个子切片,根据余式表,获得h个子切片中每个子切片对应的crc余式,从而获得第i异或运算结果的h个crc余式。crc余式可以理解为每个子切片对应的crc码。由于将第i异或运算结果拆分成了h个子切片,因此,余式表就只需要存储2^(m/h)个,相较于现有技术的方式,减少了存储余式表所需要的存储空间。

在执行步骤204之后,获得crc码的装置就执行步骤205,即若n为1,则根据第i异或运算结果的h个子切片进行异或运算,获得待处理数据的crc码;若n大于1,则根据第i异或运算结果的h个crc余式,以及n个数据切片中除了第i数据切片之外的数据切片,获得待处理数据的crc码。

具体来说,待处理数据对应的数据切片的数量不一样,对应根据h个crc余式获得待处理数据的crc码的具体方式有所不同。下面对n取不同值的时候,获得待处理数据的crc码的方式进行详细说明。

当n为1时,i只能取1,也就是说,目标比特数量与待处理数据的比特数量相同,待处理数据只包括一个数据切片。获得待处理数据的crc码的具体方式如下:

对第i异或运算结果的h个crc余式进行异或运算,h个crc余式异或运算的结果就是待处理数据的crc码。

例如,以第i异或运算结果为101100000000111110010111010110011例,将第i异或运算结果划分为4个子切片,第一子切片为“101100000000000000000000000000000”,第二子切片为“000111110000000000000000”,第三子切片为“0010111000000000”,第四子切片为“10110011”。根据余式表从而获得第一子切片对应的crc余式为11110110,第二子切片对应的crc余式为11100110,第三子切片对应的crc余式为10101001,第四子切片对应的crc余式为01101011。对4个crc余式进行异或运算,从而获得待处理数据的crc码为11010010。

当n大于或等于2时,也就是说,待处理数据包括至少两个数据切片,但是crc寄存器的长度不一样,获得待处理数据的crc码的方式又有所区别,下面进行分情况说明。

第一种情况,n大于或等于2,且crc寄存器的长度等于目标比特数量,执行步骤205的具体方式如下:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式,以及第i+1数据切片进行异或运算,获得第i+1异或运算结果;

将i依次从1取到n-1时,当i取到n-1时,则第i+1个异或运算结果为待处理数据的crc码。

具体来说,将crc寄存器中的当前值更新为第i异或运算结果,将待处理数据的第i+1数据切片与第i异或运算结果的h个crc余式进行异或运算。i再依次从1取到n-1,当i取到n-1时,也就是说,直到数据处理完成时,第i+1个异或运算结果即为待处理数据的crc码。

例如,当n取值为2时,也就是说,待处理数据包括第一数据切片和第二数据切片。第一异或运算结果的h个crc余式与第二数据切片进行异或运算,获得第二异或运算结果,则该第二异或运算结果则为待处理数据的crc码。或者例如,当n取值为3时,也就是说,待处理数据包括第一数据切片、第二数据切片、第三数据切片。在获得第二异或运算之后,将第二异或运算结果拆分成满足第一条件的h个子切片。根据余式表,获得第二异或运算结果的h个子切片,再将第二异或运算结果的h个子切片与第三数据切片进行异或运算,得到第三异或运算结果,则该第三异或运算结果则为待处理数据的crc码。将第二异或运算结果切分为满足第一条件的h个子切片,切分过程可以参照前文论述的切分第一数据切片的内容,此处不再赘述。第一条件可以为前文论述的内容,此处不再赘述。

其中,确定i取到n-1的方式有很多种,下面进行示例说明。一种确定i取到n-1的方式为:

获得crc码的装置通过计数确定i是否取到n-1。

具体来说,当获取待处理数据的n个数据切片时,获得crc码的装置就可以开始计数,每当寄存器更新一次,计数加1,一直加到n,则表示i取到n-1,也就表示待处理数据已处理完成。

例如,以目标比特数量m为32bit,寄存器的长度为32bit为例,将待处理数据进行补0操作,再划分为数据切片,再将第一数据切片分为4个子切片。

请参照图4,获得crc码的装置将crc寄存器的当前值更新为第一异或运算结果,通过余式表,获得第一异或运算结果对应的4个子切片的4个crc余式。将第二数据切片与第一异或运算结果进行异或,得到第二异或运算结果,将寄存器中的当前值更新为第二异或运算结果。依次类推,直到待处理数据处理完毕为止,crc寄存器中的当前值就是待处理数据的crc码。

第二种情况,n大于或等于2,且crc寄存器的长度大于目标比特数量,那么执行步骤205的具体方式如下:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,得到第i+2异或运算结果,并同时根据余式表,获得第i+1异或运算结果的h个子切片的h个crc余式;其中,第i+1异或运算结果的h个子切片满足第一条件,第i+1异或运算结果为第i+1数据切片与crc寄存器中的当前值的异或运算的结果,n个数据切片包括第i+2数据切片和第i+1数据切片;

将i依次从1取到n-2,当i取到n-2时,则对第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得待处理数据的crc码。

关于第一条件可以参照前文论述内容,此处不再赘述。

具体来说,当crc寄存器的长度大于目标比特数量,也就是说,crc寄存器中存储的比特数量是大于获得crc码的装置的并行处理的比特数量。因此,获得crc码的装置可以先将第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,并同时对第i+1异或运算结果的h个子切片进行查表,从而可以同时获得第i+2异或运算结果,以及第i+1异或运算结果的h个子切片对应的h个crc余式。

依次类推,直到i取到n-2时,也就是说,直到待处理数据处理完成,对第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得待处理数据的crc码。

应当说明的是,由crc寄存器的长度大于目标并行处理比特数量,因此可以将crc寄存器中的当前值更新为第一异或运算结果的同时,也可以将第二异或运算结果写入crc寄存器中。

本申请实施例中,由于crc寄存器的长度大于目标比特数量时,可以在一个数据切片进行异或运算的同时,另外一个数据切片进行异或运算,从而相对节省获得crc码的装置的处理时间,提高获得crc码的装置的处理效率。

例如,请参照图5,以crc寄存器的长度(64bit)为目标比特数量(32bit)的两倍为例,将待处理数据划分为3个数据切片,先将第一数据切片(第一mbit)与寄存器的初始值(一般为0)进行异或运算,获得第一异或运算结果。根据余式表,查表获得第一异或运算结果的h个crc余式,同时对第二数据切片(第二mbit)与寄存器的初始值(一般全为0)进行异或运算,获得第二异或运算结果。

由crc寄存器的长度大于目标并行处理比特数量,因此可以将crc寄存器中的当前值更新为第一异或运算结果以及第二异或运算结果。

获得crc码的装置可以先将第一异或运算结果的h个crc余式与第三数据切片(第三mbit)进行异或运算,并同时对第二异或运算结果的h个子切片进行查表,从而可以同时获得第三异或运算结果,以及第二异或运算结果的h个子切片对应的h个crc余式。

最后,第三异或运算结果与第二异或运算结果的h个子切片进行异或运算,从而获得待处理数据的crc码。

获得crc码的装置执行步骤205之后,即在获得crc码之后,可以将crc码附加在待处理数据后面,将附有crc码的待处理数据向宿端发送,从而完成数据传输过程。

在前文论述的一种获得crc码的方法的基础上,本申请实施例还提供一种获得crc码的装置,请参照图6,该crc码装置包括存储器601和处理器602。

存储器601,用于存储计算机指令;

处理器602,包括crc寄存器,所述处理器与所述存储器通信连接,用于执行所述存储器中的计算机指令,以在执行所述计算机指令时执行如下操作:

照目标比特数量,将待处理数据依次分成n个数据切片;其中,n个数据切片中的每个数据切片的比特数量与目标比特数量均为m,n为正整数;

将第i数据切片与crc寄存器中的当前值进行异或运算,得到第i异或运算结果,n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

对第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指每个子切片中补0之前的比特数量,h大于或等于2;

根据预存的余式表,获得第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得第i异或运算结果的h个crc余式;

若n为1,则根据第i异或运算结果的h个子切片进行异或运算,获得待处理数据的crc码;

若n大于1,则根据第i异或运算结果的h个crc余式,以及n个数据切片中除了第i数据切片之外的数据切片,获得待处理数据的crc码。

在一种可能的设计中,处理器602具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式,以及第i+1数据切片进行异或运算,获得第i+1异或运算结果,n个数据切片包括第i+1个数据切片;

将i依次从1取到n-1,当i取到n-1时,则第i+1个异或运算结果为待处理数据的crc码。

在一种可能的设计中,处理器602具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,得到第i+2异或运算结果,并同时根据余式表,获得第i+1异或运算结果的h个子切片的h个crc余式;其中,第i+1异或运算结果的h个子切片满足第一条件,第i+1异或运算结果为第i+1数据切片与crc寄存器中的当前值的异或运算的结果,n个数据切片包括第i+2数据切片和第i+1数据切片;

将i依次从1取到n-2,当i取到n-2时,则对第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得待处理数据的crc码。

在一种可能的设计中,处理器602具体用于:

将第i异或运算结果划分为h个有效净荷子切片,h个有效净荷子切片中每个有效净荷子切片的比特数量均相同;

将每个有效净荷子切片中的有效净荷数据移位到高位,并将每个有效净荷子切片的低位补0,从而获得第i异或运算结果的h个子切片。

在一种可能的设计中,处理器602具体用于:

确定待处理数据的比特数量能否被目标比特数量整除;

若待处理数据的比特数量不能被目标比特数量整除,则对待处理数据进行移位补0操作;

将移位补0操作后的待处理数据划分为比特数量均为m的n个数据切片。

图6中是以一个处理器602为例,但是实际上不限制处理器602的个数。作为一种实施例,处理器602包括前文中的论述的crc寄存器。

在前文论述的一种获得crc码的方法的基础上,本申请实施例还提供一种获得crc码的装置,请参照图7,该crc码装置包括收发模块701和处理模块702,其中:

收发模块701,用于接收待处理数据;

处理模块702,用于按照目标比特数量,将待处理数据依次分成n个数据切片;其中,所述n个数据切片中的每个数据切片的比特数量与所述目标比特数量均为m,n为正整数;

处理模块702,还用于将第i数据切片与所述crc寄存器中的当前值进行异或运算,得到第i异或运算结果,所述n个数据切片包括第i数据切片,i为大于或等于1且小于n的正整数;

处理模块702,还用于对所述第i异或运算结果进行划分以及补0操作,获得满足第一条件的h个子切片;其中,m能被h整除,所述第一条件为h个子切片的比特数量依次递减m/h个比特,且h个子切片中所有子切片的有效净荷比特数量均相同,有效净荷比特数量是指所述每个子切片中补0之前的比特数量,h大于或等于2;

处理模块702,还用于获得所述第i异或运算结果的h个子切片中的每个子切片对应的crc余式,从而获得所述第i异或运算结果的h个crc余式;

处理模块702,还用于若n为1,则根据所述第i异或运算结果的h个子切片进行异或运算,获得所述待处理数据的crc码;

所述处理模块,还用于若n大于1,则根据所述第i异或运算结果的h个crc余式,以及所述n个数据切片中除了所述第i数据切片之外的数据切片,获得所述待处理数据的crc码。

在一种可能的设计中,处理模块702具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式,以及第i+1数据切片进行异或运算,获得第i+1异或运算结果,n个数据切片包括第i+1个数据切片;

将i依次从1取到n-1,当i取到n-1时,则第i+1个异或运算结果为待处理数据的crc码。

在一种可能的设计中,处理模块702具体用于:

将crc寄存器中的当前值更新为第i异或运算结果;

对第i异或运算结果的h个crc余式与第i+2数据切片进行异或运算,得到第i+2异或运算结果,并同时根据余式表,获得第i+1异或运算结果的h个子切片的h个crc余式;其中,第i+1异或运算结果的h个子切片满足第一条件,第i+1异或运算结果为第i+1数据切片与crc寄存器中的当前值的异或运算的结果,n个数据切片包括第i+2数据切片和第i+1数据切片;

将i依次从1取到n-2,当i取到n-2时,则对第i+1异或运算结果的h个crc余式和第i+2异或运算结果进行异或运算,获得待处理数据的crc码。在一种可能的设计中,处理模块702具体用于:

将第i异或运算结果划分为h个有效净荷子切片,h个有效净荷子切片中每个有效净荷子切片的比特数量均相同;

将每个有效净荷子切片中的有效净荷数据移位到高位,并将每个有效净荷子切片的低位补0,从而获得第i异或运算结果的h个子切片。

在一种可能的设计中,处理模块702具体用于:

确定待处理数据的比特数量能否被目标比特数量整除;

若待处理数据的比特数量不能被目标比特数量整除,则对待处理数据进行移位补0操作;

将移位补0操作后的待处理数据划分为比特数量均为m的n个数据切片。

作为一种实施例,本申请实施例中的处理模块702可以通过图6中的处理器602来实现。

在前文论述的一种获得crc码的方法的基础上,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如图2所述的方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1