一种计算高速网络中crc值的方法及系统的制作方法_2

文档序号:9399059阅读:来源:国知局
算CRC算法同时计算数据切片的CRC 值,最后将各数据切片的CRC值进行合并,得到整块的待计算数据块CRC终值。与现有的 CRC值计算方法相比,本发明不是对整块大数据一次性进行并行计算,而是分成了若干均等 位宽的数据切片进行计算,不但能够快速、实时地计算出当前数据的CRC值,满足高速网络 线路上数据传输速率要求,而且还能减小CRC计算的电路延迟,减小用于计算CRC的电路逻 辑规模。
[0042] (2)本发明在进行分片数据计算之前,会对待计算数据块进行数据的移位和补0 操作,使得CRC计算过程统一,解决了由于待计算数据的有效净荷的字节数不同而带来的 多种计算情况。
[0043] (3)本发明在进行完待计算数据块的CRC终值计算后,还进行了补偿修正操作,能 对计算结果出错的情况(当计算时CRC初始值不全为0,则计算的结果有可能会出现错误) 进行及时地补偿修正,有效保证了高速网络中CRC值的计算准确性。
[0044] (4)本发明不但可以解决网络系统、高速芯片设计中的CRC值计算,还可以广泛地 应用到数字通信的各个领域(只要是需要进行CRC校验的数据处理都适用),适用范围广, 复用性高。
【附图说明】
[0045] 图1为本发明实施例中计算高速网络中CRC值的方法的流程图;
[0046] 图2为本发明实施例中进行数据的移位、补0、分片操作的状态示意图;
[0047] 图3为本发明实施例中计算高速网络中CRC值的系统的结构框图。
【具体实施方式】
[0048] 下面结合附图及具体实施例对本发明作进一步的详细描述。
[0049] 参见图1所示,本发明实施例提供一种计算高速网络中CRC值的方法,包括以下步 骤:
[0050] Sl :判断待计算数据块中,有效净荷的长度是否小于待计算数据块的长度Y,若 是,对待计算数据块进行数据的移位和补〇操作后转入S2 ;否则直接转入S2。
[0051] Sl中进行数据的移位和补0操作,具体包括以下步骤:将有效净荷数据移位到待 计算数据块的低位;在待计算数据块的高位补〇 (如图2所示)。
[0052] S2 :按照均等的位宽L,将待计算数据块分成N个数据切片(如图2所示), H = N为正整数,转入S3。 L
[0053] S3 :采用并行计算CRC算法,同时计算N个数据切片的CRC值,转入S4。
[0054] S3中,因为数据切片的位宽较小,所以用于计算数据切片的CRC值的CRC电路规模 也会相对比较小,可以减小CRC计算的电路延迟,减小用于计算CRC的电路逻辑规模,同时 还能满足集成电路的高时序要求,使得计算效率高、实时性强。
[0055] S4 :根据CRC编码器的状态公式计算出与所有数据切片对应的相对位置系数矩 阵,每个数据切片对应一个相对位置系数矩阵;将S3中的N个数据切片的CRC值分别输入 对应的相对位置系数矩阵,得到N个输出值;将N个输出值做按位异或运算,合并得到待计 算数据块的CRC终值,转入S5。
[0056] S5 :判断CRC终值是否为正确值,若是,无需进行补偿修正,结束;否则对CRC终值 进行补偿修正计算,结束。
[0057] S5具体包括以下步骤:判断S3中计算数据切片的CRC值时CRC的初始值是否全部 为0,若是,表明步骤S4中合并得到的待计算数据块的CRC终值为正确值,无需进行补偿修 正,结束;否则,将CRC终值与相对位置系数矩阵的逆矩阵的M次幂做异或运算,M为Sl中 补〇的个数,得到待计算数据块的CRC终值的修正值,结束。
[0058] S4中根据CRC编码器的状态公式计算出与数据切片对应的N个相对位置系数矩 阵,具体包括以下步骤:
[0059] 根据1个时钟周期的CRC编码器状态公式D1= TD+Pi n,D为CRC编码器的状态初 值,T和P为常数矩阵,in为第η个待计算的输入数据,η为正整数,可知:
[0060] η个时钟周期的CRC编码器状态公式为Dn= T nD+T(n liPk 1}+T(n 2)Pi(n 2)+… +TPifPi0;
[0061] 设待计算的输入数据位宽为L(即切片的位宽),则代入上述公式可得:
[0062] Dl= T LD+TL 1PiL !+Tl 2PiL 2+TL 3PiL 3+…+TPh+Pi。 (I)
[0063] 若待计算的输入数据位宽为2L,则有:
[0064] D2l= T 2LD+T2L 1Pi2L !+T2l 2Pi2L 2+T2L 3Pi2L 3+…+TLPiL+TL 1PiL !+Tl 2Pi L 2+TL 3PiL 3+… +TPi^Pi0 (2)
[0065] 在CRC初值为0时,(I)式可以化简为:
[0066] Dl= T L 1PiL !+Tl 2PiL 2+TL 3PiL 3+…+TPifPi0 (3)
[0067] 将(3)式带入⑵式得到:
[0068] D2l= T 2LD+T2L 1Pi2L !+T2l 2Pi2L 2+T2L 3Pi2L 3+…+TLPiL+TLDL (4)
[0069] 依次类推,若输入数据的位宽为NL,N为切片个数,则:
[0070] Dnl= T NLD+TNL 1Pii !+Tnl 2PiNL 2+TNL 3PiNL 3+…TLPiNL+T(N 1)LD(N 1)L (5)
[0071] 由⑴式,即简化式⑶式可得到f矩阵,由⑷式可得到T a矩阵,依次类推,由 (5)式可得到r矩阵。在(3)式类推到(5)式的过程中,得到的T'T(N 1WnA-T'T' 即为与数据切片对应的N个相对位置系数矩阵。
[0072] 其中,常数矩阵T是由CRC标准算法生成多项式输入数据为0时得到的单位系数 矩阵,比如标准算法CRC-32生成多项式为:G(x) = xVx^x1+,那么单位系数矩阵为:
[0073]
[0074] 则相对位置系数矩阵为根据单位系数矩阵T乘方运算得到的矩阵。
[0075] 本发明中,在进行完S4的CRC终值计算后,还加入了补偿修正操作,其原因在于: 在Sl中进行的高位补0操作,会使参与计算的数据引入M个0 (M为补0的个数),这对于计 算初始值为全〇的CRC并无影响,但当初始值不等于全0的情况就会使计算结果出错,所以 要采用后补偿机制修正错误的CRC终值。
[0076] 其中,后补偿修正机制的原理如下:
[0077] 由t时刻CRC编码器状态方程D (t)可推导出t+Ι时刻CRC编码器状态方程D (t+1) =TX [I(t)+D(t)] (6)
[0078] 式中,I为输入的数据,t为正整数。
[0079] 根据(6)式可以推导出t+H时刻CRC编码器状态方程D(t+H) = ThX [I(t)+D(t)] (7)
[0080] (7)式中,H为正整数,由于此时输入的数据为M个0(M为正整数),因此(7)式可 以化简为:
[0081] D(t+M) = TmX [D(t)] (8)
[0082] 设待计算数据块中带有额外补充的M个0运算后的CRC编码器状态为D (t+M),期 望计算得到的CRC编码器状态为D(t),则由(8)式推导出的关系式为:
[0083] D(t) = (T J)MX [D(t+M)] (9)
[0084] 根据(9)式可以推导得出:将得到的CRC终值乘以(T 矩阵(即相对位置系数 矩阵的逆矩阵的M次幂),即可实现对CRC终值的补偿修正。
[0085] 参见图3所示,本发明还提供一种实现上述方法的计算高速网络中CRC值的系统, 包括数据移位单元、数据分片单元、数据切片CRC值计算单元、数据合并单元;
[0086] 数据移位单元用于:判断待计算数据块中,有效净荷的长度是否小于待计算数据 块的长度Y,若是,对待计算数据块进行数据的移位和补〇操作后,向数据分片单元发送分 片信号;否则直接向数据分片单元发送分片信号;
[0087] 数据分片单元用于:收到分片信号后,按照均等的位宽L,将待计算数据块分成N 个数据切片,N = I, N为正整数,并向数据切片CRC值计算单元发送计算信号; L
[0088]
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1