Detección y Corrección de Errores

55
Detección y Corrección de Errores; Generalidades en Códigos de Bloque Juan David Valenzuela Gerardo López Arnold Alfonso Fundamentos de Telecomunicaciones Ingeniería Electrónica. Detección y corrección de errores 1

Transcript of Detección y Corrección de Errores

Page 1: Detección y Corrección de Errores

Detección y Corrección de

Errores; Generalidades en

Códigos de Bloque

Juan David Valenzuela

Gerardo López

Arnold Alfonso

Fundamentos de Telecomunicaciones

Ingeniería Electrónica. Detección y corrección de errores

1

Page 2: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

2

Un sistema de comunicación está expuesto a la ocurrencia de errores durante la transmisión e interpretación de los datos, en especial por problemas de ruido que afectan a las diversas partes del sistema, principalmente a los canales de transmisión.

Tipos de errores:

Distorsión, atenuación, limitación del ancho de banda, ruido, interferencia, etc., influyen en el deterioro de una señal eléctrica al viajar por el canal de comunicaciones. Si la señal transporta datos digitales, los cambios pueden modificar el significado de los datos. Los errores posibles son:

• Error de bit:

Este término significa que únicamente un bit de una unidad de datos determinada (byte, carácter, paquete, etc.) cambia de 0 a 1 o de 1 a 0.

Page 3: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

3

• Error de ráfaga:

Significa que dos o más bits de la unidad de datos han sido alterados. Es importante notar que los errores de ráfaga no implican que se afecten bits consecutivos. La siguiente figura muestra un ejemplo de error de ráfaga:

En este caso, la longitud de la ráfaga sería 5, porque es la distancia en bits desde el primer bit erróneo hasta el último, donde dentro de la ráfaga puede haber bits correctos y/o erróneos.

Page 4: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

4

Es necesario entonces, desarrollar e implementar procedimientos para el control de estos errores. La forma de controlar los errores consiste en enviar datos adicionales al contenido del mensaje. Aunque se logra una mayor protección de los datos del mensaje contra errores, mayor es la cantidad de bits adicionales que no llevan información, por lo que la eficiencia del proceso de transmisión disminuye.

Page 5: Detección y Corrección de Errores

Detección de errores La detección de errores se basa en el siguiente principio: Dada una secuencia, se añaden bits adicionales por parte del transmisor para formar un código que tenga capacidad de detectar errores. Este código se calculará en función de los otros símbolos que se vayan a transmitir. El receptor realizará el mismo cálculo y comparará los dos resultados. Se detecta un error si y sólo si, los dos resultados no coinciden.

Las técnicas más comunes de detección de errores son:

• Redundancia

• Codificación de cuenta exacta

• Control de paridad

– Chequeo de paridad vertical y horizontal (VRC, LRC)

Ingeniería Electrónica. Detección y corrección de errores

5

Page 6: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

6

– Chequeo de paridad bidimensional

– Cíclica o entrelazada

• Código polinomial (CRC)

Redundancia

La redundancia significa transmitir cada carácter dos o tres veces, o si se emplea a nivel de mensaje repetir el mensaje dos o tres veces, en caso que las versiones difieran habrá ocurrido un error en la transmisión.

Codificación de cuenta exacta

Con la codificación de cuenta exacta, el número de unos en cada caracter debe mantenerse constante. Tal es el caso del código de cuenta exacta ARQ que se muestra en la siguiente tabla :

Page 7: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

7

Page 8: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

8

Control de paridad vertical (VRC)

Este método, como todos los que siguen, hace uso del agregado de bits de control.

Se trata de la técnica más simple usada en los sistemas de comunicación digitales (Redes Digitales, Comunicaciones de Datos) y es aplicable a nivel de byte ya que su uso está directamente relacionado con el código ASCII.

Como se recordará, el código ASCII utiliza 7 bits para representar los datos, lo que da lugar a 128 combinaciones distintas. Si se define un carácter con 8 bits (un byte) quedará un bit libre para control, ese bit se denomina bit de paridad y se puede escoger de dos formas:

• Paridad par

• Paridad impar

Page 9: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

9

En el extremo de transmisión el codificador de canal calcula el bit de paridad y lo adosa a los 7 bits de datos. El decodificador de canal recibe los 8 bits de datos, calcula la paridad y la compara con el criterio utilizado, tal como lo describe la siguiente figura:

Page 10: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

10

El siguiente diagrama muestra un circuito típico para la generación y/o comprobación de paridad:

Page 11: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

11

Criterios para la paridad

• Bit de paridad par:

– Numero total de ‘1’ par: bit de paridad igual a 0

– Numero total de ‘1’ impar: bit de paridad igual a 1

• Bit de paridad impar:

– Numero total de ‘1’ par: bit de paridad igual a 1

– Numero total de ‘1’ impar: bit de paridad igual a 0

Ejemplo:

Información Criterio Código

0 1 1 1 0 0 1 Paridad par 0 0 1 1 1 0 0 1

0 1 1 1 0 0 1 Paridad impar 1 0 1 1 1 0 0 1

Page 12: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

12

Control de paridad longitudinal (LRC)

Utiliza el mismo esquema anterior (en vez de estar orientado al caracter lo está al mensaje), con la diferencia que el control de la paridad se realiza en cada una de las posiciones correspondientes de los bits del grupo de caracteres de datos, con lo que se forma un bloque de bits de paridad o caracter de paridad que se agregan como bits redundantes a la cadena de caracteres de datos para el control de error.

Al finalizar el bloque de N caracteres, se transmitirá un carácter completo, el carácter así construido se denomina BCC (Block Check Character), también se le denomina BCS (Block Character Sequence).

Page 13: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

13

Ejemplo:

Supongamos que transmitimos 3 caracteres, cada uno con su bit de paridad y necesitamos calcular el carácter BCC que debemos transmitir con su bit de paridad. En la tabla siguiente, se muestra este cálculo, en donde se ha utilizado paridad par para cada caracter y paridad impar para el cálculo del BCC.

En consecuencia el caracter BCC sería 01000010 y en este caso se transmitiría la secuencia: 01100011 01101010 10110100 01000010

P B6 B5 B4 B3 B2 B1 B0

0 1 1 0 0 0 1 1 Caracter 1

0 1 1 0 1 0 1 0 Caracter 2

1 0 1 1 0 1 0 0 Caracter 3

0 1 0 0 0 0 1 0 BCC

Page 14: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

14

Control de paridad bidimensional (VRC/LRC)

La información se coloca en grupos de 𝑚 bloques de longitud fija 𝑘 como matriz 𝑘 × 𝑚 o 𝑚 × 𝑘, para luego aplicar el control de paridad VRC y LRC y determinar en qué posición de la cadena de datos se encuentra el bit erróneo.

1 2 … k

1

2

...

m Bits de

VRC

Bits de

LRC

Page 15: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

15

Ejemplo:

Se quiere codificar la siguiente palabra mediante el control de paridad bidimensional:

101111100001101110110111010000

- Se divide en 5 bloques de 6 dígitos de longitud y se colocan formando una matriz.

Bytes a transmitir:

D0 D1 D2 D3 D4 D5

B0 1 0 1 1 1 1

B1 1 0 0 0 0 1

B2 1 0 1 1 1 0

B3 1 1 0 1 1 1

B4 0 1 0 0 0 0

Page 16: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

16

Empleando el método de control de paridad bidimensional y con paridad par, el bloque a transmitir queda de la siguiente forma:

D0 D1 D2 D3 D4 D5 LRC

B0 1 0 1 1 1 1 1

B1 1 0 0 0 0 1 0

B2 1 0 1 1 1 0 0

B3 1 1 0 1 1 1 1

B4 0 1 0 0 0 0 1

VRC 0 0 0 1 1 1 1

Page 17: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

17

Como consecuencia la secuencia en el receptor sería la siguiente:

101111110000101011100110111101000010001111

Si se produjera un error en un bit cualquiera, este afectaría al bit de paridad horizontal situado en la misma fila y al bit de paridad vertical situado en la misma columna, lo que facilitaría la detección de dicho error para su posterior corrección.

D0 D1 D2 D3 D4 D5 LRC

B0 1 0 1 1 1 1 1

B1 1 0 1 0 0 1 0

B2 1 0 1 1 1 0 0

B3 1 1 0 1 1 1 1

B4 0 1 0 0 0 0 1

VRC 0 0 0 1 1 1 1

Page 18: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

18

Como los métodos anteriores este presenta igualmente cierta limitación, en donde el uso simultáneo de VRC y LRC hace que pasen imperceptibles errores en un número par de bits que ocupan iguales posiciones en un número par de caracteres.

D0 D1 D2 D3 D4 D5 LRC

B0 1 1 1 1 0 1 1

B1 1 0 0 0 0 1 0

B2 1 1 1 1 0 0 0

B3 1 1 0 1 1 1 1

B4 0 1 0 0 0 0 1

VRC 0 0 0 1 1 1 1

Page 19: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

19

Control de paridad cíclica o entrelazada

Es un procedimiento que proporciona un nivel de detección de los errores de mayor calidad, requiere de dos bits adicionales para el control de la paridad.

Ejemplo:

– Caracter transmitido: 010101

– Generación de la paridad cíclica

utilizando paridad par:

X 0

Bits

de

datos

1 X

X 0

1 X

X 0

1 X

0 BP1

1 BP2

Page 20: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

20

Código de redundancia cíclica (CRC)

Conocido también como código polinomial, permite la verificación de todos los bits del mensaje mediante la utilización de un algoritmo matemático.

El CRC se usa generalmente con códigos de 8 bits, tales como EBCDIC (Extended Binary Coded Decimal Interchange Code) o códigos de 7 bits como el código ASCII, cuando no se usa paridad. Dado un bloque o mensaje de k-BITS, el transmisor genera una secuencia de n-BITS denominada secuencia de comprobación de la trama FCS (Frame Check Secuence), de tal manera que la trama resultante con n+ k BITS sea divisible por algún número predeterminado. El receptor dividirá la trama recibida por ese número y si no hay residuo en la división se interpreta que el mensaje llegó sin error.

Page 21: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

21

Los polinomios generadores más usados son:

CRC-12: x12 + x11 + x3 + x2 + x + 1. Usado para transmitir flujos de 6 bits, con 12 de redundancia.

CRC-16: x16 + x15 + x2 + 1. Para flujos de 8 bits, con 16 de redundancia. Usado en USA, principalmente.

CRC-CCITT: x16 + x12 + x5 + 1. Para flujos de 8 bits, con 16 de redundancia. Usado en Europa, principalmente.

CRC-32: x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1. Da una protección extra sobre la que dan los CRC de 16 bits, que suelen dar la suficiente. Se emplea por el comité de estándares de redes locales (IEEE-802) y en algunas aplicaciones del Departamento de Defensa de USA.

Page 22: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

22

Los distintos polinomios generadores son capaces de detectar entre otros:

– Errores simples: 100%

– Errores dobles: 100%

– Errores en un número impar de bits: 100%

– Errores en ráfagas:

100% para ráfagas menores a 17 bits.

99,997 % para ráfagas de hasta 17 bits.

99,998% para ráfagas mayores a 17 bits.

Page 23: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

23

Forma de ejecutar el procedimiento en el emisor:

1. Se define un polinomio 𝑀 𝑥 de grado n con los bits del mensaje

2. Se define el polinomio generador 𝐺 𝑥 de grado r

3. Añadir r bits 0 al extremo de menor orden del mensaje. El polinomio correspondiente será 𝑀′ 𝑥 = 𝑋𝑟 ∗ 𝑀(𝑥)

4. El grado n del polinomio 𝑀 𝑥 debe ser: 𝑛 ≫ 𝑟

5. Se divide el nuevo polinomio formado 𝑀′ 𝑥 entre el polinomio generador 𝐺 𝑥 :

𝑀′ 𝑥

𝐺(𝑥)= 𝐶 𝑥 +

𝑅 𝑥

𝐺(𝑥)

𝐶 𝑥 polinomio cociente

R 𝑥 polinomio resto

Page 24: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

24

6. El polinomio resto siempre debe tener un numero de bits igual o menor al grado del polinomio generador.

7. Finalmente se procede a obtener el polinomio de transmisión 𝑇 𝑥 , cuyos coeficientes (unos y ceros) sustituyen el mensaje a transmitir: 𝑇 𝑥 = 𝑀′ 𝑥 + 𝑅(𝑥)

Forma de ejecutar el procedimiento en el receptor:

En el receptor el dato transmitido 𝑇 𝑥 se divide por el mismo polinomio generador establecido en el emisor

𝑇 𝑥

𝐺(𝑥)=

𝑀′ 𝑥

𝐺(𝑥)+

𝑅 𝑥

𝐺 𝑥

𝑀′ 𝑥

𝐺(𝑥)= 𝑄 𝑥 +

𝑅 𝑥

𝐺 𝑥

Page 25: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

25

𝑇 𝑥

𝐺(𝑥)= 𝑄 𝑥 +

𝑅 𝑥

𝐺(𝑥)+

𝑅 𝑥

𝐺 𝑥= 𝑄 𝑥 +

1 + 1 𝑅 𝑥

𝐺(𝑥)

Como se esta utilizando la aritmética modulo 2, la adición 1 + 1 = 0, por tanto

𝑇 𝑥

𝐺(𝑥)= 𝑄(𝑥)

Page 26: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

26

Presentación de la técnica

• Objetivo del procedimiento: Añadir r bits a un mensaje de k bits, de forma tal que el polinomio resultante, T(x), correspondiente a los 𝑘 + 𝑟 bits, sea divisible por G(x)

• El receptor verifica si T(x) es divisible por G(x), y si no lo es; existe un error en la transmisión.

Page 27: Detección y Corrección de Errores

Corrección de errores Ingeniería Electrónica. Detección y corrección de errores

27

Page 28: Detección y Corrección de Errores

Codificación de cuenta Exacta.

• En esta técnica de codificación de cuenta exacta, lo que se hace es

configurar el código de manera que cada carácter esté representado

por una secuencia de unos y ceros que contiene un número fijo de

unos. En nuestro caso el Código de cuenta exacta ARQ tres de ellos.

Ingeniería Electrónica. Detección y corrección de errores

28

Page 29: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

29

Page 30: Detección y Corrección de Errores

Sustitución de símbolos

• Se diseñó para utilizarse cuando haya un ser humano en la terminal de

recepción. Analiza los datos recibidos y toma decisiones sobre su integridad.

En la sustitución de símbolos si se recibe un carácter presuntamente

equivocado se sustituye por un carácter que exige al operador que lo vuelva

a interpretar.

• Ejemplo:

Si el mensaje “documento” tuviera un error en el primer carácter, se

sustituye la "d" por "%" y se le muestra al operador el mensaje

“%ocumento”. En este caso por contexto se puede recuperar el contenido

de ese carácter y es innecesaria la retransmisión pero si el mensaje fuera

“&%,000.00” el operador no puede definir cual es el carácter equivocado y

se pide la retransmisión del mensaje.

Ingeniería Electrónica. Detección y corrección de errores

30

Page 31: Detección y Corrección de Errores

ARQ, Requerimiento automático de repetición.

• Se trata de sistemas de corrección hacia atrás, en estos sistemas la

estación receptora que ha detectado la recepción de caracteres ó

bloques con errores procede a pedir a la estación emisora que repita

lo recibido con error. Debe observarse que esto requiere dar al

sistema de comunicación algún medio para facilitar el diálogo entre

la estación emisora y la estación receptora, de donde se deduce que

el extremo receptor abandona el papel pasivo en la comunicación

para participar en forma activa en el proceso.

Ingeniería Electrónica. Detección y corrección de errores

31

Page 32: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

32

Existen dos estrategias principales en el diseño de los sistemas de corrección hacia atrás:

• Pare y espere (stop and wait ARQ).

• Envío continuo (Continuos ARQ).

Estas suponen el uso de estructuras de información llamadas bloques ó tramas, ya se trate de bloques de bits con bit de paridad, ó un conjunto de bits con CRC, en cualquier caso la trama se envía como un todo.

Page 33: Detección y Corrección de Errores

Pare y espere.

• Cuando se hace uso de este método pare y espere, lo que ocurre es

precisamente eso, las tramas se van intercambiando una a una.

Cuando el receptor recibe una trama procede a validarla, si resulta

que no contiene errores envía una señal de confirmación hacia el

emisor, esta señal se denomina ACK (acrónimo del término ingles

acknowledge: confirmación). Por el contrario, si hay errores se envía

hacia el emisor una señal de recepción errónea denominada NACK

(por negative acknowledge).

Ingeniería Electrónica. Detección y corrección de errores

33

Page 34: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

34

Mientras espera la recepción de ACK ó de NACK el emisor mantiene el mensaje enviado en un buffer, cuando recibe NACK vuelve a enviar el contenido del buffer, si por el contrario recibe un ACK copia en el buffer la trama ó bloque siguiente y procede a enviarla.

En muchos casos, y mientras espera la llegada de NACK ó ACK, el emisor arranca un temporizador. El temporizador se detendrá al llegar cualquiera de las señales de confirmación, si el temporizador llega a su término sin recibirlas pueden ocurrir dos cosas: la primera consiste en abortar el proceso de comunicación dado que no hay respuesta del receptor, la segunda en enviar nuevamente la trama sin confirmar y arrancar nuevamente el temporizador. Si esta situación se repite varias veces el sistema aborta la comunicación.

Page 35: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

35

En el receptor también se arranca un temporizador ya sea al recibir la trama o al enviar una señal ACK, al vencer este tiempo el receptor procede a reenviar una señal de ACK ú otra predeterminada, si se repite esto una cierto número de veces se procede a abortar la comunicación pues no se recibe respuesta del emisor.

Generalmente tanto el receptor como el emisor dispondrán de un contador para determinar el número de veces que se ha intentado retransmitir una trama sin éxito. De alcanzar el contador el valor prefijado se procede a abortar la comunicación. Normalmente esta situación es transitoria y puede deberse a picos de tráfico, de persistir señalan anomalías en los equipos

Page 36: Detección y Corrección de Errores

Envío continuo (Continuos ARQ).

• El método de envío y espera tiene inconveniente de reducir el tiempo

de utilización efectiva de los canales de comunicación dado que cada

mensaje debe ser confirmado individualmente y todo se paraliza hasta

que ello ocurre. Para corregir esto los métodos de envío continuo

utilizan el mecanismo de enviar continuamente la información sin

esperar confirmación, cada bloque ó trama contiene un número (ó

varios) de secuencia que la identifica. Existen diversos métodos para

enviar al ACK ó el NACK, ellos son:

Ingeniería Electrónica. Detección y corrección de errores

36

Page 37: Detección y Corrección de Errores

Ingeniería Electrónica. Detección y corrección de errores

37

Variante retroceda 2 (GO BACK 2).

Mientras se envía un mensaje se está confirmando el anterior por otra vía

Variante retroceda n.

Previamente se conviene en un número “m” que dará el número de mensajes al cabo de los cuales se va a enviar respuesta ACK ó NACK. En caso de error en el mensaje x, se pide que se retransmita la secuencia a partir de x retrocediendo n = m - x. La variante se denomina “ventana fija” y también rechazo no selectivo pues se procede a enviar la trama defectuosa y todas las pendientes de conformación. Es un método usado en protocolos orientados al bit como HDLC .

Rechazo selectivo.

se reenvía solamente la trama defectuosa ,se denomina también “ventana deslizante”

Page 38: Detección y Corrección de Errores

Corrección de errores hacia

adelante: FEC

(Forward Error Correction).

• Se basan en la idea de reconstruir la información deteriorada por los

errores, obviamente la reconstrucción tiene lugar en el equipo

receptor, para ello deben emplearse en los códigos un gran número

de bits lo que disminuye la efectividad del código.Por lo tanto

debemos hablar de codificación [,existen varios esquemas que

pueden clasificarse en códigos de bloque y códigos de árbol:

Ingeniería Electrónica. Detección y corrección de errores

38

Page 39: Detección y Corrección de Errores

CÓDIGO HAMMING

Es un código que se utiliza en la detección y corrección de errores que se producen en la transmisión de códigos binarios, la palabra de código se conforma por los bits de comprobación y los bits de información.

Ingeniería Electrónica. Detección y corrección de errores

39

Page 40: Detección y Corrección de Errores

CONCEPTOS BÁSICOS: Para poder continuar con el desarrollo del código es necesario tener en cuenta algunas generalidades y conceptos básicos:

• Código binario: Es una representación unívoca de las cantidades, de tal forma que a cada una de éstas se le asigna una combinación de símbolos binarios.

• Distancia entre dos combinaciones binarias: Viene dada por el número de bits que hay que cambiar en una de ellas para obtener la otra.

• Distancia mínima de un código: Es la menor de las distancias entre dos combinaciones binarias cualesquiera pertenecientes a dicho código.

Ingeniería Electrónica. Detección y corrección de errores

40

Page 41: Detección y Corrección de Errores

DISTANCIA DE HAMMING

El código Hamming se genera a partir de una distancia mínima de 3, ya que una distancia de 1 o 2 es inconveniente para poder generar un código para detectar un error.

La distancia mínima de Hamming está dada por la siguiente ecuación:

𝐷𝑚 = 2𝑋 + 1

Ingeniería Electrónica. Detección y corrección de errores

41

Page 42: Detección y Corrección de Errores

Donde 𝐷𝑚 es la distancia mínima de un código para permitir la corrección de datos y X es las líneas de datos.

Si se tuviese una distancia de 1 no tendríamos valores para saber si hay o no un error. Si se tienen una distancia de 2 se podría lograr un sistema de corrección de error con un bit de paridad pero el problema que esto lleva es que un sistema con distancia 2 puede tener datos erróneos que pueden pasar como datos correctos. Con la distancia de 3 se tiene que los códigos no van a tener datos o resultados similares por ende se puede detectar el error y se puede desarrollar un sistema para su corrección como el Hamming

Ingeniería Electrónica. Detección y corrección de errores

42

Page 43: Detección y Corrección de Errores

VARIABLES PARA GENERACIÓN

HAMMING Para la generación del código Hamming se deben tener en cuenta tres variables que mencionaremos a continuación:

n: número de bits del código original que se pretende transmitir.

p: número de bits de paridad par generados en el transmisor, o sea, número de líneas que añadimos al código inicial.

c: número de bits detectores de paridad par generados por el receptor.

El valor de p = c, ya que los bits de paridad generados tanto en el transmisor como en el receptor debe ser la misma.

Ingeniería Electrónica. Detección y corrección de errores

43

Page 44: Detección y Corrección de Errores

El número de combinaciones que se pueden formar con los c bits detectores de paridad tiene que ser mayor o igual que el número de líneas del código original (n) más el número de líneas de paridad añadidas (p) más uno, este último para contemplar el caso de no error.

2𝑐 ≥ 𝑛 + 𝑝 + 1

Esta ecuación nos muestra que existen unas combinaciones, estas no pueden ser asignadas de forma aleatoria a un evento, para asignar estas combinaciones a un evento específico este debe estar en uno de los tres grupos diferenciados.

Ingeniería Electrónica. Detección y corrección de errores

44

Page 45: Detección y Corrección de Errores

1. Combinación asignada a la situación en que no haya error en la transmisión.

2. Combinaciones asignadas a los bits de paridad generados en el transmisor.

3. Combinaciones asignadas a los bits de datos del código original.

Podemos tener un manejo de esta ecuación para poder obtener la cantidad mínima de bits de información que nosotros podemos enviar.

Ingeniería Electrónica. Detección y corrección de errores

45

Page 46: Detección y Corrección de Errores

Si se despeja n 𝑐 = 2𝑐 − 𝑐 − 1

Teniendo en cuenta que p = c

Si contamos con los valores de bits de paridad podemos encontrar los bits de información que se pueden manejar.

Para obtener el número de bits total de la cadena del mensaje (s) se debe realizar la siguiente operación:

𝑠 = 2𝑐 − 1

Ingeniería Electrónica. Detección y corrección de errores

46

Page 47: Detección y Corrección de Errores

Códigos de bloque.

Un código de bloques convierte k bits de entrada en n bits de salida con n>k, este es un código sin memoria, veamos algunos ejemplos:

• Códigos de Hamming.

En 1950 R. W. Hamming, de los Laboratorios Bell, comenzó a utilizar el concepto de distancia, que se define como el número de posiciones en las que dos dígitos binarios de igual longitud defieren. Por ejemplo en 10010 y 01011 la distancia de Hamming es 3, pues difieren en 3 de las 5 posiciones.

Ingeniería Electrónica. Detección y corrección de errores

47

Page 48: Detección y Corrección de Errores

La idea entonces fue establecer un set de caracteres en el que todos tienen entre sí la misma distancia de Hamming, luego en el extremo receptor se verifica cada carácter recibido para determinar si es uno de los caracteres válidos, si no lo es se busca el carácter que tenga la menor distancia de Hamming con este y se le asigna ese valor como “correcto”.

Los códigos de Hamming a propuesta de este se mejoraron agregando a los bits de información una serie de bits de comprobación, a partir de estos últimos se puede detectar la posición de bits erróneos y corregirlos.

Ingeniería Electrónica. Detección y corrección de errores

48

Page 49: Detección y Corrección de Errores

Como ejemplo veremos uno de estos códigos de Hamming. Supongamos que tenemos una palabra de información de 8 bits, D1 a D8, agregamos a ella cuatro bits de comprobación, C1 a C4 con la siguiente estructura:

Donde C1 comprueba con paridad par D1, D2, D4, D5 y D7. C2 se usa para D1, D3, D4 y D6, análogamente se usan C3 y C4, lo que se describe en la tabla siguiente:

Ingeniería Electrónica. Detección y corrección de errores

49

Page 50: Detección y Corrección de Errores

Cuando se envían los datos se calculan C1, C2, C3 y C4 y se van comparando los

valores recibidos empezando con C4 y terminando con C1, si los valores recibidos y

los calculados coinciden se asigna a la comprobación el valor 0 y si difieren se asigna

1. Si todas las comprobaciones dan resultado positivo tendremos un valor 0000 para

la secuencia de comprobación. Pero si ha habido un error alguna de las

comprobaciones fallará. Supongamos que se ha producido un error en D3, al realizar

las comprobaciones de paridad C1 y C4 darán 0 mientras que C2 y C3 darán 1,

tendremos una secuencia de comprobación 0110 que representa en binario 6 que es la

posición de D3 el bit erróneo..!!!, solo queda corregirlo.

Ingeniería Electrónica. Detección y corrección de errores

50

Page 51: Detección y Corrección de Errores

Otros códigos de bloque.

Además de los códigos de Hamming existen muchos otros tipos de

códigos de bloque, ejemplos de estos códigos son Bose-Chaudhuri-

Hocquenhem(BCH), Reed-Solomon, Reed-Müller y Golay.

Un tipo de código Reed-Solomon es muy utilizado en los

reproductores de CDs y soporta hasta 100 Mbps. Tiene una

eficiencia de 7/8 ó 15/16, una demora típica de 2000 ó más

duraciones de bits y corrige bloques de hasta 100 bits.

Reed-Solomon son un subconjunto lineal de los códigos de bloque

BCH y se especifican como RS (n,k) donde n es la longitud de las

palábras de código y k es la longitud de los datos, n-k es el número

de bits adicionales. Así el estándar tiene 255 bits en la palábra de

código, con 239 bits de datos y 16 bits adicionales para implementar

la detección y corrección de errores.

Ingeniería Electrónica. Detección y corrección de errores

51

Page 52: Detección y Corrección de Errores

Tanto los códigos BCH como los subconjuntos RS mejoran el BER sustancialmente tal como lo muestra la Figura que da las BER en función de la relación señal ruido para enlaces ópticos de 40Gbps.

Ingeniería Electrónica. Detección y corrección de errores

52

Page 53: Detección y Corrección de Errores

• Códigos de árbol.

Un código de árbol es producido por un codificador con memoria, a este grupo pertenecen los códigos convolucionales.

• Códigos Convolucionales

Mediante la codificación convolucional cada bit de una secuencia es “convolucionado” con uno ó varios bits enviados inmediatamente antes, además, se agrega un bit redundante a cada grupo de bits comparados de esta manera.

Cuando un bit es solo comparado con el que le precede, el número de bits redundantes necesarios para asegurar la decodificación es muy alto, aún cuando la complejidad del procesamiento es minimizada.

Ingeniería Electrónica. Detección y corrección de errores

53

Page 54: Detección y Corrección de Errores

Por el contrario, cuando el bit es comparado con gran número de bits precedentes, el número de bits redundantes es minimizado, pero la complejidad del procesamiento en ambos extremos es alta.

En un codificador convolucional k bits(una trama ó paquete) de entrada son convertidos en n bits de salida(trama de salida) con n>k,la conversión aquí es diferente que en los códigos de bloque ya que el codificador tiene memoria,y la trama de salida depende de las K tramas de entrada anteriores(K>1),K es la "constraint lenght"

Ingeniería Electrónica. Detección y corrección de errores

54

Page 55: Detección y Corrección de Errores

El decodificador tiene como función determinar la secuencia de salida más probable dado un flujo de bits recibido(que pueden contener errores)y sabiendo la codificación empleada. Equivale a comparar la secuencia recibida con todas las secuencias posibles de ese codificador y seleccionar la que más se le acerque según una distancia de Hamming, otro esquema de decodificación es el de Viterbi.

Estos códigos normalmente trabajan hasta 50 Mbps, con una eficiencia de ½, 3/4 ó 7/8, tienen una demora típica de 30 a 1000 duraciones de bit y la secuencia de bits corregidas son inferiores a 20, el estándar V.32 del CCITT usa Trellis Coding y tiene una eficiencia de 4/5.

Ingeniería Electrónica. Detección y corrección de errores

55