código de corrección de errores

0

¿Existe alguna técnica que pueda detectar y corregir todos los bits de error? Que yo sepa, la corrección de errores al 100% no es posible, pero ¿existe alguna técnica que posiblemente exista? ¿Y puede el código Hamming corregir solo un error de 1 bit o más? ¿Cuál es la técnica de codificación de detección de errores más simple basada en la complejidad del hardware?

    
pregunta Floyd

3 respuestas

3

No es posible corregir "todos" los bits de error, ya que entonces no tendría que transmitir o almacenar ninguna información. El punto de corrección de errores de los códigos es controlar la tasa de error. Digamos que tiene un medio con una tasa de error de 1 error en 1000 bits. Con la corrección de errores hacia adelante de algún tipo, puede reducir la tasa de error a 1 en 1000000 o mejor a expensas de algunos gastos generales para la codificación. Sin embargo, el código que usa bien solo podrá corregir errores en determinadas circunstancias. Digamos, hasta dos bits malos por palabra de código. Sin embargo, puede calcular la probabilidad de obtener más de dos errores por palabra de código, una situación que generará un error a pesar del código, y esto se convierte en la nueva tasa de error.

En cuanto a los códigos de Hamming, Hamming (7,4) es el ejemplo más común. Esto genera 3 bits de paridad por cada 4 bits de datos (por lo que la tasa es 4/7, un poco mejor que 1/2). Este código puede corregir cualquier error de un solo bit. Es posible usar una longitud de bloque más larga como en Hamming (15,11) y Hamming (31,26) para obtener una tasa más alta (menos gastos generales). Sin embargo, los códigos de Hamming solo pueden corregir un solo error de bit en todo el bloque. Entonces, para Hamming (7,4) esto sería 1 error en cualquier palabra de código de 7 bits. Para Hamming (31,26) esto sería un bit en cualquier palabra de código de 31 bits.

Otros métodos de codificación tienen capacidades diferentes. Por ejemplo, el código G24 de Golay codifica 12 bits de datos en 24 bits de código (tasa 1/2) pero puede corregir cualquier error de 3 bits o detectar cualquier error de 7 bits.

Los códigos Reed-solomon son otro tipo de código. Los códigos Reed-solomon agregan t símbolos a cada bloque y pueden detectar hasta t errores o corregir hasta t / 2 errores. Los CD utilizan dos capas de codificación Reed-Solomon junto con el intercalado para corregir los errores causados por rasguños. RS (28,24) se utiliza para codificar bloques de datos de 24 bits. Los bloques de 28 bits resultantes están intercalados de modo que un gran grupo local de errores causará errores corregibles de un solo bit en varias palabras de código. Luego los datos se codifican con RS (32,28). Tanto RS (28,24) como RS (32,28) pueden corregir errores de hasta 2 bits. Finalmente, las palabras de 32 bits se entrelazan nuevamente con un patrón diferente. Esto significa que un rasguño que cause una larga serie de errores de bit de back-to-back afectará a los bits en diferentes palabras de código, permitiendo que los errores se corrijan.

Los códigos más potentes incluyen códigos Turbo y códigos LDPC. Estos pueden usarse para acercarse arbitrariamente a la capacidad del canal de un enlace determinado (velocidad máxima alcanzable teóricamente) y son utilizados por la Red de Espacio Profundo de la NASA, entre otras cosas.

El código más sencillo de implementar es probablemente Hamming (7,4), pero esto puede o no ser apropiado para su aplicación.

    
respondido por el alex.forencich
0

La capacidad de uno para corregir "todos los bits de error" dependerá de la capacidad de uno para caracterizar todas las combinaciones de errores de bit que puedan surgir. Si uno puede asegurar que todos los errores con una probabilidad no trivial de ocurrir tendrán ciertas características, y uno será capaz de manejar todos los errores con esas características, entonces uno podrá manejar todos los errores que tengan una probabilidad no trivial de ocurriendo Generalmente, si uno desea usar un cierto tamaño de paquete para transmitir una cierta cantidad de datos útiles (carga útil), un conocimiento más específico sobre los tipos de errores que pueden ocurrir reducirá el tamaño del paquete necesario para llevar una carga útil dada.

Si uno tiene un conocimiento bastante específico, es posible que el paquete solo necesite ser un poco más grande que la carga útil. Si el conocimiento de uno es vago, el paquete puede exceder el tamaño de la carga útil en muchos órdenes de magnitud. Si el conocimiento es demasiado vago, es posible que ningún tamaño de paquete sea lo suficientemente grande como para garantizar una transmisión confiable.

    
respondido por el supercat
0

Puedes responder a esta pregunta reduciéndola a su caso más simple: te envío un poco y luego te digo que puede estar equivocado. ¿Cuál es el valor que te envié? No hay forma de saberlo.

Lo mismo se aplica a cualquier colección más grande de bits, en el peor de los casos. Si no se conocen suficientes bits (incluido hasta el 100%), no hay forma de averiguar qué deberían haber sido.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas