原创 CRC 数据帧校验总结 (crc详解)

物理过程所引起的差错,在某些介质中通常是突发的而不是单个的。网络设计者已经研究出两种基本的策略来处理差错。

1. 纠错码

了解纠错码之前,先了解一个基本概念:海明距离。

通常一帧包括 m 个数据(报文)位和 r 个冗余位或者校验位。设整个长度为 n (即 n = m + r ),则此长度为 n 的单元通常被称作 n 位码字(codeword)。给出任意两个码字,如 10001001 10110001 ,可以确定它们有多少个对应位不同。在此例中有 3 位不同。

为了确定有多少位不同,只须对两个码字做异或运算,然后计算结果中 1 的个数。两个码字中不同位的个数,称为海明距离(Hamming Distance)。其重要性在于,假如两个码字具有海明距离 d ,则需要 d 个位差错才能将其中一个码字转换成另一个。

一种编码的校验和纠错能力取决于它的海明距离。为检测出 d 比特错,需要使用 d + 1 的编码;因为 d 个单比特错决不可能将一个有效的码字转变成另一个有效的码字。当接收方看到无效的码字,它纠能明白发生传输错误。同样,为了纠正 d 比特错,必须使用距离为 2d + 1 的编码,这是因为有效码字的距离远到即使发生 d 个变化,这个发生了变化的码字仍然比其它码字都接近原始码字。

的奇偶位分别进行计算,附加在矩阵上,作为矩阵的最后一行,然后按行进行发送。当块到达后,接收方检测所有的奇偶位。如果其中任何一个出错了,就需要重新传送整个块。

这种方法能够检测到单个程度为 n 的突发错误,因为每一列只有一位改变了。然而如果第一位变反,最后一位变反,且所有其它位都正确,则长度为 n + 1 的突发差错将不会被检测到。假如一个块被一个长的突发差错或者短的突发差错所破坏, n 列中的每一列的奇偶值碰巧正确的概率为 0.5,那么这个出错块被接受的概率不应该是 2- n

虽然上述方法有时已经足够了,但是在实践中,另一种方法正在被广泛使用,即多项式编码(也叫循环冗余码,或 CRC 码)。多项式编码是基于将位串看成是系数为 0 或 1 的多项式,一个 k 位帧可以看成是从 X k-1 X 0 k-1 次多项式的系数序列。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论