差错控制

数据通信中不加任何差错控制措施,直接用信道来传输数据是不可靠的。而且,无线通信正在普及,它的错误率比光纤干线要高出几个数量级,因而必须知道如何来处理传输错误。

差错控制的首要任务就是如何进行差错检查。差错检查应包含两个任务:即差错控制编码和差错检验。数据信息位在向信道发送之前,先按照某种关系附加上一定的冗余位,构成一个码字后再发送,这个过程称为差错控制编码过程。接收端收到该码字后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生,这个过程称为差错校验过程。

差错控制编码又可分为检错码和纠错码。检错码是指能自动发现差错的编码。奇偶校验码和循环冗余码是最常用的差错控制编码方法。

奇偶检验码作为一种检错码虽然简单,但是漏检率太高。在计算机网络和数据通信中用得最广泛的检错码,是一种漏检率低得多也便于实现的循环冗余码 CRC,又称为多项式码。

任何一个由二进制数位串组成的代码,都可以唯一地与一个只含有 0 和 1 两个系数的多项式建立一一对应的关系。例如,代码 1010111 对应的多项式为 X^6 + X^4 + X^2 + X + 1。

CRC 码在发送端编码和接收端校验时,都可以利用事先约定的生成多项式 G(X) 来得到。

CRC 码计算示例:

若发送的二进制数据为 10110011,生成多项式为 G(X) = X^4 + X^3 + 1,求 CRC 码。

CRC 码

这里的除法用的是模 2 除法(异或运算),所求 CRC 码为 0100,实际发送的二进制数字序列为 101100110100(即上面提到的码字,由信息位后面加上冗余位构成)。

特别说明:

  1. G(X) = X^4 + X^3 + 1 转化为二进制序列为 11001,在要发送的数据帧后面加上 G(X) 位数 5 减去 1,即 4 位的 0。
  2. 用新生成的帧以模 2 除法的方式除以 G(X),得到的余数就是该帧的 CRC 码。注意,余数的位数一定只比 G(X) 位数少一位,也就是 CRC 码位数比 G(X) 位数少一位,如果前面位是 0 也不能省略。
  3. 将计算出来的 CRC 码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端再以模 2 除法方式除以前面选择的 G(X),如果余数为零,则说明数据帧在传输的过程中没有出错

发表评论

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

昵称 *