【发布时间】:2019-02-28 22:48:51
【问题描述】:
我在网上发现了以下关于 CRC 的性能:
原始多项式。这对于 HD=3 和良好的 HD=2 具有最佳长度 超过该长度的性能。
我不明白。 HD=3 的最佳长度是可以理解的;但是良好的 HD=2 性能意味着什么? AFAIK 所有 CRC 在 HD=2 处具有无限数据长度。
那么对于原始多项式,“高于该长度的良好 HD=2 性能”是什么意思?
【问题讨论】:
标签: crc
我在网上发现了以下关于 CRC 的性能:
原始多项式。这对于 HD=3 和良好的 HD=2 具有最佳长度 超过该长度的性能。
我不明白。 HD=3 的最佳长度是可以理解的;但是良好的 HD=2 性能意味着什么? AFAIK 所有 CRC 在 HD=2 处具有无限数据长度。
那么对于原始多项式,“高于该长度的良好 HD=2 性能”是什么意思?
【问题讨论】:
标签: crc
...对于 HD=3 具有最佳长度,并且在该长度之上具有良好的 HD=2 性能。
该声明措辞不佳。我在此网页底部的“符号:”下找到它
https://users.ece.cmu.edu/~koopman/crc
在我发现的这篇文章和其他文章中,缩写“HD”表示 CRC 的最小汉明距离:对于 HD=k+1,那么 CRC 可以检测到消息中任意长度的 k 位错误模式(如表中所示)。正如您所说,“所有 CRC 在 HD=2 处具有无限数据长度”。
“超过该长度的良好 HD=2 性能”这一短语的用法令人困惑。上面的网站链接到下面的网站,其中包含声明“HD=2 长度始终是无限的,因此始终不在此列表中。”
https://users.ece.cmu.edu/~koopman/crc/notes.html
Wiki hamming distance 解释了误码检测和汉明距离之间的关系:“当且仅当其任意两个码字之间的最小汉明距离至少为 k+1 时,才称码 C 为 k 错误检测" 正如您所说,“所有 CRC 在 HD=2 处具有无限数据长度”,这意味着所有 CRC 都可以检测到任何单个位错误,而不管消息长度如何。
至于“HD=3 的最佳长度”,这意味着能够检测到 2 位错误,请考虑基于 CRC 多项式的linear feedback shift register,使用任何非零值初始化,如果您循环足够多的寄存器次,它将以该初始值结束。对于基于 n+1 位原始多项式的 n 位 CRC,寄存器将在重复之前循环遍历所有 2^n - 1 个非零值。不会发生无法检测到 2 位错误的消息的最大长度(即数据长度加上 CRC 的长度)为 2^n - 1。对于长度为 2^n 或更大的消息,则为任何“i”,如果 bit[0+i] 和 bit[(2^n)-1+i] 有错误,原始 CRC 将无法检测到 2 位错误。如果 CRC 多项式不是原始的,则 failproof 2 错误位检测的最大长度将减小,而不是“最优”。
对于基于任何 CRC 多项式的线性反馈移位寄存器,初始化为任何非零值,无论它循环多少次,它都不会包含零值。这是解释为什么“所有 CRC 在 HD=2 处具有无限数据长度”(能够检测单个位错误)的一种方式。
【讨论】:
作者说:“与许多其他多项式相比,通常原始多项式在 HD=2 时往往具有相当好的(即低)权重。我已经有一段时间没有看了,但我认为在所有情况下都在上面最低权重多项式的 HD=2 断点始终是原始的。”
对于某些算法实现,低权重可以提供更快的计算。
【讨论】: