检查 CRC 多项式的错误检测能力

Sil*_*cer 5 checksum crc error-detection hamming-distance polynomials

我试图找出如何计算任意 CRC 多项式的错误检测能力。

我知道有各种错误检测功能可能(或可能不)适用于任意多项式:

  1. 检测单个位错误:所有 CRC 都可以执行此操作,因为这仅需要 CRC 宽度 >= 1。

  2. 突发错误检测:所有 CRC 都可以检测大小等于其宽度的突发错误。

  3. 检测奇数位错误:CRC 与多项式的偶数项(这意味着完整二进制多项式中 1 位的偶数)可以做到这一点。

  4. 检测随机位错误(取决于帧大小):我有一个现成的 C 算法,可以计算给定 HD 和多项式的最大帧大小。我没有完全理解它,但它有效。

让我们假设一个 16 位 CRC 多项式 x¹?+x¹²+x?+1 = 0x11021。该多项式可以:

  • 检测所有单位错误(与数据大小无关)。
  • 检测所有高达 16 位宽度的突发错误(与数据大小无关)。
  • 检测所有奇数个误码(因为它有 4 个多项式;与数据大小无关)。
  • 检测高达 32571 位数据大小的 3 位错误 (HD4)。

以上正确吗?

是否有额外的 CRC 错误检测功能?如果是,我如何检查(没有深入的数学知识)任意 CRC 多项式是否支持它们?

Mar*_*ler 3

Koopman 和 Chakravarty 撰写的这篇论文着眼于 CRC 性能的几种度量,描述了许多多项式的度量和结果。简而言之,“好”多项式的定义取决于它所应用的消息的长度,该长度因应用程序而异。主要衡量指标是汉明距离(为恢复相同 CRC 所需更改的消息中的最小位数)以及规定的低误码率下的性能。