循环冗余检验CRC(Cyclic Redundancy Check)

1. 循环冗余检验CRC的原理

  • 在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。
  • 在所要发送的数据后面增加n位冗余码,虽然增大了数据传输的开销,但却可以进行差错检测,当传输可能出现差错时,付出这种代价往往是值得的。

2. n位冗余码的求值方法

  • 用二进制的模2运算进行2^(n)乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q而余数是R(n位,比P少一位)。
  • 例子: M=101001(即k=6),假定除数P=1101(即n=3)。
    经模2除法运算后的结果是,商Q=110101(这个商并没有什么用处),而余数R=001。这个余数R就是用作冗余码拼接在数据M的后面发送出去。因此加上FCS后发送的帧时101001001(即(2^n)*M+FCS),共有(k+n)位。

  • 这种为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)。

注:CRC是一种检错方法,FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,也可以不选用CRC。


发表评论

电子邮件地址不会被公开。 必填项已用*标注