【发布时间】:2015-03-01 04:26:42
【问题描述】:
为什么使用像这样的生成多项式 G(x) =x^8 +x^2 +x+1 用于 CRC-8。如果这是最优的,我们如何证明它。 要么 将这个多项式 G(x) = x^5 + x^4 + x^2 + 1 用于 CRC-5-ITU。
【问题讨论】:
标签: 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。
【问题讨论】:
标签: crc crc32 crc16 error-detection crc64
所选择的多项式决定了 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 很好,但不是您能选择的最好的。多项式 x8+x6+x3+x2+1 提供了 3 的汉明距离更长的消息。这些twopages 提供了 Koopman 的最新结果。
这里的另一个答案表明“最佳多项式取决于所使用的输入数据集”。 CRC 多项式的检错能力所依赖的数据的唯一方面是应用 CRC 的块的长度。由于 CRC 的线性特性,错误检测能力实际上完全独立于消息中的数据。如果您异或两个相同长度的消息,则该新消息的 CRC 将是原始两个消息的 CRC 的异或。因此,一旦您找到保持 CRC 不变的最小错误集,那么该错误集可以应用于 任何 相同长度的消息以获得误报。
【讨论】: