CRC校验
1 基本原理
CRC校验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列。附加一个r位二进制序列、附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发送错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。
2 几个基本概念
- 帧检验序列(FCS):为了进行差错检验而添加的冗余码。
- 多项式模2运行:实际上是按异或(exclusive OR)运算,即相同为0,相异为1,也就是不考虑进位、错位的二进制加减运算。如:10011011 + 11001010 = 01010001.
- 生成多项式:当进行CRC检验时,发送方与接收方需要事先约定一个除数,即生成多项式。生成的多项式的最高位与最低位必须是1.常用的CRC码的生成多项式有:CRC8 = X8+X5+X4+1;每一个生成多项式都可以与一个代码相对应,如CRC8对应代码:100110001.
CRC8检验码代码生成
7位模式的CRC公式为:x8+ x6+ x3+ x2+ 1
这个检验码生成逻辑需要自己动手编写代码,可以参考easics公司的网页,它为我们提供了自动生成Verilog代码的便捷功能。