Calcular el número de errores que un CRC no ha detectado usando un polinomio particular

1

Mi objetivo es determinar el polinomio generador óptimo y el tamaño de la secuencia de verificación de trama (campo CRC) para el protocolo que estoy desarrollando. Leyendo el artículo, "Polinomial Code (CRC) Polynomial Selection for Embedded Networks" por Koopman and Chakravarty , me brindó una sólida comprensión del tema y demostró ser un recurso valioso.

Especialmente interesante para mí es la Tabla 1. (que se muestra a continuación), "Ejemplo de ponderaciones de Hamming para el tamaño de palabra de datos de 48 bits". Mi pregunta es ¿cómo crear esta mesa por mi cuenta? Es decir, ¿cómo calcular el número de errores no detectables, siempre que el polinomio generador y el tamaño de la palabra de datos? No estoy seguro de si este número también depende de la relación de error de bits (BER).

" Ejemplo de ponderaciones de Hamming para el tamaño de la palabra de datos de 48 bits "de la" Selección polinómica del Código de redundancia cíclica (CRC) para redes integradas "de Koopman y Chakravarty

Es decir, quiero escribir guiones para calcularlos, como datos proporcionados por los autores del documento No cubro polinomios y longitudes de datos que tengo a mano.

Cualquier referencia al material donde pueda obtener el conocimiento necesario para elaborar un algoritmo es bienvenida (preferiblemente sin entrar en la teoría de campo).

    
pregunta balboa

1 respuesta

0

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.

    
respondido por el Lundin

Lea otras preguntas en las etiquetas