我试图找出如何计算任意 CRC 多项式的错误检测能力。
我知道有多种错误检测功能可能(或可能不适用于)任意多项式:
检测单个比特错误:
所有 CRC 都可以执行此操作,因为这只需要 CRC 宽度 >= 1。
突发错误检测:
所有 CRC 都可以检测大小等于其宽度的突发错误。
检测奇数位错误:
具有偶数项多项式(这意味着完整二进制多项式中有偶数个 1 位)的 CRC 可以做到这一点。
检测随机位错误(取决于帧大小):
我有一个现成的 C 算法,可以计算给定 HD 和多项式的最大帧大小。我不完全理解它,但它有效。
假设 16 位 CRC 多项式 x16+x12+x5+1 = 0x11021。该多项式可以:
- 检测所有单位错误(与数据大小无关)。
- 检测高达 16 位宽度的所有突发错误(与数据大小无关)。
- 检测所有奇数个位错误(因为它有 4 个多项式项;与数据大小无关)。
- 检测 3 位错误 (HD4),数据大小高达 32571 位。
以上是否正确?
是否有额外的 CRC 错误检测功能?如果是,我如何检查(没有深厚的数学知识)任意 CRC 多项式是否支持它们?
This 库普曼和查克拉瓦蒂的论文研究了 CRC 性能的几种度量,描述了许多多项式的度量和结果。简而言之,“好”多项式的定义取决于它所应用的消息的长度,该长度因应用程序而异。主要衡量指标是汉明距离(为恢复相同 CRC 所需更改的消息中的最小位数)以及规定的低误码率下的性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)