
中图分类号 :TP331 文献标识码 :A 文章编号 :1009 - 2552
(
2007
)
04 - 0071 - 04
32 位 CRC 校验码的并行算法及硬件实现
俞 迅
(
同济大学电子与信息工程学院 , 上海 200092
)
摘 要 : 通过对 CRC 校验码原理的分析 , 研究了一种并行 32 位 CRC 算法。该算法采用递推的方
法 , 直接得出计算多位数据后的 CRC 余数与计算前余数之间的逻辑关系。相对于一般的按位串
行计算或者查表并行计算的方法来说 , 该方法运算速度快且不需要额外的空间存储余数表 , 十
分有利于硬件实现。
关键词 : CRC ; 模 2 运算 ; 并行 CRC 算法
The 32 - bit cyclic redundancy check parallel algorithm
and hardware implementation
YU Xun
(
College of Electronic and Information Engineering ,Tongji University ,Shanghai 200092 ,China
)
Abstract : Based on the theory of the cyclic redundancy check , a parallel algorithm is studied in the paper.
This algorithm uses a recursive method to calculate the logic relationship of the checksum. Differing from
general serial algorithm or the parallel algorithm based on list - checking , it is faster and doesn’t need the ex2
tra memory space to store the remainder list. It is very easy to be implemented by hardware.
Key words : Cyclic redundancy check ; modulo 2 arithmetic ; CRC parallel algorithm
计算机系统中的数据 ,在进行读、写或者传输时
可能产生错误 ,为了减少和避免错误的产生 ,一方面
可以通过对特定电路的精心设计 ,提高电路的稳定
性和可靠性 ;另一方面则是对数据采用某种编码 ,通
过少量的附加电路 ,使之能发现某些错误 ,甚至能确
定出错位置 ,进而实现自动改错的功能。CRC
(
循环
冗余码
)
就是一种常用的错误检测码 ,它可以发现并
纠正数据存储或传输过程中连续出现的多位错误 ,
因此在介质存储和网络通信方面得到了广泛的应
用。随着技术的发展 ,数据存储和传输速度大大提
高 ,在一些高速的场合如 usb2. 0 或者快速以太网
中 ,传统的串行 CRC 算法已不能满足速度上的要
求 ,而必须采用速度更快的并行算法。
1 CRC 校验码原理简介
CRC 校验的基本思路是利用线性码原理 ,对需
要进行传输的原始 k 位二进制数据按照一定的规则
处理 ,产生一个 r 位的校验码并附加在原始数据后
面 ,形成一个 k + r 位的二进制数据 ,最后一起发送
出去。
首先 , 可将待编码的 k 位数据表示成多项式
M
(
X
)
:
M
(
X
)
= C
k- 1
X
k- 1
+ C
k- 2
X
k- 2
+ …
+ C
i
X
i
+ …+ C
1
X + C
0
其中 C
i
为 0 或者 1。
对于 r 位 CRC 来说 ,校验码产生的过程为 :
将 M
(
X
)
左移 r 位 ,然后除以一个被称为生成
多项式的 G
(
X
)
,所得余数就是 CRC 校验码。这里 ,
生成多项式 G
(
X
)
是一个
r + 1 位的多项式。
用公式表示如下 :
M
(
X
)
·x
r
G
(
X
)
= Q
(
X
)
+
R
(
X
)
G
(
X
)
其中 Q
(
X
)
为商
,在 CRC的计算过程中不需要关注 ,
R
(
X
)
为余数 ,就是需要的 CRC 码。CRC 的计算使
收稿日期 : 2006 - 11 - 20
作者简介 : 俞迅
(
1982 -
)
,男 ,同济大学微电子与固体电子学在读硕
士研究生 ,研究方向为集成电路前端设计及仿真。
—17—
评论0