[发明专利]一种CRC并行计算方法在审
申请号: | 202210599566.5 | 申请日: | 2022-05-30 |
公开(公告)号: | CN115001508A | 公开(公告)日: | 2022-09-02 |
发明(设计)人: | 孙云刚;于洪涛 | 申请(专利权)人: | 北京左江科技股份有限公司 |
主分类号: | H03M13/09 | 分类号: | H03M13/09 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 辛海明 |
地址: | 100095 北京市海淀区高*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 crc 并行 计算方法 | ||
本发明涉及一种CRC并行计算方法,属于数据处理领域。本发明在报文起始word和结束word的非报文字节填充0;将256bit输入数据分为8个lane,每个lane包含32bit;使用LFSR电路进行状态寄存器的递推,得到8个状态寄存器,将状态寄存器进行异或操作后得到合并后状态寄存器,对该合并后状态寄存器的值进行状态回滚,回滚后的状态寄存器即为最终的CRC校验值。本发明通过对状态转移矩阵的拆分降低了CRC状态寄存器关联逻辑的复杂度,提升了电路时序特性;本发明通过状态回滚逻辑消除了大位宽并行时报文尾部冗余0对状态寄存器的影响。
技术领域
本发明属于数据处理领域,具体涉及一种CRC并行计算方法。
背景技术
CRC(cyclic redundancy check)循环冗余校验,是一种常用的数据检错纠错码。其基本编码原理如下。
假设待编码数据为W=[w0,w1,w2,w3....wk-1],共kbit。CRC生成多项式为 G=[g0,g1,g2...gr-1],共rbit。
本文bit位序遵循以太网顺序,即,w0首先传输,在后续推导和计算中对应最高优先级。因此在GF(2)域中W=w(0)xk-1+w(1)xk-2+w(2)xk-3+...+ w(k-1)x0合并后W可表示为
类似地生成多项式G在GF(2)域中可表示为在本文中信息序列和生成多项式的位序权重相反。
CRC校验在GF(2)域可表示为如下公式:
R(x)=M(x)xrmodG(x) 公式1
校验码R(x)为信息M(x)补r个0后在GF(2)域中对G(x)取模的结果,最终发送的信息为S(x)=M(x)xr+R(x),在接收端通过计算S(x)modG(x)是否为全0 即可实现错误发现。另外若原始信息长度k为固定值,通过检验S(x)mod G(x) 同样可实现纠错功能。具体纠错能力与生成多项式k长度等相关。
以上可知CRC计算本质上是在GF(2)域求模(除法),在电路层面除法可以通过LFSR进行等效,其电路结构如图1:
以上电路可以实现串行CRC计算,在数据W逐bit移入LFSR后再移入rbit0此时R[0,1,2..r-1]中的数据即为最终的校验码R(x)系数。此电路结构简单,在速度要求比较低的场景下有广泛的应用。
适应不同的应用场景,CRC有多种实现方案。
1.串行法
串行法直接运用CRC定义,逐bit获取输入数据并根据bit值和当前余数值计算GF(2)域的余数直至全部数据参与计算。串行法易于理解,电路简单在低速场合使用较多。但逐bit的计算模式效率较低,无法满足高速计算场合。
2.查表法
查表法利用预先计算的表项可以一次处理多个输入bit,但表项规模为每次处理bit数的幂次规模,如:256规模的表项一次可处理8bit数据、56636规模的表项一次可处理16bit数据。随着处理性能的提高,表项规模会指数级升高。通常此方法采用256规模表项,即每次处理8bit数据。在计算速度要求过高的场合亦不适用。
3.直接并行法
在基于FPGA或ASIC的设计中可以直接以电路逻辑计算替代中的表项存储,实现更大规模的并行。但随着并行规模的增加导致的逻辑复杂度的增加大大限制了电路时钟频率的上限,通常在FPGA中64bit以上的并行计算将面临较大的时序挑战。
发明内容
(一)要解决的技术问题
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京左江科技股份有限公司,未经北京左江科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210599566.5/2.html,转载请声明来源钻瓜专利网。
- 同类专利
- 专利分类