我在网上发现了有关CRC性能的以下信息:
原始多项式。对于HD = 3,这具有最佳长度,而对于HD = 2,则具有良好的长度 性能超出该长度。
我不明白。 HD = 3的最佳长度是可以理解的;但是好的HD = 2性能是什么意思? AFAIK所有CRC的数据长度都为HD = 2。
那么原始多项式的“在该长度以上的良好HD = 2性能”意味着什么?
答案 0 :(得分:1)
...对于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时,代码C才被称为k错误检测。 +1“ 如您所述,“所有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或更大的消息,则为如果位[0 + i]和位[(2 ^ n)-1 + i]错误,则原始CRC将无法检测到2位错误。如果CRC多项式不是原始的,则用于故障检测2错误位检测的最大长度将减小,而不是“最优”。
对于基于任何CRC多项式的线性反馈移位寄存器,初始化为任何非零值,无论循环了多少次,它都永远不会包含零值。这是解释为什么“所有CRC在HD = 2时具有无限数据长度”(能够检测单个位错误)的一种方式。
答案 1 :(得分:0)
作者说:“一般而言,与许多其他多项式相比,原始多项式在HD = 2时往往具有相当好的权重(即低)。自从我看了已经有一段时间了,但是我认为上面的所有情况HD = 2断点的最低权重多项式始终是原始的。”
对于某些算法实现,低权重可能提供更快的计算。