分类: LINUX
2011-05-30 21:45:55
一.前言
还是回顾以前的老知识了,现在对于一句话更加的深有体会了,好记性不如烂笔头。关于CRC校验还是去年的这个时候理解的,到现在已经忘完了。今天因为看SDIO中看到CRC校验,故重新回顾了一下。
二.原理
任意一个二进制的位串可以用系数仅为0,1的多项式表示。如101011,其表示多项式为x^4+x^2+x^1+1.
三.编码
设码字长度为Nbit,信息字段为Kbit而校验字段为Rbit(N=K+R),对于CRC,码集中的任一码字,存在并且仅存在一个R次的多项式g(x),使得:
V(x) =A(x)g(x)=x^R*m(x)+r(x);
其中:m(x)为K次信息多项式 r(x)为R-1位的校验码 g(x)为生成多项式
发送方通过g(x)形成校验码,接收方通过g(x)验证接受码。
四.CRC计算
1.手算
CRC的计算就是采用了多项式的除法(不进位),也就是异或的办法实现。
2.采用查询
就是将每一个值所对应的CRC码预先计算出来,而后采用查询的办法实现。
五.Code