CN111130562A - Crc并行计算方法及系统 - Google Patents
Crc并行计算方法及系统 Download PDFInfo
- Publication number
- CN111130562A CN111130562A CN201811295059.2A CN201811295059A CN111130562A CN 111130562 A CN111130562 A CN 111130562A CN 201811295059 A CN201811295059 A CN 201811295059A CN 111130562 A CN111130562 A CN 111130562A
- Authority
- CN
- China
- Prior art keywords
- vector
- feedback data
- extended
- information data
- original
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供CRC并行计算方法及系统。在本发明实施例中,分别对原始信息数据和原始反馈数据进行扩展,得到扩展信息数据向量和目标扩展反馈数据向量。由于原始信息数据的最高位在扩展信息数据向量中为第(r+L‑1)位,而原始反馈数据的最高位在目标扩展反馈数据向量中同样占第(r+L‑1)位。也即,在本实施例中,无论有效位宽如何变化(也即L如何变化),扩展信息数据向量中的信息数据的最高位与目标扩展反馈数据向量中反馈数据的最高位均是相对齐的,从而实现了对有效位宽变化的自适应,为正确计算CRC向量提供了前提条件。
Description
技术领域
本发明涉及信息安全领域,特别涉及CRC并行计算方法及系统。
背景技术
在通信系统中,由于各种原因可能使信息在传输或接收过程中发生错误。为了能在接收端判断所接收的数据的正确性,通常发送时在数据末尾加入校验位。循环冗余校验(Cyclic Redundancy Check,CRC编译码简单,检错能力强,抗干扰性能优异,所以在很多通信协议和数字用户线路技术中得到广泛应用,如:以太网(Ethernet)、FDDI(FiberTransfer Mode)和ADSL(Asymmetric Digital Subscriber Line)、VDSL(Very high rateDigital Subscriber Line)等。
CRC校验的基本思路是利用线性码原理,对需要进行传输的原始k位二进制数据按照一定的规则处理,产生一个r位的CRC校验码并附加在原始数据后面,形成一个(k+r)位的二进制数据,最后一起发送出去。在接收端以同样的规则检验CRC校验码,从而判断接受信息是否正确。
在一些高速的场合如usb2.0或者快速以太网中,采用的是CRC并行计算算法。其原理简单介绍如下:假定CRC并行计算系统在一个时钟周期并行输入M位信息数据,输出r位CRC结果(向量);在下一个时钟周期(以T2时刻表示)到来时,前一时钟周期(以T1时刻表示)计算得到的CRC结果将作为反馈数据与T2时刻并行输入的M位信息数据一起进行异或等运算,得到当前时钟周期对应的CRC结果。
以M=192,r=24为例,从硬件实现上讲,请参见图1,CRC并行计算系统有192根输入线,24根输出线。输入线与输出线之间存在异或关系,以实现向输入侧反馈前一时钟周期内得到的24位CRC结果作为反馈数据,并将24位反馈数据与本周期并行输入的192位信息数据进行异或运算的目的。
然而发明人发现,从硬件角度看,出厂的CRC系统的输入线与输出线之间的连接关系是无法更改的。例如,192根输入线中的第一根(也即192位数据的最高位,因为习惯上数据高位先入)与24根输出线中的第一根存在异或关系,也可认为,T2时刻并行输入的192位信息数据的最高位与24位反馈数据的最高位是相对齐的。
上述的CRC并行计算算法假定了并行输入的信息数据全部为有效数据,其有效位宽为M。然而,实际中有效位宽并非一直是M。以M=192为例,假定信源产生了382比特的信息数据,则需要两个时钟才能完成CRC的计算。在第一个时钟周期内会并行输入192比特的信息数据,但在第二个时钟周期内,会剩余(382-192=)190比特的信息数据。则在第二个时钟周期内并行输入的192个比特中,有190比特为有效数据,最后两位是无效数据。也即,有效位宽变为190。
但由于CRC并行计算系统的输入线和输出线之间的异或关系已经固定,在计算CRC结果时,还是会令两位无效数据参与计算CRC结果,从而导致计算得到的CRC结果不正确。
在目前的CRC并行算法中,都没有明确提出位宽变化的情况应如何处理。
发明内容
有鉴于此,本发明提供CRC并行计算方法及系统,以自适应有效位宽的变化。
为了实现上述发明目的,本发明提供以下技术方案:
一种CRC并行计算方法,应用于CRC并行处理系统,所述方法包括:
获取当前时钟周期内待处理的原始信息数据;所述原始信息数据长度为L,所述L不大于M,所述M为所述CRC并行处理系统所能处理的有效数据的最大位宽;
对所述原始信息数据进行扩展,得到扩展信息数据向量;其中,所述扩展信息数据向量长度为M+r,所述原始信息数据占据所述扩展信息数据向量的第r至(r+L-1)位,所述原始信息数据的最高位占所述扩展信息数据向量的第(r+L-1)位,所述扩展信息数据向量的其他位中的数据为无效数据;
根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量;其中,原始反馈数据为当前时钟周期寄存器中保存的CRC向量,所述原始反馈数据的长度为r,所述目标扩展反馈数据向量的长度为M+r;所述原始反馈数据占据所述目标扩展反馈数据向量的第L至(r+L-1)位,所述原始反馈数据的最高位占所述目标扩展反馈数据向量的第(r+L-1)位,所述目标扩展反馈数据向量的其他位中的数据为无效数据;
将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理,得到新CRC向量,并将所述新CRC向量保存在所述寄存器中。
可选的,所述将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理采用如下公式实现:
x(m+1)=(x′(m)+u′(m))·C
其中,所述m表示当前时刻或当前时钟周期的开始时刻,所述m+1表示下一时刻或下一时钟周期的开始时刻,所述x(m+1)表示所述新CRC向量,所述新CRC向量为下一时刻的CRC向量,所述x′(m)表示所述目标扩展反馈数据向量,所述u′(m)表示所述扩展信息数据向量,所述“+”表示模2加,所述“·”表示模二乘法,所述C表示合并计算矩阵,所述合并计算矩阵C是对反馈路径计算矩阵与输入路径计算矩阵取并集合并后,再补充一个r维的单位矩阵后得到的。
可选的,所述C为(M+r)行r列,其中,最后的r行r列为所述r维的单位矩阵。
可选的,所述反馈路径计算矩阵为AM;
所述输入路径计算矩阵为BM=[bAM-1;bAM-2;…;bA;b];
其中:
b=[gr-1 gr-2 …g1 g0]
{gr-1,gr-2,…g0}为校验生成多项式的系数。
可选的,所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量包括:
将所述反馈数据扩展为M路扩展反馈数据向量;其中,第0路扩展反馈数据向量是在所述原始反馈数据的最低位之前添加M个零后得到的;第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环左移一位后得到的,i大于等于1,小于等于M-1;
选择第(M-L)路扩展反馈数据向量作为所述目标扩展反馈数据向量。
可选的,所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量包括:
在所述原始反馈数据的最低位之前添加M个零,得到中间扩展反馈数据向量;
若L=M,所述中间扩展反馈数据向量即为所述目标扩展反馈数据向量;
若L<M,将所述中间扩展反馈数据向量循环左移(M-L)位,得到所述目标扩展反馈数据向量。
可选的,所述对所述原始信息数据进行扩展,得到扩展信息数据向量包括:
若L=M,在所述原始信息数据的最低位之前添加r个零,得到所述扩展信息数据向量;
若L<M,在所述原始信息数据的最低位之前添加r个零,并在所述原始信息数据的最高位之后添加(M-r-L)个零,得到所述扩展信息数据向量。
一种CRC并行计算系统,包括第一扩展模块、第二扩展模块和并行计算模块,其中:
所述第一扩展模块用于:获取当前时刻待处理的原始信息数据,对所述原始信息数据进行扩展,得到扩展信息数据向量;其中,所述原始信息数据长度为L,所述L不大于M,所述M为所述CRC并行处理系统所能处理的有效数据的最大位宽;所述扩展信息数据向量长度为M+r,所述原始信息数据占据所述扩展信息数据向量的第r至(r+L-1)位,所述原始信息数据的最高位占所述扩展信息数据向量的第(r+L-1)位,所述扩展信息数据向量的其他位中的数据为无效数据;
所述第二扩展模块用于:获取原始反馈数据,根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量;其中,所述原始反馈数据为当前时刻寄存器中的CRC向量,所述原始反馈数据的长度为r,所述目标扩展反馈数据向量的长度为M+r;所述原始反馈数据占据所述目标扩展反馈数据向量的第L至(r+L-1)位,所述原始反馈数据的最高位占所述目标扩展反馈数据向量的第(r+L-1)位,所述目标扩展反馈数据向量的其他位中的数据为无效数据;
所述并行计算模块用于:将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理,得到新CRC向量,并将所述新CRC向量保存在所述寄存器中。
可选的,所述并行计算模块采用如下公式实现所述将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理的操作:
x(m+1)=(x′(m)+u′(m))·C,其中,所述m表示当前时刻或当前时钟周期的开始时刻,所述m+1表示下一时刻或下一时钟周期的开始时刻,所述x(m+1)x(m)表示所述新CRC向量,所述新CRC向量为下一时刻的CRC向量,所述x′(m)表示所述目标扩展反馈数据向量,所述u'(m)表示所述扩展信息数据向量,所述“+”表示模2加,所述“·”表示模二乘法,所述C表示合并计算矩阵,所述合并计算矩阵C是对反馈路径计算矩阵与输入路径计算矩阵取并集合并后,再补充一个r维的单位矩阵后得到的。
可选的,在所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量的方面,所述第二扩展模块具体用于:
将所述反馈数据扩展为M路扩展反馈数据向量;其中,第0路扩展反馈数据向量是在所述原始反馈数据的最低位之前添加M个零后得到的;第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环左移一位后得到的,i大于等于1,小于等于M-1;
选择第(M-L)路扩展反馈数据向量作为所述目标扩展反馈数据向量。
可见,在本发明实施例中,分别对原始信息数据和原始反馈数据进行扩展,得到扩展信息数据向量和目标扩展反馈数据向量。在扩展信息数据向量中第r至(r+L-1)位为上述原始信息数据,在目标扩展反馈数据向量中,第L至(r+L-1)位为上述原始反馈数据。由于原始信息数据的最高位在扩展信息数据向量中为第(r+L-1)位,而原始反馈数据的最高位在目标扩展反馈数据向量中同样占第(r+L-1)位。也即,在本实施例中,无论有效位宽如何变化(也即L如何变化),扩展信息数据向量中的信息数据的最高位与目标扩展反馈数据向量中反馈数据的最高位均是相对齐的,从而实现了对有效位宽变化的自适应,为正确计算CRC向量提供了前提条件。
附图说明
图1为现有并行处理示意图;
图2为本发明实施例提供的应用场景示例图;
图3为本发明实施例提供的CRC并行计算方法的示例性流程图;
图4、图8为本发明实施例提供的CRC并行计算系统的结构示意图;
图5a、图5b为本发明实施例提供的M路扩展反馈数据向量示意图;
图6为本发明实施例提供的扩展信息数据向量和目标扩展反馈数据向量最高位对齐的示意图;
图7a、图7b为本发明实施例提供的扩展信息数据向量和目标扩展反馈数据向量按位进行异或相加的示意图。
具体实施方式
本发明提供CRC并行计算方法及系统,以自适应有效位宽的变化。
请参见图2,上述CRC并行计算系统多与信源相连接,信源输出信息数据。这些信息数据大小不一,会有参数表明信源输出信息数据的大小。
CRC并行计算系统所能处理的有效数据的最大位宽为M,依处理能力不同,M可取128、192等,CRC并行计算系统计算得到的CRC结果长度为r,r可取8、16、24、32等。
需要说明的是,信源输出的信息数据的长度可能大于192比特,例如,信源输出382比特的信息数据,则需要两个时钟时期才能完成CRC计算,在第一个时期周期计算出的CRC向量为中间结果,第二个时钟周期得到的CRC向量为最终的CRC检验码。原信息数据+CRC检验码后续会经编码、调制等处理过程,并最终发送出去。
下面将基于以上描述,以M=192、r=24为例,对本发明实施例做进一步详细说明。
图3示出了由CRC并行处理系统执行的CRC并行计算方法的一种示例性流程,包括:
S301:获取当前时钟周期内待处理的原始信息数据。
可将当前时钟周期T(m)的开始时刻称为当前时刻,用m表示,下一时钟周期Tm+1的开始时刻为“下一时刻”,用m+1表示,将待处理的原始信息数据称为u(m)。
u(m)的长度为L,L不大于M,也即,当M=192时,L不会大于192。举例来讲,L=80。
S302:对上述原始信息数据进行扩展,得到扩展信息数据向量。
可使用u'(m)表示扩展信息数据向量,或者使用uM(m)表示扩展信息数据向量。
其中,扩展信息数据向量长度为M+r,原始信息数据占据扩展信息数据向量的第r至(r+L-1)位(原始信息数据的最高位占第(r+L-1)位),扩展信息数据向量的其他位中的数据为无效数据。
举例来讲,若M=192,r=24,L=80,则扩展信息数据向量长度为216,扩展信息数据向量的第24至103位为原始信息数据(原始信息数据的最高位占第103位),其他位为无效数据。当然,若L=8,则扩展信息数据向量的第24至31位(原始信息数据的最高位占第31位)为原始信息数据,其他位为无效数据。
更具体的,若L=M,可在原始信息数据的最低位之前添加r个零,得到扩展信息数据向量;若L<M,在原始信息数据的最低位之前添加r个零,并在原始信息数据的最高位之后添加(M-r-L)个零,得到扩展信息数据向量。
以M=192为例,若L=192,则直接在原始信息数据最低位之前添加24个零即可。而若L=100,则直接在原始信息数据最低位之前添加24个零,并在其最高位之后添加91个零,得到扩展信息数据向量。
或者,若按数据高位先入的顺序来看,则原始信息数据占据扩展信息数据向量的第(M-L+1)位至第M位(此时,原始信息数据的最高位占扩展信息数据向量的第(M-L+1)位),扩展信息数据向量的其他位中的数据为无效数据。
更具体的,若按数据高位先入的顺序,可采用如下扩展方式:若L=M,可在原始信息数据的最低位之后添加r个零,得到扩展信息数据向量;若L<M,在原始信息数据的最低位之后添加r个零,并在原始信息数据的最高位之前添加(M-r-L)个零,得到扩展信息数据向量。
举例来讲,若M=192,r=24,L=80,则扩展信息数据向量长度为216,按数据高位先入的顺序来看,扩展信息数据向量的第113至192位为原始信息数据,并且,原始信息数据的最高位占扩展信息数据向量的第113位,其他位为无效数据。当然,若L=8,则扩展信息数据向量的第185至192位为原始信息数据,并且,原始信息数据的最高位占扩展信息数据向量的第185位,其他位为无效数据。
更具体的,若L=M,可在原始信息数据的最低位之后添加r个零,得到扩展信息数据向量;若L<M,在原始信息数据的最低位之后添加r个零,并在原始信息数据的最高位之前添加(M-r-L)个零,得到扩展信息数据向量。
以M=192为例,若L=192,则直接在原始信息数据最低位之后添加24个零即可。而若L=100,则直接在原始信息数据最低位之后添加24个零,并在其最高位之前添加91个零,得到扩展信息数据向量。
请参见图4,步骤302可由CRC计算系统的第一扩展模块41执行。
需要说明的是,图1所示现有CRC计算系统中,若M=192,则输入线为192根,并没有进行数据扩展。
而请参见图4,本发明的CRC计算系统中,第一扩展模块41的输入线为192根,但其输出线为216根(输出线0-215)。其中,按数据高位先入的顺序,从输出线192输出的是原始信息数据的最低位,而输出线113(L=80)输出的是原始信息数据的最高位。
第一扩展模块41输出的即为216位扩展信息数据向量。
S303:根据原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量。
其中,原始反馈数据为当前时刻在寄存器中保存的CRC向量x(m),而扩展反馈数据向量可表示为x′(m)。
原始反馈数据的长度为r,目标扩展反馈数据向量的长度为M+r。原始反馈数据占据目标扩展反馈数据向量的第L至(r+L-1)位(原始反馈数据的最高位占第(r+L-1)位),目标扩展反馈数据向量的其他位中的数据为无效数据。
举例来讲,若M=192,r=24,L=80,则目标扩展反馈数据长度为216,目标扩展反馈数据的第80至103位为原始反馈数据(原始反馈数据的最高位占第103位),其他位为无效数据。当然,若L=8,则扩展信息数据向量的第8至31位为原始反馈数据(原始反馈数据的最高位占第31位),其他位为无效数据。
仍请参见图4,步骤303可由CRC计算系统的第二扩展模块42执行。
更具体的,可采用不同的方式得到目标扩展反馈数据向量:
方式一,将反馈数据扩展为M路扩展反馈数据向量,选择第(M-L)路扩展反馈数据向量作为目标扩展反馈数据向量。
其中,请参见图5a,第0路扩展反馈数据向量是在原始反馈数据的最低位之前添加M个零后得到的,第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环左移一位后得到的,i大于等于1,小于等于M-1。
以M=192,L=80为例,则第112路扩展反馈数据向量为目标扩展反馈数据向量。
采用此种方式时,第二扩展模块42内部可进一步包括扩展单元和M选一的选择器,扩展单元用于生成M路扩展反馈数据向量,而M选一的选择器可实现从扩展单元输出的M路扩展反馈数据向量中,选择第(M-L)路扩展反馈数据向量作为目标扩展反馈数据向量。
方式二,先在原始反馈数据的最低位之后添加M个零,得到中间扩展反馈数据向量(对应方式一的第0路扩展反馈数据向量),之后,若L=M,即直接将该中间扩展反馈数据向量作为目标扩展反馈数据向量;而若L<M,可将中间扩展反馈数据向量循环左移(M-L)位,得到目标扩展反馈数据向量。
方式一和方式二的原理是相同的,都是基于循环移位来得到目标扩展反馈数据向量的。
需要关注的是,前述提及了,若M=192,r=24,L=80,扩展信息数据向量的第24至103位为原始信息数据,其他位为无效数据。目标扩展反馈数据的第80至103位为原始信息数据,其他位为无效数据;而若L=8,则扩展信息数据向量的第8至31位为原始反馈数据,其他位为无效数据。扩展信息数据向量的第24至31位为原始信息数据,其他位为无效数据。
也即,请参见图6,无论有效位宽如何变化(也即无论L如何变化),扩展信息数据向量中的信息数据的最高位与目标扩展反馈数据向量中反馈数据的最高位均是相对齐的。
此外,解释一下为什么在扩展时要在原始信息数据的最低位之前加r个零,而不是直接从原始信息数据的最高位之后开始加零:
这是考虑到原始信息数据的有效位宽可能会小于r。以r=24为例,若原始信息数据的长度(也即有效位宽)为18,若直接从原始信息数据的最高位之后开始加零得到的序列的第17位是原始信息数据的最高位。而目标扩展反馈数据向量中原始反馈数据的最高位最小可能是第23位,这就会出现最高位无法对齐的情况。
为了避免出现上述情况,本发明实施例在原始信息数据的最低位前加r个零。
或者,若按数据高位先入的顺序来看,则原始反馈数据占据目标扩展反馈数据向量的第(M-L+1)位至第(M+r-L)位(原始反馈数据的最高位占第(M-L+1)位),目标扩展反馈数据向量的其他位中的数据为无效数据。
举例来讲,若M=192,r=24,L=80,则目标扩展反馈数据长度为216,若按数据高位先入的顺序,目标扩展反馈数据的第113至136位为原始反馈数据(原始反馈数据的最高位占第113位),其他位为无效数据。当然,若L=8,则扩展信息数据向量的第185至208位为原始反馈数据(原始反馈数据的最高位占第185位),其他位为无效数据。
相应的,可采用不同的方式得到目标扩展反馈数据向量:
方式三,将反馈数据扩展为M路扩展反馈数据向量,选择第r+L路扩展反馈数据向量作为目标扩展反馈数据向量。
其中,请参见图5b,第0路扩展反馈数据向量是在原始反馈数据的最高位之后添加M个零后得到的,第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环右移一位后得到的,i大于等于1,小于等于M-1。
以M=192,L=80为例,则第104路扩展反馈数据向量为目标扩展反馈数据向量。
方式四,先在原始反馈数据的最高位之后添加M个零,得到中间扩展反馈数据向量(对应方式三的第0路扩展反馈数据向量),之后,若L=M,即直接将该中间扩展反馈数据向量作为目标扩展反馈数据向量;而若L<M,可将中间扩展反馈数据向量循环右移(r+L)位,得到目标扩展反馈数据向量。
方式一至四的原理是相同的,都是基于循环移位来得到目标扩展反馈数据向量的。
S304:将扩展信息数据向量和目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理,得到新CRC向量,并将新CRC向量保存在寄存器中。
需要说明的是,S301-304是在同一个时钟周期内执行的,该时钟周期的开始时刻表示为m,下一时钟周期的开始时刻表示为m+1。
请参见图4,步骤304可由CRC计算系统的并行计算模块43执行。
需要说明的是,假定M=192,r=24,原始信息数据的有效位宽为L,则当24≤L≤192,扩展信息数据向量和目标扩展反馈数据向量按位异或相加后得到的组合数据向量如图7a所示;而若1≤L<24,扩展信息数据向量和目标扩展反馈数据向量按位异或相加后得到的组合数据向量如图7b所示。其中,d0至dL-1为原始信息数据,而c0-c23为原始反馈数据。
进一步的,并行计算模块43内部可包含异或相加电路和并行处理单元,以分别完成按位异或相加和对异或相加结果的并行处理。
此外,并行计算模块43还可包含寄存器(以Z-1),以存储计算得到的CRC向量。图8示出了整个技术方案的原理示意图。
可见,在本发明实施例中,分别对原始信息数据和原始反馈数据进行扩展,得到扩展信息数据向量和目标扩展反馈数据向量。在扩展信息数据向量中第r至(r+L-1)位为上述原始信息数据,在目标扩展反馈数据向量中,第L至(r+L-1)位为上述原始反馈数据。由于原始信息数据的最高位在扩展信息数据向量中为第(r+L-1)位,而原始反馈数据的最高位在目标扩展反馈数据向量中同样占第(r+L-1)位。也即,在本实施例中,无论有效位宽如何变化(也即L如何变化),扩展信息数据向量中的信息数据的最高位与目标扩展反馈数据向量中反馈数据的最高位均是相对齐的,从而实现了对有效位宽变化的自适应,为正确计算CRC向量提供了前提条件。
下面将对如何生成CRC向量进行介绍。
在现有的CRC并行计算算法时,会分别使用反馈路径计算矩阵AM与x(m)相运算,使用输入路径计算矩阵BM与信息数据相运算,计算公式如下:
x(m+1)=x(m)·AM+uM(m)·BM。
公式中的运算符号“+”表示模2加,“·”表示模二乘法。
上述计算矩阵由元素0、1组成,元素“1”代表了与其相关的数据要参与异或运算,为了降低计算的复杂度,就要减少整个计算过程中的异或运算,因此,本发明实施例将输入路径与反馈路径合并计算,以降低计算复杂度。
本发明实施例实现“将扩展信息数据向量和目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理”的公式如下:
x(m+1)=(x′(m)+u′(m))·C
其中,x(m+1)表示下一时刻的CRC向量也即前述的新CRC向量,x′(m)表示目标扩展反馈数据向量,u′(m)表示扩展信息数据向量,“+”表示模2加,“·”表示模二乘法,C表示合并计算矩阵,合并计算矩阵C是对反馈路径计算矩阵与输入路径计算矩阵取并集合并后,再补充一个r维单位矩阵后得到的。
更具体的:
C为(M+r)行r列,其中,最后的r行r列为r维单位矩阵;
反馈路径计算矩阵为AM;
输入路径计算矩阵为BMf=[bAM-1;bAM-2;…;bA;b];
其中:
b=[gr-1 gr-2 … g1 g0]
{gr-1,gr-2,…g0}为校验生成多项式的系数。
通过数学矩阵计算不难发现:
M<r时,
M=r时,AM=BM;
M>r时,BM=[AM;bAM-r-1;…;bA;b];
令矩阵AB为合并计算矩阵(取AM与BM的并集)
则扩展矩阵C为C=[AB;Ir]。
其中Ir为r维单位矩阵,加上Ir的目的,是解决信息数据有效位宽小于CRC校验位宽的情况,此时,有一部分反馈数据值是直接输出的,可以用单位矩阵来表示这部分的电路。
下面介绍上述x(m+1)=(x′(m)+u′(m))·C的推导过程:
在CRC校验过程中,M是大于r的,不考虑C中的Ir,此时:
BM=[AM;bAM-r-1;…;bA;b]。
则可对x(m+1)=x(m)·AM+uM(m)·BM做如下展开:
x(m+1)=(x′(m)+u′(m)·C
=x(m)·AM+uM(m)·[AM;bAM-r-1;…;bA;b]
=[x(m)0]·[AM;0]+uM(m)·[AM;bAM-r-1;…;bA;b]
=([x(m)0]+uM(m))·[AM;bAM-r-1;…;bA;b]
上述公式中“[x(m)0]”中的黑体0表示零向量。
最后的得式([x(m)0]+uM(m))·[AM;bAM-r-1;…;bA;b]中,[x(m)0]即为x′(m),也即,x′(m)=[x(m)0],而u′(m)=uM(m),[AM;bAM-r-1;…;bA;b]=BM=C,则可推导出公式:x(m+1)=(x′(m)+u′(m))·C。
综上,本发明提供了一种自适应并行度的CRC并行方法及系统,可以实现高速并行CRC计算:通过合并输入路径计算矩阵与反馈路径计算矩阵,并且对输入的原始信息数据和原始反馈数据进行扩展,可以实现自适应并行度的CRC计算,在降低计算复杂度的同时,提高了系统设计的灵活性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及模型步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或模型的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、WD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种CRC并行计算方法,其特征在于,应用于CRC并行处理系统,所述方法包括:
获取当前时钟周期内待处理的原始信息数据;所述原始信息数据长度为L,所述L不大于M,所述M为所述CRC并行处理系统所能处理的有效数据的最大位宽;
对所述原始信息数据进行扩展,得到扩展信息数据向量;其中,所述扩展信息数据向量长度为M+r,所述原始信息数据占据所述扩展信息数据向量的第r至(r+L-1)位,所述原始信息数据的最高位占所述扩展信息数据向量的第(r+L-1)位,所述扩展信息数据向量的其他位中的数据为无效数据;
根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量;其中,原始反馈数据为当前时钟周期寄存器中保存的CRC向量,所述原始反馈数据的长度为r,所述目标扩展反馈数据向量的长度为M+r;所述原始反馈数据占据所述目标扩展反馈数据向量的第L至(r+L-1)位,所述原始反馈数据的最高位占所述目标扩展反馈数据向量的第(r+L-1)位,所述目标扩展反馈数据向量的其他位中的数据为无效数据;
将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理,得到新CRC向量,并将所述新CRC向量保存在所述寄存器中。
2.如权利要求1所述的方法,其特征在于,所述将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理采用如下公式实现:
x(m+1)=(x′(m)+u′(m))·C
其中,所述m表示当前时刻或当前时钟周期的开始时刻,所述m+1表示下一时刻或下一时钟周期的开始时刻,所述x(m+1)表示所述新CRC向量,所述新CRC向量为下一时刻的CRC向量,所述x′(m)表示所述目标扩展反馈数据向量,所述u′(m)表示所述扩展信息数据向量,所述“+”表示模2加,所述“·”表示模二乘法,所述C表示合并计算矩阵,所述合并计算矩阵C是对反馈路径计算矩阵与输入路径计算矩阵取并集合并后,再补充一个r维的单位矩阵后得到的。
3.如权利要求1所述的方法,其特征在于,所述C为(M+r)行r列,其中,最后的r行r列为所述r维的单位矩阵。
5.如权利要求1-4任一项所述的方法,其特征在于,所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量包括:
将所述反馈数据扩展为M路扩展反馈数据向量;其中,第0路扩展反馈数据向量是在所述原始反馈数据的最低位之前添加M个零后得到的;第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环左移一位后得到的,i大于等于1,小于等于M-1;
选择第(M-L)路扩展反馈数据向量作为所述目标扩展反馈数据向量。
6.如权利要求1-4任一项所述的方法,其特征在于,所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量包括:
在所述原始反馈数据的最低位之前添加M个零,得到中间扩展反馈数据向量;
若L=M,所述中间扩展反馈数据向量即为所述目标扩展反馈数据向量;
若L<M,将所述中间扩展反馈数据向量循环左移(M-L)位,得到所述目标扩展反馈数据向量。
7.如权利要求1-4任一项所述的方法,其特征在于,所述对所述原始信息数据进行扩展,得到扩展信息数据向量包括:
若L=M,在所述原始信息数据的最低位之前添加r个零,得到所述扩展信息数据向量;
若L<M,在所述原始信息数据的最低位之前添加r个零,并在所述原始信息数据的最高位之后添加(M-r-L)个零,得到所述扩展信息数据向量。
8.一种CRC并行计算系统,其特征在于,包括第一扩展模块、第二扩展模块和并行计算模块,其中:
所述第一扩展模块用于:获取当前时刻待处理的原始信息数据,对所述原始信息数据进行扩展,得到扩展信息数据向量;其中,所述原始信息数据长度为L,所述L不大于M,所述M为所述CRC并行处理系统所能处理的有效数据的最大位宽;所述扩展信息数据向量长度为M+r,所述原始信息数据占据所述扩展信息数据向量的第r至(r+L-1)位,所述原始信息数据的最高位占所述扩展信息数据向量的第(r+L-1)位,所述扩展信息数据向量的其他位中的数据为无效数据;
所述第二扩展模块用于:获取原始反馈数据,根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量;其中,所述原始反馈数据为当前时刻寄存器中的CRC向量,所述原始反馈数据的长度为r,所述目标扩展反馈数据向量的长度为M+r;所述原始反馈数据占据所述目标扩展反馈数据向量的第L至(r+L-1)位,所述原始反馈数据的最高位占所述目标扩展反馈数据向量的第(r+L-1)位,所述目标扩展反馈数据向量的其他位中的数据为无效数据;
所述并行计算模块用于:将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理,得到新CRC向量,并将所述新CRC向量保存在所述寄存器中。
9.如权利要求8所述的系统,其特征在于,所述并行计算模块采用如下公式实现所述将所述扩展信息数据向量和所述目标扩展反馈数据向量按位进行异或相加处理,并对异或相加结果进行并行处理的操作:x(m+1)=(x′(m)+u′(m))·C,其中,所述m表示当前时刻或当前时钟周期的开始时刻,所述m+1表示下一时刻或下一时钟周期的开始时刻,所述x(m+1)x(m)表示所述新CRC向量,所述新CRC向量为下一时刻的CRC向量,所述x′(m)表示所述目标扩展反馈数据向量,所述u′(m)表示所述扩展信息数据向量,所述“+”表示模2加,所述“·”表示模二乘法,所述C表示合并计算矩阵,所述合并计算矩阵C是对反馈路径计算矩阵与输入路径计算矩阵取并集合并后,再补充一个r维的单位矩阵后得到的。
10.如权利要求8或9所述的系统,其特征在于,在所述根据所述原始信息数据的长度L对原始反馈数据进行扩展,得到目标扩展反馈数据向量的方面,所述第二扩展模块具体用于:
将所述反馈数据扩展为M路扩展反馈数据向量;其中,第0路扩展反馈数据向量是在所述原始反馈数据的最低位之前添加M个零后得到的;第i路扩展反馈数据向量是对第(i-1)路扩展反馈数据向量循环左移一位后得到的,i大于等于1,小于等于M-1;
选择第(M-L)路扩展反馈数据向量作为所述目标扩展反馈数据向量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811295059.2A CN111130562B (zh) | 2018-11-01 | 2018-11-01 | Crc并行计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811295059.2A CN111130562B (zh) | 2018-11-01 | 2018-11-01 | Crc并行计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130562A true CN111130562A (zh) | 2020-05-08 |
CN111130562B CN111130562B (zh) | 2022-12-09 |
Family
ID=70494829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811295059.2A Active CN111130562B (zh) | 2018-11-01 | 2018-11-01 | Crc并行计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130562B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112350735A (zh) * | 2020-11-24 | 2021-02-09 | 广芯微电子(广州)股份有限公司 | 一种多项式可配的crc数字电路的实现方法及系统 |
CN117220833A (zh) * | 2023-11-09 | 2023-12-12 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002082664A2 (en) * | 2001-04-03 | 2002-10-17 | Sun Microsystems, Inc. | Variable width parallel cyclical redundancy check |
CN1762103A (zh) * | 2003-03-28 | 2006-04-19 | 国际商业机器公司 | 用于可变宽度并行循环冗余校验计算的迭代电路和方法 |
EP1981171A1 (en) * | 2007-04-13 | 2008-10-15 | Alcatel Lucent | Apparatus and method for the parallel generation of cyclic redundancy check (CRC) codes |
WO2010135942A1 (zh) * | 2009-05-25 | 2010-12-02 | 中兴通讯股份有限公司 | 快速循环冗余校验编码方法及装置 |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
US9639416B1 (en) * | 2012-11-18 | 2017-05-02 | Altera Corporation | CRC circuits with extended cycles |
-
2018
- 2018-11-01 CN CN201811295059.2A patent/CN111130562B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002082664A2 (en) * | 2001-04-03 | 2002-10-17 | Sun Microsystems, Inc. | Variable width parallel cyclical redundancy check |
CN1762103A (zh) * | 2003-03-28 | 2006-04-19 | 国际商业机器公司 | 用于可变宽度并行循环冗余校验计算的迭代电路和方法 |
EP1981171A1 (en) * | 2007-04-13 | 2008-10-15 | Alcatel Lucent | Apparatus and method for the parallel generation of cyclic redundancy check (CRC) codes |
WO2010135942A1 (zh) * | 2009-05-25 | 2010-12-02 | 中兴通讯股份有限公司 | 快速循环冗余校验编码方法及装置 |
US9639416B1 (en) * | 2012-11-18 | 2017-05-02 | Altera Corporation | CRC circuits with extended cycles |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
Non-Patent Citations (1)
Title |
---|
王江等: "面向IP复用的可配置并行CRC计算模块设计", 《计算机工程与科学》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112350735A (zh) * | 2020-11-24 | 2021-02-09 | 广芯微电子(广州)股份有限公司 | 一种多项式可配的crc数字电路的实现方法及系统 |
CN117220833A (zh) * | 2023-11-09 | 2023-12-12 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
CN117220833B (zh) * | 2023-11-09 | 2024-01-26 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111130562B (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468439B2 (en) | Speed-optimized computation of cyclic redundancy check codes | |
US9203436B2 (en) | Error correction in multi-valued (p,k) codes | |
WO2010115371A1 (zh) | 一种循环冗余校验crc码的实现方法和装置 | |
US8577026B2 (en) | Methods and apparatus in alternate finite field based coders and decoders | |
CN107239362B (zh) | 一种并行crc校验码的计算方法及系统 | |
US8949703B2 (en) | Parallel encoding for non-binary linear block code | |
JPWO2004001701A1 (ja) | 符号演算装置 | |
CN101795175B (zh) | 数据的校验处理方法及装置 | |
US7539918B2 (en) | System and method for generating cyclic codes for error control in digital communications | |
EP1064728B1 (en) | Technique for finding a starting state for a convolutional feedback encoder | |
CN111130562B (zh) | Crc并行计算方法及系统 | |
US20110064214A1 (en) | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders | |
US5272661A (en) | Finite field parallel multiplier | |
CN114063973B (zh) | 伽罗华域乘法器及纠删编解码系统 | |
CN112306741A (zh) | 一种crc校验方法及相关装置 | |
US20160112069A1 (en) | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders | |
US20050210357A1 (en) | Channel encoding adapted to error bursts | |
EP1102406A2 (en) | Apparatus and method for decoding digital data | |
CN107017962B (zh) | 动态功耗控制的编码方法及编解码器 | |
US7178091B1 (en) | Reed solomon encoder | |
EP2309650A1 (en) | A systematic encoder with arbitrary parity positions | |
US6421807B1 (en) | Decoding apparatus, processing apparatus and methods therefor | |
CN110741562B (zh) | 向量信令码信道的流水线式前向纠错 | |
US10623026B2 (en) | Error correction | |
JP2963018B2 (ja) | リード・ソロモン誤り訂正符号復号化回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |