为什么使用像这样的x ^ 8 + x ^ 2 + x + 1的生成多项式用于CRC-8?

时间:2015-01-02 21:44:17

标签: crc crc32 crc16 error-detection crc64

为什么使用像这样的生成多项式G(x)= x ^ 8 + x ^ 2 + x + 1用于CRC-8。如果这是最佳的我们如何证明它。 要么 使用此多项式G(x)= x ^ 5 + x ^ 4 + x ^ 2 + 1用于CRC-5-ITU。

1 个答案:

答案 0 :(得分:3)

选择的多项式确定CRC的错误检测能力。此功能以汉明距离来衡量,汉明距离是在保持CRC不变的情况下可以在消息中引入的最小比特错误数。这将是一个误报,CRC说消息是好的,但事实并非如此。同样重要的是在每个比特错误数量上存在多少这样的比特模式,称为汉明权重。这确定了概率而不是 n 位的错误导致误报。

Exhaustive searches over all possible polynomials have been done by Koopman, et al,找到各种消息长度具有最大汉明距离和最小汉明权重的那些。举个例子,你引用的8次多项式used in the ITU-T Recommendation I.432.1 CRC是好的,但不是你能选的最好的。多项式x 8 + x 6 + x 3 + x 2 +1提供的汉明距离为3更长的消息。这些two pages提供了Koopman的最新结果。

这里的另一个答案表明“最佳多项式取决于所使用的输入数据集。” CRC多项式的错误检测能力所依赖的数据的唯一方面是应用CRC的块的长度。由于CRC的线性特性,错误检测能力实际上是消息中数据的完全独立。如果您使用相同长度的异或两条消息,则该新消息的CRC将是原始两条消息的CRC的异或。因此,一旦找到使CRC保持不变的最小错误集,那么这组错误就可以应用于相同长度的任何消息,以获得误报。