一种循环冗余校验的计算方法和装置制造方法及图纸

技术编号:32513688 阅读:19 留言:0更新日期:2022-03-02 11:04
本发明专利技术公开了一种循环冗余校验的计算方法和装置。该计算方法包括如下的步骤:(1)根据循环冗余校验的生成多项式G(x)构造系数矩阵F;(2)求出F

【技术实现步骤摘要】
一种循环冗余校验的计算方法和装置


[0001]本专利技术涉及一种循环冗余校验(Cyclic Redundancy Check,简称为CRC)的计算方法,同时也涉及相应的计算装置,属于数字通信


技术介绍

[0002]循环冗余校验是一种根据文件数据产生简短校验码的散列函数校验方法,主要用来校验数据传输或者保存后可能出现的错误。它的校验过程包括如下步骤:
[0003](1)选择一个用于在接收端进行校验时,对接收的帧进行除法运算的除数;
[0004](2)根据所选定的除数二进制位数(假设为k位,K为正整数),然后在要发送的数据帧(假设为m位,m为正整数)后面加上k-1位“0”,然后以这个加了k-1个“0”的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列);
[0005](3)再把这个CRC校验码附加在原数据帧(就是m位的帧)后面,构建一个新帧发送到接收端,最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在传输过程中没出错,否则出现了差错。
[0006]在申请公布号为CN112350735A的中国专利申请中,公开了循环冗余校验的计算方法及系统,根据软件配置初始设置寄存器的初始值和多项式设置寄存器的值,将多项式设置寄存器的值输入CRC运算寄存器中,以满足CRC多项式运算;将待计算数据输入CRC运算寄存器进行运算,其中CRC运算寄存器包括N个CrcCal运算单元,N个CrcCal 运算单元通过Tap信号依次做迭代运算;若输入寄存器输入第一个字节用于CRC运算寄存器进行运算,将初始设置寄存器配置的初始值输入第一个CrcCal运算单元,若输入寄存器输入非第一个字节用于CRC 运算寄存器进行运算,将第N个Tap信号输入至第一个CrcCal运算单元。该技术方案通过软件对CRC多项式和计算初值进行配置,使用一种数字电路,满足不同多项式的CRC计算。
[0007]但是,现有CRC算法在数字电路中的实现,是根据每个CRC算法的多项式不同分类实现的。不同多项式的CRC算法,需要使用不同的数字电路实现。对于不同的应用场景,可能需要多个不同多项式的CRC 算法,这样使得这种方式实现的CRC数字电路在不同应用场景中的适应性不好,实际产品中也很难针对每个多项式的CRC算法专门设计一种数字电路与之对应,使得相关产品在应用场景中受到限制。

技术实现思路

[0008]本专利技术所要解决的首要技术问题在于提供一种循环冗余校验的计算方法。
[0009]本专利技术所要解决的另一技术问题在于提供一种循环冗余校验的计算装置。
[0010]为实现上述目的,本专利技术采用以下的技术方案:
[0011]根据本专利技术实施例的第一方面,提供一种循环冗余校验的计算方法,包括如下步骤:
[0012](1)根据循环冗余校验的生成多项式G(x)构造系数矩阵F;
[0013](2)求出F
N
再取模2,所得到的矩阵为CRC系数矩阵A;
[0014](3)判断输入数据的宽度M与生成多项式的次数N的大小关系,当 N≥M时,对F
N
取模2,从CRC系数矩阵A的前M列得到DATA系数矩阵B;当(X-1)N<M≤XN时,对F
N
、F
2N
、F
3N

F
XN
分别取模2,取F
XN
的后M- (X-1)N列,拼接在{F
(X-1)N


,F
3N
,F
2N
,F
N
}矩阵前,得到DATA系数矩阵B;其中,X为正整数且X≥2;
[0015](4)根据如下循环冗余校验的计算公式,获得CRC计算结果crc
out

[0016]crc
out
=A*crc
in

B*data
in
[0017]其中,A为CRC系数矩阵,B为DATA系数矩阵,

为逻辑异或运算, crc
in
为上一次的CRC计算结果,data
in
是待校验的输入数据。
[0018]其中较优地,所述步骤(1)中,根据生成多项式G(x)构造系数矩阵F:
[0019][0020]其中,G

为生成多项式G(x)对应的多项式矩阵,E为单位矩阵。
[0021]其中较优地,所述步骤(4)中,crc
in
为数字电路中crc
out
延时一周期的输出结果。
[0022]其中较优地,所述步骤(4)中,二进制乘法用

&

实现,模2运算用按位异或

^

实现。
[0023]根据本专利技术实施例的第二方面,提供一种循环冗余校验的计算装置,包括处理器和存储器,所述处理器读取所述存储器中的计算机程序,用于执行以下操作:
[0024](1)根据循环冗余校验的生成多项式G(x)构造系数矩阵F;
[0025](2)求出F
N
再取模2,所得到的矩阵为CRC系数矩阵A;
[0026](3)判断输入数据的宽度M与生成多项式的次数N的大小关系,当 N≥M时,对F
N
取模2,从CRC系数矩阵A的前M列得到DATA系数矩阵B;当(X-1)N<M≤XN时,对F
N
、F
2N
、F
3N

F
XN
分别取模2,取F
XN
的后M- (X-1)N列,拼接在{F
(X-1)N


,F
3N
,F
2N
,F
N
}矩阵前,得到DATA系数矩阵B;其中,X为正整数且X≥2;
[0027](4)根据如下循环冗余校验的计算公式,获得CRC计算结果crc
out

[0028]crc
out
=A*crc
in

B*data
in
[0029]其中,A为CRC系数矩阵,B为DATA系数矩阵,

为逻辑异或运算, crc
in
为上一次的CRC计算结果,data
in
是待校验的输入数据。
[0030]与现有技术相比较,本专利技术实施例提供的循环冗余校验的计算方法和装置在不增加硬件成本的前提下,采用经过特殊设计的矩阵相乘和按列移位算法兼容所有的循环冗余校验计算,可以做到使用一种数字电路,满足不同多项式的循环冗余校验计算需求。
附图说明
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种循环冗余校验的计算方法,其特征在于包括如下步骤:(1)根据循环冗余校验的生成多项式G(x)构造系数矩阵F;(2)求出F
N
再取模2,所得到的矩阵为CRC系数矩阵A;(3)判断输入数据的宽度M与生成多项式的次数N的大小关系,当N≥M时,对F
N
取模2,从CRC系数矩阵A的前M列得到DATA系数矩阵B;当(X-1)N<M≤XN时,对F
N
、F
2N
、F
3N

F
XN
分别取模2,取F
XN
的后M-(X-1)N列,拼接在{F
(X-1)N


,F
3N
,F
2N
,F
N
}矩阵前,得到DATA系数矩阵B;其中,X为正整数且X≥2;(4)根据如下循环冗余校验的计算公式,获得CRC计算结果crc
out
:其中,A为CRC系数矩阵,B为DATA系数矩阵,为逻辑异或运算,crc
in
为上一次的CRC计算结果,data
in
是待校验的输入数据。2.如权利要求1所述的循环冗余校验的计算方法,其特征在于:所述步骤(1)中,根据生成多项式G(x)构造系数矩阵F:其中,G

为生成多项式G(x)对应的多项式矩阵,E为单位矩阵。3.如权利要求1所述的循环冗余校验的计算方法,其特征在于:所述步骤(4)中,crc
in
为数字电路中crc
out
延时一周期的输出结果。4.如权利要求1所述的循环冗余校验的计算方法,其特征在于:所述步骤(4)中,二进制乘法用

&

实现,模2运算用按位异或

^

实现。5.一种循环冗余校验的计算装置,其特征在于包括...

【专利技术属性】
技术研发人员:梁伟杰何代明杨磊李成武贾莹莹
申请(专利权)人:天津兆讯电子技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1