掌桥专利:专业的专利平台
掌桥专利
首页

一种CRC码并行计算方法、装置及其应用

文献发布时间:2023-06-19 11:49:09


一种CRC码并行计算方法、装置及其应用

技术领域

本发明涉及数据处理技术领域,具体涉及一种CRC码并行计算方法、装置及其应用。

背景技术

在数据存储和传输领域,由于干扰等各方面的影响,传输的数据可能会出现错误,为了提高数据传输的可靠性,就需要对数据进行检查或纠错的编码手段。

循环冗余校验(Cyclic Redundancy Check,CRC)由于其纠错能力强,硬件开销小且易于实现的优点,已经被广泛应用于数据通信领域。CRC校验的本质是基于特定的多项式对数据进行一系列的运算,再将计算的结果附加在数据的结尾一起传输,接收方通过相同的算法对数据进行计算,再将得到的结果与收到的CRC结果进行比对,若结果一致则表明传输无误。

传统的CRC校验算法主要分为两种:串行位算法和并行多字节算法:串行位算法实现方式最为简单,但一个时钟周期只能计算一位数据,效率较低,不适合应用于高速率的数据传输;并行多字节算法一个时钟周期可以计算一个或多个字节的数据,但该算法需要在接收完完整的数据后才可以计算,而实际的存储芯片一次能读出的数据量确是有限的,这样就需要消耗额外的寄存器对数据进行暂存。例如存储阵列每次读出64比特数据并且在4个时钟后读出新的数据,为了不额外缓存数据,就需要在这4个时钟内计算出该64比特数据的CRC校验值,如何实现上述并行CRC计算过程并避免传统并行CRC计算带来的高硬件复杂度,是亟需解决的问题。

发明内容

针对现有技术的不足,本发明提供一种CRC码并行计算方法、装置及应用,特别适用于存储装置的读取特性,能够对多位数据进行并行实时的CRC计算且步骤简单,无需消耗大量逻辑资源。

本发明解决技术问题采用如下技术方案:

本发明提供一种CRC码并行计算方法,用于计算生成待编码数据的CRC校验码,其中,所述待编码数据包括至少一组等比特位数据,所述计算方法包括:

获取CRC生成多项式,处理生成一校验基准矩阵;

基于校验基准矩阵对第一组数据进行计算处理生成第一CRC校验码;

将第一CRC校验码与第二组数据执行异或操作,并基于校验基准矩阵对异或结果计算处理生成第二CRC校验码;

依次对后续组数据重复执行上一步骤,并将最终生成的CRC校验码作为待编码数据的CRC校验码输出。

优选地,所述校验基准矩阵通过以下方法生成,包括:

根据CRC生成多项式配置产生一组信息码;

匹配生成第一信息码的校验基准值;

基于第一信息码的校验基准值依次生成后续信息码的校验基准值,具体包括:

若第n-1(n≥2)信息码的校验基准值最高位数据为0,则将第n-1信息码的校验基准值左移一位得到第n信息码的校验基准值;

否则将第n-1个信息码的校验基准值左移一位后再与第一信息码的校验基准值进行异或操作才得到第n信息码的校验基准值;

根据所有校验基准值配置生成校验基准矩阵。

优选地,所述根据CRC生成多项式配置产生一组信息码具体包括:

根据CRC生成多项式阶k,配置生成一个最低位为1、高位均为0的k比特数据作为第一信息码;

对第一信息码依次执行左移位操作,顺序得到k-1个k比特信息码。

优选地,所述匹配生成第一信息码的校验基准值具体包括:

将CRC生成多项式转换为二进制数据,定位去除最高位后二进制数据中为1的所有位序;

依次输出与位序匹配映射的信息码;

将输出的信息码进行异或操作后的结果作为第一信息码的校验基准值输出。

优选地,所述基于校验基准矩阵对第一组数据进行计算处理生成第一CRC校验码具体包括:

定位第一组数据中所有有效位的位序;

依次输出校验基准矩阵中与位序匹配映射的校验基准值;

将输出的校验基准值进行异或操作后的结果作为第一CRC校验码输出。

优选地,所述基于校验基准矩阵对异或结果计算处理生成第二CRC校验码具体包括:

定位异或结果中所有有效位的位序;

依次输出校验基准矩阵中与位序匹配映射的校验基准值;

将输出的校验基准值进行异或操作后的结果作为第二CRC校验码输出。

本发明还提供一种CRC码并行计算装置,包括:

获取模块,配置成用于获取CRC生成多项式;

校验基准矩阵产生模块,配置成根据CRC多项式产生一组信息码,并依此生成校验基准矩阵;

读取模块,配置成依次读取待编码数据中的每组等比特位数据并送入校验码生成模块;

校验码生成模块,配置成:

基于校验基准矩阵对第一组数据进行计算处理生成第一CRC校验码;

将第一CRC校验码与第二组数据执行异或操作,并基于校验基准矩阵对异或结果计算处理生成第二CRC校验码,判断该组数据是否为待编码数据中最后一组数据输入:

否则反馈得到的CRC码并与输入的新一组数据重复执行本步骤;

是则将得到的CRC码待编码数据的CRC校验码输出。

优选地,所述校验基准矩阵产生模块包括:

初始生成单元,配置成根据CRC生成多项式阶k,配置生成一个最低位为1、高位均为0的k比特数据作为第一信息码;

第一移位单元,配置成根据第一信息码产生一组信息码,具体包括对第一信息码依次执行左移位操作,顺序得到k-1个k比特信息码;

第一选择单元,配置成根据CRC生成多项式转换的二进制数据去除最高位后所有有效位的位序,依次选择输出信息码;

第一异或运算单元,配置成对第一选择单元输出的所有信息码进行异或操作,并将结果作为第一信息码的校验基准值输出,同时配合第一移位单元和第一选择单元用于基于第一信息码的校验基准值依次生成后续信息码的校验基准值,具体包括:

若第n-1(n≥2)信息码的校验基准值最高位数据为0,则将第n-1信息码的校验基准值左移一位得到第n信息码的校验基准值;

否则将第n-1个信息码的校验基准值左移一位后再与第一信息码的校验基准值进行异或操作才得到第n信息码的校验基准值;

所述校验码生成模块具体包括:

第二选择单元,配置成根据第一组数据中所有有效位的位序,依次选择输出校验基准矩阵中与位序匹配映射的校验基准值,或者根据前一CRC校验码与后一组数据异或结果中所有有效位的位序,依次选择输出校验基准矩阵中与位序匹配映射的校验基准值;

第二异或运算单元,配置成对第二选择单元输出的所有校验基准值进行异或操作,并将结果作为CRC校验码输出;

判断输出单元,配置成在所述后一组数据为待编码数据中最后一组数据输入时,将第二异或运算单元输出的异或操作结果作为待编码数据的CRC校验码输出。

本发明还提供一种CRC码并行编码系统,包括如前述的CRC码并行计算装置,还包括存储装置,所述存储装置配置为按照预设时钟将待编码数据中的每组等比特位数据依次送入所述并行计算装置中进行处理;以生成待编码数据的CRC校验码;

所述存储装置包括存储阵列、控制逻辑模块、地址译码模块、高压模块、数据缓存模块和IO端口,其中IO端口接收到读命令和地址后,将该命令送入控制逻辑模块,控制逻辑模块与地址译码模块共同控制高压模块产生读数据需要的电压,将电压作用于存储阵列读出相应地址的数据,并送入数据缓存模块,数据缓存模块根据时钟将数据依次送入数据IO端口进行输出。

本发明还提供一种芯片,包含如前述CRC码并行编码系统的功能映射电路。

与现有技术相比,本发明具有如下的有益效果:

本发明的CRC码并行计算方法,不需要等到所有输入数据都读取完毕,而直接可以根据输入数据实时地更新CRC校验值,减少了额外的数据缓存装置使用,提高了编码效率,同时通过校验基准矩阵可以灵活选择不同位宽的CRC生成多项式,并且当CRC生成多项式确定后,只需要计算一次校验基准矩阵即可,大大提高了计算方法的灵活性和兼容性,不仅解决了传统串行CRC校验每个时钟周期只能计算一位数据,效率低下的缺点,还避免了传统并行CRC校验计算电路复杂的缺点;

在此基础上本发明对应设计了实现此方法的装置,并将此装置利用在存储装置上形成了完整的编码系统,可以应用于不同位数的编码数据,对于不同的CRC生成多项式,只需要提前计算好该CRC生成多项式的校验基准矩阵并储存,在之后计算数据的CRC码时直接使用矩阵中相应的值即可,适应于多种类型的CRC计算,具有一定的普及性;

关于本发明相对于现有技术,其他突出的实质性特点和显著的进步在实施例部分进一步详细介绍。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为实施例1的一种CRC码并行计算方法流程图;

图2为实施例1中校验基准矩阵的流程示意图;

图3为实施例2中一种CRC码并行计算装置结构示意图;

图4为实施例3中一种CRC码并行编码系统结构示意图;

图5是实施例3中存储装置内部结构示意图;

图6是实施例3中存储装置读数据时序图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在说明书及权利要求书当中使用了某些名称来指称特定组件。应当理解,本领域普通技术人员可能会用不同名称来指称同一个组件。本申请说明书及权利要求书并不以名称的差异作为区分组件的方式,而是以组件在功能上的实质性差异作为区分组件的准则。如在本申请说明书和权利要求书中所使用的“包含”或“包括”为一开放式用语,其应解释为“包含但不限定于”或“包括但不限定于”。具体实施方式部分所描述的实施例为本发明的较佳实施例,并非用以限定本发明的范围。

在介绍本发明的各个实施例之前,简要说明本发明的计算方法,应用于计算生成待编码数据的CRC校验码,而待编码数据包括至少一组等比特位数据,也即待编码数据可以直接按照等比特位数据进行一组一组的输出,也可以将完整的编码数据进行分割形成若干组等比特位数据进行输出,由于一般的存储阵列在输出数据时满足等比特位数据分组输出,为了统一描述,以下实施例中的待编码数据我们以存储阵列输出的数据作为待编码数据进行详细阐述本发明的具体技术方案。

实施例1

请参照图1-2,本发明的第一个实施例为一种CRC码并行计算方法,用于计算生成待编码数据的CRC校验码,其中待编码数据包括至少一组等比特位数据,计算方法包括:

获取CRC生成多项式,处理生成一校验基准矩阵,具体包括:

根据CRC生成多项式配置产生一组信息码,具体为根据CRC生成多项式阶k,配置生成一个最低位为1、高位均为0的k比特数据作为第一信息码;对第一信息码依次执行左移位操作,顺序得到k-1个k比特信息码,例如CRC生成多项式的阶数为k,那么第一个信息码为{(k-1)’b0,1},第二个信息码为{(k-2)’b0,1,1’b0},剩下的信息码只需要以此类推即可。

匹配生成第一信息码的校验基准值,具体为将CRC生成多项式转换为二进制数据,定位去除最高位后二进制数据中为1的所有位序;依次输出与位序匹配映射的信息码;将输出的信息码进行异或操作后的结果作为第一信息码的校验基准值输出;

基于第一信息码的校验基准值依次生成后续信息码的校验基准值,具体包括:

若第n-1(n≥2)信息码的校验基准值最高位数据为0,则将第n-1信息码的校验基准值左移一位得到第n信息码的校验基准值;

否则将第n-1个信息码的校验基准值左移一位后再与第一信息码的校验基准值进行异或操作才得到第n信息码的校验基准值;

根据所有校验基准值配置生成校验基准矩阵;

基于校验基准矩阵对第一组数据进行计算处理生成第一CRC校验码,具体为定位第一组数据中所有有效位的位序,依次输出校验基准矩阵中与位序匹配映射的校验基准值,将输出的校验基准值进行异或操作后的结果作为第一CRC校验码输出;

将第一CRC校验码与第二组数据执行异或操作,并基于校验基准矩阵对异或结果计算处理生成第二CRC校验码,具体包括:

定位异或结果中所有有效位的位序;

依次输出校验基准矩阵中与位序匹配映射的校验基准值;

将输出的校验基准值进行异或操作后的结果作为第二CRC校验码输出;

依次对后续组数据重复执行上一步骤,例如将第二CRC校验码与第三组数据执行异或操作,并基于校验基准矩阵对异或结果计算处理生成第三CRC校验码,依次类推,将并将最终生成的CRC校验码作为待编码数据的CRC校验码输出。

以下结合存储阵列对本实施例进行详细描述:以CRC为例,并假设存储阵列每次读出16比特数据,IO端口每个时钟输出4比特数据:

CRC4的多项式为G(X)=X

四个信息码分别为:L1=(0,0,0,1);L2=(0,0,1,0);L3=(0,1,0,0);L4=(1,0,0,0);

校验基准矩阵是四个信息码分别经过CRC4计算后得到的,根据信息码的特殊性和CRC运算的规律性,该矩阵不需要通过传统的CRC运算,而是直接由多项式系数得到,信息码的校验基准值实际上是该信息码通过CRC计算得到的,因为由于信息码的特殊性以及CRC运算中的一些规律性,得到第一个信息码的校验基准值只需要移除CRC多项式的最高项,剩下的便是该信息码的校验基准值:

CRC4的多项式系数为:(1,1,0,0,1),那么信息码L1的校验基准值为X1=(1,0,0,1);

由于校验基准值X1的最高位为1,那么需要先将X1左移一位再与X1异或得到信息码L2的校验基准值X2,即:

X2=(X1<<1)^X1=(1,0,1,1);

由于校验基准值X2的最高位为1,那么需要先将X2左移一位再与X1异或得到信息码L3的校验基准值X3,即:

X3=(X2<<1)^X1=(1,1,1,1);

由于校验基准值X3的最高位为1,那么需要先将X3左移一位再与X1异或得到信息码L4的校验基准值X4,即:

X4=(X3<<1)^X1=(0,1,1,1);

假设存储阵列第一次读出的数据为(1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1),在第一个时钟处计算第一个4比特数据的CRC码,此时直接利用校验基准矩阵得到其CRC码:

(1*X4)^(0*X3)^(1*X2)^(0*X1)^=(1,1,0,0);

在得到第一个4比特数据的CRC码后就可以在第二个时钟处继续计算第二个4比特数据的CRC码,首先在CRC码预处理模块将第一个4比特数据的CRC码与第二个4比特数据进行异或:

(1,1,0,0)^(1,0,0,1)=(0,1,0,1);

再对异或后的结果在CRC码计算模块计算其CRC码,最终就可以得到8比特数据(1,0,1,0,1,0,0,1)的CRC码:

(0*X4)^(1*X3)^(0*X2)^(1*X1)^=(0,1,1,0);

第三个4比特数据与第四个4比特数据分别在第三,第四个时钟处重复上述步骤就可以得到该16比特数据的CRC校验值。

若当前已经是最后一个数据,就将CRC码计算模块的结果输出;若当前不是最后一个数据,就将CRC码计算模块的结果反馈到CRC码预处理模块重复上述操作。

本实施例是以CRC4的多项式对长度固定的数据进行CRC运算,若不考虑存储阵列数据处理的特殊性,对于其他位宽的CRC多项式,同样可以进行类似的操作。

实施例2

请参照图3,本实施例一种CRC码并行计算装置,包括:

获取模块,配置成用于获取CRC生成多项式;

校验基准矩阵产生模块,配置成根据CRC多项式产生一组信息码,并依此生成校验基准矩阵,在本实施例中校验基准矩阵产生模块包括:

初始生成单元,配置成根据CRC生成多项式阶k,配置生成一个最低位为1、高位均为0的k比特数据作为第一信息码;

第一移位单元,配置成根据第一信息码产生一组信息码,具体包括对第一信息码依次执行左移位操作,顺序得到k-1个k比特信息码;

第一选择单元,配置成根据CRC生成多项式转换的二进制数据去除最高位后所有有效位的位序,依次选择输出信息码;

第一异或运算单元,配置成对第一选择单元输出的所有信息码进行异或操作,并将结果作为第一信息码的校验基准值输出,同时配合第一移位单元和第一选择单元用于基于第一信息码的校验基准值依次生成后续信息码的校验基准值,具体包括:

若第n-1(n≥2)信息码的校验基准值最高位数据为0,则将第n-1信息码的校验基准值左移一位得到第n信息码的校验基准值;

否则将第n-1个信息码的校验基准值左移一位后再与第一信息码的校验基准值进行异或操作才得到第n信息码的校验基准值;

读取模块,配置成依次读取待编码数据中的每组等比特位数据并送入校验码生成模块;

校验码生成模块,配置成:

基于校验基准矩阵对第一组数据进行计算处理生成第一CRC校验码;

将第一CRC校验码与第二组数据执行异或操作,并基于校验基准矩阵对异或结果计算处理生成第二CRC校验码,判断该组数据是否为待编码数据中最后一组数据输入:

否则反馈得到的CRC码并与输入的新一组数据重复执行本步骤;

是则将得到的CRC码待编码数据的CRC校验码输出;

在本实施例中校验码生成模块具体包括:

第二选择单元,配置成根据第一组数据中所有有效位的位序,依次选择输出校验基准矩阵中与位序匹配映射的校验基准值,或者根据前一CRC校验码与后一组数据异或结果中所有有效位的位序,依次选择输出校验基准矩阵中与位序匹配映射的校验基准值;

第二异或运算单元,配置成对第二选择单元输出的所有校验基准值进行异或操作,并将结果作为CRC校验码输出;

判断输出单元,配置成在所述后一组数据为待编码数据中最后一组数据输入时,将第二异或运算单元输出的异或操作结果作为待编码数据的CRC校验码输出。

实施例3

请参照图4-6,本实施例提供一种CRC码并行编码系统,包括实施例2中的CRC码并行计算装置,还包括存储装置,该存储装置配置为按照预设时钟将待编码数据中的每组等比特位数据依次送入所述并行计算装置中进行处理;以生成待编码数据的CRC校验码;

本实施例中存储装置包括存储阵列、控制逻辑模块、地址译码模块、高压模块、数据缓存模块和IO端口,其中IO端口接收到读命令和地址后,将该命令送入控制逻辑模块,控制逻辑模块与地址译码模块共同控制高压模块产生读数据需要的电压,将电压作用于存储阵列读出相应地址的数据,并送入数据缓存模块,数据缓存模块根据时钟将数据依次送入数据IO端口进行输出;

举例说明,参照图5和6,在存储装置中完整的读命令首先将片选CS信号拉低,选择相应的存储阵列,再根据时钟时钟信号依次向IO端口输入读命令与地址信息,与此同时,芯片内部逻辑将相应地址的数据从存储阵列读出并放入数据缓存模块。当命令与地址输入完成后,IO端口开始输出数据,例如在每个时钟的上升沿和下降沿分别输出8比特数据,经过4个时钟后将数据缓存模块的64比特数据全部读出,此时存储阵列读出下一个64比特数据并继续从IO端口输出,因此将IO端口每个时钟上升沿和下降沿输出的8比特数据依次送入CRC码并行计算装置,在四个时钟后计算完成后,CRC校验值在一个时钟内开始输出这些数据的CRC校验值。

实施例4

本实施例提供一种芯片电路,该芯片电路中包括实施例3中CRC码并行编码系统的功能映射电路。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

相关技术
  • 一种CRC码并行计算方法、装置及其应用
  • 一种并行CRC校验码的计算方法及系统
技术分类

06120113066951