CRC校验的快速算法的C语言实现
CC R校验的快速算法的C语言实现
颜国谷 (中原油田信息中心 4 70 ) 5 0 1
摘要:c c R循环冗余校验算法,是一种在数据存储和数据通讯领域中使用十分广泛的编码算法,具有强力的检错和纠错能
力,并且开销比较小。本文从 c c本原理出发,介绍了C C速算法的原理,以c言为实现手段,实现了该算法。 R基 E快语 关键字:c c R校验快速 c c并行c c c言 R R语
1引言 .
在数据存储和数据通讯领域,为了保证数据的正确 .就不得不采用检错或者纠错的编码手段。在诸编码方式中,CR C是其中著名的一种,其特点是 .检错能力极强,开销小,易于用编码器及检测电路实现:从其检错能力来看,它所不能
C C成多项式进行模 2,即: R生除
!生
G() x
! M xx ̄生:—(—x )
G x ()
堕
G() z
( 2—2
根据式 2 .可以得到: -1
=++ ㈣ t (—3 2 )
根据,根据相同的序列按位异或的结果为0 .因此 .式
发现的错误的几率仅为 0 0 4%以下。从性能上和开销上考 2 3就可以化为: 07 -的 虑,均远远优于奇偶校验及算术和校验等方式。因而,在数
:
据存储和数据通讯领域,CR都被广泛运用例如,通讯协 c议 X 2的F S帧检错序列 )用的是 C C C T 5 C (采 R - ClT.AR、L A J H等压缩工具软件采用的是 CR 3 .磁盘驱动器的读写采用了 C2
C C通用的图像存储格式 G F IF也都使用 C C为检 R 1 6 I、TF等 R作
(—4) 2
从中就可以看出接收端计算的结果是整除的,没有余数,这也就是 C C接收端判断数据是否正确的标准。 R在
因此整个CR计算过程就是将要发送的信息左移k .然 C位
后将与生成多项式进行模 2除法,等到的 k长的余数就是 C C位 R
校验信息。
错手段。
2C . RC原理
码序列在发送端 .根据已定的生成多项式 .按照一定的规则 .产生一段 k的校验码 (位即CR码 ),附在要发送的信息 c后 .构成一个新的长为 (+ )位的二进制码序列再发送给 nk
C C R的标准是多种多样的,一般是依据生成多项式的长度
R一 .C C 6 CR C校验是一种线性编码理论,对于要传输 n二进制分为C C 8 R 1等 .以下就是几种典型的生成多项式: 位
C (一8:+++1
C尺一1 x+x’ +1 C 6: +
C RC一3工2+ 2: 3 +x+∞ + + +“+。 + + +++x+l
接收端。在接收端则根据接收的数据部分和C C R之间是否预
定的关系,从而判定在传输过程中是否出现传输错误。 CR C的计算是一种模 2除法,与普通的除法主要的差别的是在计算过程中减法 .使用的不借位/位的模 2运算 .等进加
同于按位异或。
3 C C 1快速算法原理 .R -6
在工程运用中 .基于上面介绍的按照模 2法,计算 CR 除 C校验算法的工作量是很大的,特别是对于越长的序列 .因为没 1数据就要进行一个计算。例如一个以太网数据包的包长为
二进制序列数据流,可以用模2多项式表示 .多项式的系
数就是序列的值。如 1 1 1可以表示为: 0 O 1
1 +0×+1 +0X+1 +1× × X
最大为1 1b t .计算这样的~个数据包需要的时间和计算量 ye 58
的花费很多,找到一种快速的C C算方法 (成并行CR算 R计也 C法 ) .对于工程应用是十分有必要的。
可以采用增加每次C C R的输入的数据长度来简化运算需要的时间和运算量 .一般使用 1ye bt输入数据代替 1 t b的输入。
以C C 8 R一为例 .如果要计算~个 1b的数据的C C 8 i 6t R一。
1bt据,为: i 6数记
假设要传输的n长度的二进制序列表示为:位
肘(= ) 。
使用的C C成多项式,记为: R生
G(=&,
M (: ()+ () M× x M。x其CM,) (就是第1 y 8t t6数据, b
(是第 2ye数据。 ) bt的
如果将二进制序列和生成多项式 .进行下面的计算:
M () x x ̄ x
=
那么按照前面介绍的C C R原理 .计算过程 .
㈣+ (~1 2 )
得到的月j就是CR校验码
它的长度应该是比生成多项 () r C
式少~位.要发送的数据就是: ()+R X )。
在接收端 .对数据进行校验就是将接收到数据和已定的
M ) x ( ' xx G()= x
G() x
l (一1 j。
假定 .
1 8科学中国人 2
2 1年第7 00期