Yo consideraría este tipo de artículos con gran escepticismo.
En primer lugar, los polinomios enumerados en ese documento son aparentemente el "inverso recíproco" de los polinomios estandarizados reales. No explican por qué, y esto es realmente extraño. El polinomio para CRC-16-CCITT es, por ejemplo, 0x1021, o si lo hará x ^ 16 + x ^ 12 + x ^ 5 + 1. Aparentemente Wikipedia hace un esfuerzo para tratar de dar sentido a este documento en particular.
Los polinomios fueron diseñados para recordar tan poco del patrón de error más probable de la aplicación deseada. Si bien toda la idea de Hamming Distance como una especie de ideal en la comunicación de datos, a menudo se toma de la nada. Para citar el papel:
Para incrustado
redes, la propiedad de interés suele ser la
Distancia de Hamming (HD), que es la mínima posible
Número de inversiones de bit que se deben inyectar en un mensaje.
para crear un error que es indetectable por ese mensaje
Secuencia de verificación de cuadros basada en CRC.
Esto ya está haciendo una gran cantidad de suposiciones extrañas, como que las inversiones de bits genéricas son los errores más probables. Basan todo el documento en este supuesto.
Pero en un gran número de casos, esto solo es cierto cuando un bit de bajo voltaje se convierte en un bit de alto voltaje por EMI; es mucho menos probable que ocurra lo contrario. Entonces, si se te ocurre alguna prueba teórica en la que inviertes bits aleatorios en un paquete de datos genéricos, luego reflexionas sobre la Distancia de Hamming desde allí, ya te has equivocado y has dejado atrás los métodos científicos.
Para dar un sentido a tales suposiciones, debemos definir los medios de comunicación. Por ejemplo, mencionan el polinomio de CAN, que es una señal diferencial. Cuando se produce un error de EMI, la posibilidad de que ambas líneas se inviertan no existe y la mayor parte de la detección de errores se encuentra en el nivel de hardware, no en el CRC. De hecho, CAN tiene una detección de errores tan buena en el nivel de hardware, muestreando cada bit con cuidado, por lo que el CRC está allí para el espectáculo.
Y, por supuesto, los patrones de error probables en un bus CAN serán muy diferentes de los patrones de error en otras aplicaciones. Tomemos, por ejemplo, la memoria flash, donde el principal responsable del error es la retención de datos a lo largo del tiempo, o posiblemente la cantidad de ciclos de escritura, no EMI.
Por lo tanto, afirmar audazmente que un polinomio con un "peso de Hamming" particular es más / menos adecuado, sin tener en cuenta ninguna aplicación específica, es un desorden no científico.