Detección de Errores.

Sitio: Facultad de Ingeniería U.Na.M.
Curso: REDES I - IC412
Libro: Detección de Errores.
Imprimido por: Invitado
Día: miércoles, 4 de diciembre de 2024, 23:18

1. Tipos de Errores

Simples

El tipo de error simple sería el cambio de un bit.

Error de ráfaga:

Se considera un error de ráfaga a partir de que sean dos o más los bits que se han cambiado durante la transmisión. Esto no implica que, necesariamente, los errores se hayan producido en bits consecutivos.

El largo de las ráfagas se pueden caracterizar en un canál y esto permite luego elegir un polinómio en relación al la longitud o tiempo que demore la ráfaga del canál, como es el caso de Código de Redundancia Cíclica que veremos mas adelante.

2. Tratamiento

El tratamiento de errores  tiene un par de posibilidades que no siempre se usan en conjunto.

Detección de Errores

Se puede detectar el error y descartar la trama o gestionar un reenvío o intentar recuperar la trama original con la información redundante si es que existe.

Corrección de Errores.

La corrección de errores se puede implementar a partir de la Detección del Error. Si hay redundancia suficiente se puede recuperar la información completa sin errores y si no se puede gestionar la retransmisión.


3. Bit de Paridad ( código Lineal)

El esquema más sencillo para detectar errores consiste en añadir un bit de paridad al final de cada bloque de datos. Un ejemplo típico es la transmisión de caracteres en la que se añade un bit de paridad por cada carácter de 7 bits. El valor de este bit se determina de tal forma que el carácter resultante tenga un número impar de unos (paridad impar) o un número par (paridad par). Esto se mencionó cuando vimos transmisión serie Asincrónica.


Bit de Paridad por Trama

El bit de paridad para cada paquete de datos se calcula antes de que se transmitan los datos. A continuación se muestran ejemplos de cómo se calcularía un bit de paridad utilizando configuraciones de paridad par e impar.

Se puede elegir paridad par, en ese caso la cantidad se agrega el bit 1 para que la cantidad de 1s sea par. Si se elige paridad imprar se agrega el bit 1 para que la cantidad de 1s sea impar.

Este método tiene sus limitaciones, al igual que se vió en transmisión serie asíncrona, si se produce un cambio de un par de bits, esto no sería detectado por este método.

Bit de Paridad por Bloque

Esto se conoce como bit de paridad horizontal y vertical o Paridad Cruzada. Sucede que en algunos sistemas se almacenan los bits a transmitir en forma de matriz. Entonces las columnas generan una fila de paridad y las filas generan una columna de paridad.
En este escenario podemos detectar el cambio de un bit, detectando la fila y columna en donde se produjo el error de paridad.

Ejemplo de un error y recuperación de Datos en Paridad por Bloque.



4. Comprobación de Redundancia Cíclica.

 

¿Que es CRC?

El núcleo de la verificación CRC es implementar la operación de división sin pedir prestado.

Aritmética módulo 2

La aritmética módulo 2 hace uso de sumas binarias sin acarreo, lo cual es exactamente igual que la operación lógica exclusive-OR. La operación de resta binaria sin acarreos es también igual que la operación lógica exclusive-OR. Por ejemplo:


El siguiente es un ejemplo para ilustrar cómo implementar la verificación CRC.

Para mostrar como funciona, vamos a hacerlo en forma de Polinomio.
Para ello representamos una secuencia de 0s y 1s como un Polinomio, por ejemplo:

101101  => a5 25 + a4 24 + a3 23+ a2 22 + a1 21 + ao 20   reemplazando cada a por el bit que corresponde 

101101  => 1 25 + 0 24 + 1 23+ 1 22 + 0 21 + 1 20  

101101  => 1. 32 + 0 . 16+ 1. 8 + 1. 4 + 0. 2 + 1.1  

Podemos ver que no es mas que el Polinomio que permite pasar de un número binario a un número decimal.

Justificación del CRC

Esto es lo que usaremos , esta forma de presentación de un Polinomio para justificar el uso de CRC para Detección de errores en la transmisión.

T / P = Q + R/P  (1)

T : trama de n bits a transmitir.
P: Polinomio Estandar de orden k
Q: Parte Entera de la División de Polinomios, ver que el Orden del Polinomo es menor que el orden de R o sea k+1
R: Resto de la división de Polinomios. k-1

Para transmitir , se  desplaza T en un orden que permita poner al final el Resto, esto sería como concatenar el Resto a continuación de T. En forma binaria eso se hace multiplicando T por el orden n-k.

T . 2 n-k + R =M  => esto es lo que transmito

M :mensaje con k bits de datos, correspondientes con los primeros k bits de T.

En el receptor divido nuevamente por el MISMO polinómio.

M / P = (T . 2 n-k + R)/P = T/P  . 2 n-k  + R/P  por (1)

Q + R/P + R/P  = Q + R/P + R/P 

Si la  suma   fuera una or exclusiva y si los sumandos R/P son iguales, esta suma da CERO, lo que implicaría que lo transmitido y lo recibido coinciden!!. Este es el principio del Código de Redundancia Cíclica.

Polinomios de Uso Frecuente.

Suelen usarse alguno de estos cuatro polinomios, los mismos son definidos en un Standar.


Observación: El método NO es de cifrado.

A menudo se piensa que si, cuando llega un mensaje, este y su CRC coinciden, quiere decir que el mensaje no ha podido ser alterado durante su transmisión, aunque se haya transmitido por un canal abierto.  Esta suposición es falsa porque CRC es un mal método de cifrado de datos. De hecho, el CRC no se trata realmente de un método de cifrado, lo que realmente hace es utilizarse para el control de integridad de datos, pero en algunos casos se supone que se utilizarán para el cifrado.

Librería en C que permite hacer un cálculo de CRC

Implementación Electrónica

Esto sería:





5. Ejemplo de Cálculo de CRC

Obtenido del Stalling.

Ejemplo 6.6.

La arquitectura de este circuito se explica mejor considerando un caso particu- lar, como el ejemplo que se muestra en la Figura 6.5. En este ejemplo se usa:}

 Datos D=1010001101 =>  D(X) = X9  +  X + X3  + X2  + 1

Divisor P = 110101 => P(X)=X5 + X4 + X2 + 1

definidas anteriormente.

En la Figura  se muestra la realización del registro de desplazamiento. El proceso co- mienza con la puesta a cero de todo el registro (todo ceros). El mensaje, o dividendo, se intro- duce a continuación, bit a bit, comenzado por el bit más significativo. La Figura 6.5b es una tabla que muestra el funcionamiento paso a paso por cada bit de entrada. Cada fila de la tabla muestra los valores almacenados en los cinco elementos de memoria del registro de desplaza- miento. Las filas muestran, además, los valores que aparecerán en las salidas de los tres circui- tos exclusive-OR. Finalmente, en cada columna se muestra el valor del siguiente bit de entrada, disponible para el siguiente paso.

Nótese que la operación exclusive-or afectará a C4, C2 y C0 en el siguiente desplazamiento. Esto es idéntico al procedimiento de división binaria mencionado anteriormente. El procedi- miento continúa para todos los bits del mensaje. Para generar la salida se usan dos conmutado- res. Los bits correspondientes a los datos de entrada se introducen poniendo los dos conmutado- res a la posición A. A resultas, tras 10 pasos, los bits de entrada se introducirán en el registro de desplazamiento, a la vez que serán generados a la salida. Tras proceder el último bit, el registro de desplazamiento contendrá el resto (la FCS) (mostrado en cajas sombreadas). Tan pronto co- mo el último bit de datos entra en el registro de desplazamiento, los dos conmutadores se ponen en la posición B. Esto causa dos efectos:

1. Todas las puertas exclusive-or se convierten en simples elementos de paso, es decir, no cambia ningún bit.

2. Al seguir desplazando el registro, se generarán los 5 bits correspondientes a la CRC.

En el receptor se utiliza la misma lógica. Cada bit de un bloque de M se introducirá en el regis- tro de desplazamiento. Si no ha habido errores, el registro de desplazamiento debería contener el patrón de bits R al final de M. Los bits transmitidos de R empiezan a llegar y el efecto consis- tirá en que, cuando concluya la recepción, el registro debe contener todas las posiciones igual a cero.





6. Código de Hamming ( código Lineal)

En informática, el código de Hamming es un código detector y corrector de errores que lleva el nombre de su inventor, Richard Hamming. En los datos codificados en Hamming se pueden detectar errores en un bit y corregirlos, sin embargo no se distingue entre errores de dos bits y de un bit (para lo que se usa Hamming extendido). Esto representa una mejora respecto a los códigos con bit de paridad, que pueden detectar errores en solo un bit, pero no pueden corregirlo.

Vamos a definir un concepto a utilizar en este capítulo.

Se define distancia de Hamming d(v1 ,  v2) entre dos palabras de n bits al número de bits en el que v1  y  v2 difieren.

Por Ejemplo:


Esta distancia de Hamming me indica una medida de fortaleza del código,

La idea es agregar un conjunto de bits, con esto las secuencias de bits autorizadas no son todas, se eligen algunas. Las que se eligen son las que tengan muchos una distancia de Hamming lo mas grande posible.

Ver que si se agregan mas bits, se logra una mayor distancia...pero aumenta la cantida de bits a enviar.

En el Stalling se muestra un ejemplo. No es propósito de la materia profundizar en esto, solamente entender y saber el concepto.


7. Código Cíclico Reed-Solomon (informativo)

Reed-Solomon es un código cíclico no binario y constituye una subclase de los códigos BCH. Los códigos cíclicos son una subclase de los códigos de bloque estándar de detección y corrección de errores que protege la información contra errores en los datos transmitidos sobre un canal de comunicaciones. Este tipo de código pertenece a la categoría FEC (Forward Error Correction), es decir, corrige los datos alterados en el receptor y para ello utiliza unos bits adicionales que permiten esta recuperación a posteriori.

El mecanismo permite la corrección en el receptor sin retransmisión de la información original. Se utiliza en sistemas sin retorno o sistemas en tiempo real donde no se puede esperar a la retransmisión para mostrar los datos.

Usa la transformada discreta de Fourier.

Los códigos QR contienen una redundancia de información basada en la corrección de errores Reed-Solomon que permite la personalización de los códigos QR, ya sea con colores o con imágenes y con textos incrustados.

Este código se encuentra actualmente aplicado sondas espaciales , la sonda Galileo a Júpiter en 1989, la sonda Magallanes a Venus ese mismo año o la sonda Ulises al Sol en 1990.

El tratamiento de este tema escapa a la materia y se incluye a los efectos de dejar claro que hay una serie de métodos de detección y correción de errores que no son vistos en esta asignatura.