n结果除以生成的多项式(使用无进位求2的摸数方法),余数就是CRC.忽视商,把余数(CRC)加进数据位,把该信息和CRC一起发送。接收装置用该信息加上CRC去除以生成的多项式,如果余数是0,发送就是无错误发送。一个生成多项式用X幂的代数和表示,如X*+X°+X°(或1),这个多项式转换成二进制数就是1101。只要发送装置和接收装置使用相同的值,-一个生成多项式可以是任意长,包含任何1或0的形式。几个已经展开的标准生成多项式最适合错误检测。RTU协议用多项式X*+X*+X2+1,用二进制表示就是1 1000 0000 0000 0101。这个多项式生成的CRC就是众所周知的CRC-16.
上面的讨论可通过硬件或软件实现。硬件实现需要建立-个多段的基于生成多项式的移位寄存器。循环冗余校验寄存器为了生成CRC,信息数据位被送进移位寄存器,一次–位。寄存器包含-一个预设值。当每个数据位都已经移进移位寄存器时,所有的位都向右移。LSB和数据位进行XOR运算,结果是:和位1原来的内容XOR(结果放在位0),和位14原来的内容XOR(结果放在位13),最后LSB被移进位15。这样重复执行,直到一个信息里的所有数据位都被处理完。CRC-16软件执行将在下一节中叙述。
GIDDINGS & LEWIS 502-03817-02 USPP 5020381702
GIDDINGS & LEWIS 502-03657-03 USPP 5020365703
GIDDINGS & LEWIS 572-03657-03 USPP 5720365703