差错控制
差错控制
——错误检测和纠正 Error Detection and Correct
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率
BER (Bit Error Rate)。 误码率与信噪比有很大的关系。
1、 求海明码(Hamming codes)
海明校验码放置位置 是放在2的幂次位上的,即第“1,2,4,8,16,32······”位上
第一步: 求r的值(即校验位数)
k个数据位,r个校验位
海明码的位数是K+r
第二步: 校验位和信息位对号入座
校验位的位置是放在2的幂次位上的,即第“1,2,4, 8,16, 32 ······”位上
注意: 信息位的位置分配是从高位到低位依次存放
第三步: 确定校验位的值
校验原则:被校验的海明码的下标等于所有参与校验该位的校验位的下标之和
(1) 将校验码校验的信息位的位置记录下来:
(2)校验——做对应信息位的值异或运算
异或运算
a XOR b
异或的运算法则为:
0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)
2、检错码 Error detecting code
奇偶校验
奇偶位的选择原则: 使得码字中比特1的数目是偶数或奇数
例子:发送1011010(4个1)
偶校验: 1011010**0**(凑成偶数个1)
奇校验: 10110101(凑成奇数个1)
循环冗余校验(CRC,Cyclic Redundancy Checks )
——也称为多项式编码(polynomial code)
多项式编码基本思想:
将位串(二进制数)看成系数为0或1的多项式,
一个k位帧看做是k-1次多项式的系数列表
校验的基本思想:
在帧的尾部附加一个校验和,
附加之后的帧所对应的多项式能够被G(x)整除。
当接收方收到了带校验和的帧后,
试着用G(x)去除,如有余数则有错误
计算CRC的算法:
(1)G(x)的阶为r,设一帧有m位,在帧的低位加上r个0位,则该帧包含m+r位
(2) 利用模二除法,用G(x)的位串去除m+r位帧的位串
(3) 利用模二减法,从m+r位串减去余数,结果就是将被传输的带校验和的帧(结果能被G(x)整除)
模2减法是一种不考虑借位的减法,其定义如下:
0-0=0 1-1=0 1-0=1 0-1=1
注意:CRC不是100%可靠