Vous êtes sur la page 1sur 10

Universidad Nacional de Quilmes

Universidad Nacional de Quilmes Diplomatura en Ciencia y Tecnología TÉCNICAS DIGITALES CÓDIGOS DETECTORES Y CORRECTORES

Diplomatura en Ciencia y Tecnología

TÉCNICAS DIGITALES

CÓDIGOS DETECTORES Y CORRECTORES DE ERRORES

Códigos con redundancia detectores de errores.

Supongamos que se transmiten datos entre dos medios electrónicos, ya sea por red, un medio inalámbrico, a un equipo remoto, por la red telefónica (módem), o bien, la lectura de una memoria y un ruido electrónico cambie (invierta el valor), entones la lectura sería incorrecta.

Supongamos que se quiere transmitir el código BCD representado en a figura 1, si se invierte un bit la lectura sería la correspondiente a un casillero adyacente en el mapa de Karnaugh (figura 2), ya que como se sabe los datos representados en casilleros adyacentes difieren en un bit.

representados en casilleros adyacentes difieren en un bit. Si el dato a enviar era el 5
representados en casilleros adyacentes difieren en un bit. Si el dato a enviar era el 5
representados en casilleros adyacentes difieren en un bit. Si el dato a enviar era el 5

Si el dato a enviar era el 5 (0101) y se invierte un bit las situaciones posible son:

5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es
5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es
5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es
5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es
5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es
5 (0101) y se invierte un bit las situaciones posible son: a. 1101: la información es

a. 1101: la información es rechazada por no pertenecer al código.

b. 0001: se recibe información errónea, el 1.

c. 0111: se recibe información errónea, el 7.

d. 0100: se recibe información errónea, el 4.

Salvo en el primer caso la información es aceptada pues no se puede detectar el error.

Si bien es lógico pensar que puede haber más de un bit errado, estadísticas reales indican que en este tipo de transmisión de datos la probabilidad de que ocurra un error es muy baja, siendo esta probabilidad casi nula de que en una palabra ocurran dos errores, por este motivo y por el tipo de curso nos limitaremos al estudio de detectar y corregir errores de un bit.

Definiciones:

Se denomina “distancia 1” en un código, cuando si a una palabra válida se le cambia un bit, se obtiene otra palabra válida.

Se denomina “distancia 2” en un código, cuando es necesario cambiar 2 bits a una palabra para pasar a otra válida.

Distancia mínima de un código” es la menor de todas las distancias entre 2 palabras que lo constituyen.

de todas l as distancias entre 2 palabras que lo constituyen. Recopilación y aportes: Ing. Alberto
de todas l as distancias entre 2 palabras que lo constituyen. Recopilación y aportes: Ing. Alberto

Universidad Nacional de Quilmes

Técnicas Digitales

Códigos detectores y correctores de errores

De acuerdo a estas definiciones los códigos de distancia mínima 2 rechazarían cualquier palabra que tenga un error de 1 bit, pues estaríamos ante una palabra fuera de código. Para detectar N bits de error es necesario utilizar códigos con distancia mínima de N+1 bits

Códigos BCD de distancia 2detectores de errores.

Sí modificamos el código BCD Natural agregando un cero o un 1 de modo de formar palabras con un número par de 1 (de esto proviene el nombre de bit de paridad al bit agregado). Como para codificar cada uno de los 10 dígitos decimales 4 bits alcanzan, el 5° bit o bit de paridad no aporta ninguna información, es redundante, los códigos así generados se llaman códigos redundantes.

Veamos como quedan el nuevo cuadro y el mapa de Karnaugh con el agregado del bit de paridad:

y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para
y el mapa de Karnaugh con el agregado del bit de paridad: Como se ve para

Como se ve para pasar de una combinación válida a otra también válida

hay que cambiar por lo menos 2 bits, estamos frente a un código de

distancia 2.

Por ejemplo: si se envía un 4 es decir 01001, se produce un error de

transmisión y se recibe 01011 (*) no es un código válido, la información

será rechazada y en general se pide al transmisor que retransmita el mensaje.

En el álgebra booleana la generación del bit de paridad es la siguiente:

p = b 3

b 2 b 1 b 0
b 2
b 1
b 0

que expresada con compuertas es :

p = b 3 b 2 b 1 b 0 que expresada con compuertas es :
p = b 3 b 2 b 1 b 0 que expresada con compuertas es :

La figura 5 muestra otros 2 códigos de distancia 2 menos utilizados, llamados respectivamente 2 entre 5 y 2 entre 7 también llamado “biquinario”. En estos códigos los pesos no son 8-4-2-1 sino los indicados en el cuadro.

2

Universidad Nacional de Quilmes

Técnicas Digitales

Códigos detectores y correctores de errores

Códigos con redundancia autocorrectores de errores.

El uso de códigos detectores de errores implica un pedido de retransmisión del mensaje, es la forma usual y circuitalmente económica de operar, pero cuando la velocidad cuenta existen códigos que detectan e identifican el bit que se invirtió, que luego con un circuito adecuado se corrige.

En el ejemplo anterior sabemos que el 01011 no es un código válido, pero no podemos saber si proviene del 01001 (4), del 00011 (1) o bien del 01010 (5), pues es imposible detectar cuál fue el bit que se invirtió.

En cambio si utilizamos un código redundante de distancia mínima 3, para ello necesitamos más bits de paridad, las cosas cambian.

Código de Hamming de distancia 3 autocorrector de errores.

Hamming invento un método para aumentar a 3 la distancia mínima en el código redundante que de esta manera no solo detectar si la combinación recibida presenta o no un bit errado y en caso afirmativo determinar la posición del mismo para corregirlo.

Comenzaremos con un repaso del contexto del problema utilizando la nomenclatura utilizada por Hamming para la construcción del código, una I i para representar los bits de información y p i para los bits de paridad. Para una mayor sencillez comenzaremos con un código de 2 bits y 4 palabras que por ejemplo representan los dígitos 0, 1,2 y 3, por lo que los bits de información serán: I 1 y I 2 .

lo que los bits de información serán: I 1 y I 2 . La transmisión simple

La transmisión simple sería: I 1 I 2 , y en la figura 6 se muestra el código a transmitir y su respectivo mapa de Karnaugh.

Como en todo el código la distancia es 1 cualquier diferencia de 1 bit sería una palabra del código y será aceptada a pesar del error.

Como ya hemos visto, para detectar un error de 1 bit basta con agregar un bit de paridad al que llamaremos p 1 .

La transmisión simple sería: p 1 I 2 I 3 , y en la figura 7 se muestra el código a transmitir y su respectivo mapa de Karnaugh.

el código a transmitir y su respectivo mapa de Karnaugh. Como la distancia entre palabras es
el código a transmitir y su respectivo mapa de Karnaugh. Como la distancia entre palabras es
el código a transmitir y su respectivo mapa de Karnaugh. Como la distancia entre palabras es

Como la distancia entre palabras es 2, cualquier diferencia de 1 bit esta fuera de código, pero es imposible detectar cuál es la palabra efectivamente transmitida pues cada casillero en banco tiene como adyacente a más de una palabra valida como se ve en

a figura 7.

La distancia mínima que debe existir para detectar el error e individualizar la palabra enviada en origen para

poder corregirlo, pues solo habrá que invertirlo es

nuestro caso es:

donde c es la cantidad de errores admitidos, en

poder corregirlo, pues solo habrá que invertirlo es nuestro caso es: donde c es la cantidad
poder corregirlo, pues solo habrá que invertirlo es nuestro caso es: donde c es la cantidad

3

Universidad Nacional de Quilmes

Código de Hamming

Técnicas Digitales

Códigos detectores y correctores de errores

Hamming invento un método para construir códigos redundantes para detectar si las palabras recibidas presentan o no 1 bit errado, y, en caso afirmativo determinar la posición del mismo para así poder corregirlo.

El método es el siguiente:

1. Determinación del número p de bits redundantes de paridad necesarios: sí tenemos

bits de

información, habrá posibilidades de error de 1 bit en la información, a las que se suman las posibilidades de error en los bits de paridad, 1 posibilidad de palabra sin errores. Las posibilidades

que se pueden identificar con p bits es de 2p, por lo tanto deberá ser:

identificar con p bits es de 2p, por lo tanto deberá ser: La solución de esta

La solución de esta inecuación se realiza, al ser p un número natural, por tanteos.

2. Construcción de las palabras del código de Hamming: El total de bits de la palabra será

y se

ordenaran del 1 al reservándose las potencias de 2 para los bits de paridad y el resto, en orden, para los de información. Una vez ordenado se colocan los subíndices en binario, los subíndices de los bits redundantes como so potencias de 2 solo tendrán un 1, el resto es 0, y, darán origen a

subconjuntos. Los

subconjuntos se arman con los

subconjuntos, cada uno de los bits redundantes darán paridad a cada uno de los

que tiene 1 en la posición del

en cuestión.

Volvamos a nuestro ejemplo donde

:

Si

;

 

Se adopta entonces

  Se adopta entonces

Como

que es la cantidad de bits por palabra las potencias de 2 utilizadas como subíndices de

son:

0, 1 y, es decir los bits de redundancia serán de la palabra de la siguiente manera:

, pues:

Colocando los subíndices en binario:

Por lo tanto:

debe dar paridad al subconjunto debe dar paridad al subconjunto debe dar paridad al subconjunto

quedando el formato

Esto es para cada elemento del código, por razones de claridad se construye una tabla para cada palabra del código que se quiere proteger generando así cada palabra del código de Hamming.

 

p

001

p

010

I

011

P

100

I

101

Código

     

0

   

0

I 3 I 5

p 1
p 1
 

0

   

0

   

0

I 3

p 2
p 2
   

0

 

0

   

I 5

p 4
p 4
       

0

 

0

Palabra

 

0

 

0

 

0

 

0

 

0

4

Universidad Nacional de Quilmes

Técnicas Digitales

Códigos detectores y correctores de errores

 

p

001

p

010

I

011

P

100

I

101

Código

     

0

   

1

I 3 I 5

p 1
p 1
 

1

   

0

   

1

I 3

p 2
p 2
   

0

 

0

   

I 5

p 4
p 4
       

1 1

Palabra

 

1

 

0

 

0

 

1 1

p

001

p

010

I

011

P

100

I

101

Código

     

1

   

0

I 3 I 5

p 1
p 1
 

1

   

1

   

0

I 3

p 2
p 2
   

1 1

   

I 5

p 4
p 4
       

0

 

0

Palabra

 

1

 

1 1

 

0

 

0

p

001

p

010

I

011

P

100

I

101

Código

     

1

   

1

I 3 I 5

p 1
p 1
 

0

   

1

   

1

I 3

p 2
p 2
   

1 1

   

I 5

p 4
p 4
       

1 1

Palabra

 

0

 

1 1

 

1 1

Estas son las palabras que se emiten desde el transmisor:

00

01

10

11

las palabras que se emiten desde el transmisor: 00 01 10 11 00000 10011 11100 01111

00000

10011que se emiten desde el transmisor: 00 01 10 11 00000 11100 01111 En el receptor

que se emiten desde el transmisor: 00 01 10 11 00000 10011 11100 01111 En el

11100

se emiten desde el transmisor: 00 01 10 11 00000 10011 11100 01111 En el receptor

01111

En el receptor se generan 4 nuevas que llamaremos P i y que se obtienen de la siguiente manera:

5

Universidad Nacional de Quilmes

Técnicas Digitales

Códigos detectores y correctores de errores

El subíndice binario del bit invertido está dado por el binario P 4 P 2 P 1 si esta paridad recibida es 000 la palabra recibida no tiene error. Construiremos tablas para todos los errores posibles de las palabras de código a transmitir, en realidad los errores en los bits de paridad p i son descartados por el circuito de implementación pues no interesan, por lo tanto las direcciones del error posible son 011 o bien 101.

Sin error en 00

 

p

001

p

010

I

011

P

100

I

101

Error en

Palabra

 

0

 

0

 

0

 

0

 

0

 

p 1 I 3 I 5

P 1
P 1
 

0

   

0

   

0

0

p 2 I 3

P 1
P 1
   

0

 

0

   

0

p 4 I 5

P 4
P 4
       

0

 

0

0

 

Error en 00

 
 

p

001

p

010

I

011

P

100

I

101

Error en

Palabra

 

0

 

0

 

0

 

0

 

1

 

p 1 I 3 I 5

P 1
P 1
 

0

   

0

   

1

1

p 2 I 3

P 1
P 1
   

0

 

0

   

0

p 4 I 5

P 4
P 4
       

0

 

1

1

Palabra

 

0

 

0

 

1

 

0

 

0

 

p 1 I 3 I 5

P 1
P 1
 

0

   

1

   

0

1

p 2 I 3

P 1
P 1
   

0

 

1

   

1

p 4 I 5

P 4
P 4
       

0

 

0

0

 

Sin error en 01

 
 

p

001

p

010

I

011

P

100

I

101

Error en

Palabra

 

1

 

0

 

0

 

1

 

1

 

p 1 I 3 I 5

P 1
P 1
 

1

   

0

   

1

0

p 2 I 3

P 1
P 1
   

0

 

0

   

0

p 4 I 5

P 4
P 4
       

1

 

1

0

6

Universidad Nacional de Quilmes

Técnicas Digitales

Error en 01

Códigos detectores y correctores de errores

 

p

001

p

010

 

I

011

 

P

100

 

I

101

Error en

Palabra

 

1

0

 

0

 

1 0

   

p 1 I 3 I 5

P 1
P 1
 

1

 

0

   

0

1

p 2 I 3

P 1
P 1
 

0

 

0

   

0

p 4 I 5

P 4
P 4
     

1 0

   

1

Palabra

 

1

0

 

1

 

1 1

   

p 1 I 3 I 5

P 1
P 1
 

1

 

1

   

1

1

p 2 I 3

P 1
P 1
 

0

 

1

   

1

p 4 I 5

P 4
P 4
     

1 1

   

0

 

Sin error en 10

 
 

p

001

p

010

 

I

011

 

P

100

 

I

101

Error en

Palabra

 

1

1

 

1

 

0

 

0

p 1 I 3 I 5

P 1
P 1
 

1

 

1

   

0

0

p 2 I 3

P 1
P 1
 

1

 

1

   

0

p 4 I 5

P 4
P 4
     

0

 

0

0

 

Error en 10

 
 

p

001

 

p

010

 

I

011

 

P

100

 

I

101

Error en

Palabra

 

1

 

1 1

   

0

 

1

 

p 1 I 3 I 5

P 1
P 1
 

0

   

0

   

1

1

p 2 I 3

P 1
P 1
   

1 1

     

0

p 4 I 5

P 4
P 4
       

0

 

1

1

Palabra

 

1

 

1 0

   

0

 

0

 

p 1 I 3 I 5

P 1
P 1
 

1

   

0

   

0

1

p 2 I 3

P 1
P 1
   

1 0

     

1

p 4 I 5

P 4
P 4
       

0

 

0

0

 

7

Universidad Nacional de Quilmes

Técnicas Digitales

Sin error en 11

Códigos detectores y correctores de errores

 

p

001

p

010

I

011

P

100

I

101

Error en

Palabra

 

0

 

1

 

1

 

1

 

1

 

p 1 I 3 I 5

P 1
P 1
 

0

   

1

   

1

0

p 2 I 3

P 1
P 1
   

1

 

1

   

0

p 4 I 5

P 4
P 4
       

1

 

1

0

 

Error en 11

 
 

p

001

p

010

I

011

P

100

I

101

Error en

Palabra

 

0

 

1 1

 

1 0

   

p 1 I 3 I 5

P 1
P 1
 

0

   

1

   

0

1

p 2 I 3

P 1
P 1
   

1 1

   

0

p 4 I 5

P 4
P 4
       

1 0

 

1

Palabra

 

0

 

1 0

 

1 1

   

p 1 I 3 I 5

P 1
P 1
 

0

   

0

   

1

1

p 2 I 3

P 1
P 1
   

1 0

   

1

p 4 I 5

P 4
P 4
       

1 1

 

0

Para fijar mejor este procedimiento se desarrollará algunos ejemplos tomando como base un código a transmitir cuya palabra es de 5 bits, en este caso 10110.

Para calcular la cantidad de bits de paridad se resuelve la ecuación:

la cantidad de bits de paridad se resuelve la ecuación: La palabra a transmitir es del

La palabra a transmitir es del formato:

que con índices binarios será:

Por lo tanto:

debe dar paridad al subconjunto debe dar paridad al subconjunto debe dar paridad al subconjunto

8

Universidad Nacional de Quilmes

Técnicas Digitales

debe dar paridad al subconjunto

Códigos detectores y correctores de errores

Construiremos la tabla para un elemento del código y luego ejemplificaremos el método para algunos casos:

 

p

0001

 

p

0010

 

I

0011

 

P

0100

 

I 0101

 

I

0110

I

0111

p

1000

I

1001

Código

     

1

 

0

 

1

 

1

   

0

I 3 I 5 I 7 I 9

p 1
p 1

0

   

1

 

0

   

1

   

0

I 3 I 6 I 7

p 2
p 2
   

1

 

1

   

1

 

1

   

I 5 I 6 I 7

p 4
p 4
     

0

 

0

 

1

 

1

   

I 9

p 8
p 8
             

0

 

0

Palabra

0

 

1

 

1

0

 

0

 

1

 

1

 

0

 

0

 

Error en I 3

 
   

p

0001

p

0010

I 0011

P

0100

I

0101

I 0110

I 0111

p

1000

I 1001

Error en

 
 

Palabra

   

0

 

1 0

   

0

 

0

1

 

1

 

0

0

 

p 1 I 3 I 5 I 7 I 9

P 1
P 1
   

0

 

0

   

0

   

1

 

0

 

1

p 2 I 3 I 6 I 7

P 2
P 2
     

1 0

     

1

 

1

     

1

p 4 I 5 I 6 I 7

P 4
P 4
         

0

 

0

1

 

1

     

0

p 8 I 9

P 8
P 8
                   

0

0

 

0

 

Error en I 7

 
   

p

0001

p

0010

I 0011

P

0100

I

0101

I 0110

I 0111

p

1000

I 1001

Error en

 
 

Palabra

   

0

 

1

1

 

0

 

0

 

1 0

 

0

0

 

p 1 I 3 I 5 I 7 I 9

P 1
P 1
   

0

 

1

   

0

   

0

 

0

 

1

p 2 I 3 I 6 I 7

P 2
P 2
     

1

1

     

1 0

     

1

p 4 I 5 I 6 I 7

P 4
P 4
         

0

 

0

 

1 0

     

1

p 8 I 9

P 8
P 8
                   

0

0

 

0

Ya realizada la justificación analítica del método de Hamming queda por realizar el circuito que lo implementa en la práctica.

Se diseñará un circuito para autocorregir la transmisión de un código con 3 bits de información que requiere

de 3 bits de paridad, ya que es:

.

Por lo tanto la palabra a transmitir será: p 1 p 2 I 3 p 4 I 5 I 6 .

9

Universidad Nacional de Quilmes

Técnicas Digitales

Las paridades se generaran de la siguiente forma:

Códigos detectores y correctores de errores

En la recepción tendremos:

y correctores de errores En la recepción tendremos: Para simplificar la representación del circuito
y correctores de errores En la recepción tendremos: Para simplificar la representación del circuito

Para simplificar la representación del circuito esquemático se utilizarán las formas de la figura 9.

tendremos: Para simplificar la representación del circuito esquemático se utilizarán las formas de la figura 9.

10