TÉCNICAS DIGITALES CÓDIGOS DETECTORES Y

Anuncio
Universidad Nacional de Quilmes
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.
Si el dato a enviar era el 5 (0101) y se invierte un bit las situaciones posible son:
a.
b.
c.
d.
1101: la información es rechazada por no pertenecer al código.
0001: se recibe información errónea, el 1.
0111: se recibe información errónea, el 7.
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.
Recopilación y aportes: Ing. Alberto J. Mazzone
Página 1
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:
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 = b3 b2 b1 b0
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 Ii para representar los bits de información y pi 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: I1 y I2.
La transmisión simple sería: I1I2, 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 p1.
La transmisión simple sería: p1I2I3, y en la figura 7 se muestra el código a transmitir y su respectivo mapa de
Karnaugh.
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
donde c es la cantidad de errores admitidos, en
nuestro caso es:
3
Universidad Nacional de Quilmes
Técnicas Digitales
Códigos detectores y correctores de errores
Código de Hamming
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:
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, cada uno de los bits redundantes darán paridad a cada uno de los subconjuntos. Los
subconjuntos se arman con los que tiene 1 en la posición del en cuestión.
Volvamos a nuestro ejemplo donde
:
Si
;
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
, pues:
quedando el formato
de la palabra de la siguiente manera:
Colocando los subíndices en binario:
Por lo tanto:
debe dar paridad al subconjunto
debe dar paridad al subconjunto
debe dar paridad al subconjunto
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.
p001
p010
I011
Código
I3I5
p1
I3
p2
I5
p4
Palabra
0
0
0
P100
I101
0
0
0
0
0
0
0
4
0
0
0
0
Universidad Nacional de Quilmes
Técnicas Digitales
p001
p010
I011
Código
I3I5
p1
I3
p2
I5
p4
Palabra
1
0
p1
I3
p2
I5
p4
Palabra
p1
I3
p2
I5
p4
Palabra
I101
0
1
0
1
1
1
1
0
0
1
1
p001
p010
I011
P100
I101
1
1
1
0
1
0
1
0
0
1
1
1
0
0
p001
p010
I011
P100
I101
Código
I3I5
P100
0
Código
I3I5
Códigos detectores y correctores de errores
0
1
0
1
1
1
1
1
1
1
1
1
1
1
Estas son las palabras que se emiten desde el transmisor:
00
00000
01
10011
10
11100
11
01111
En el receptor se generan 4 nuevas que llamaremos Pi 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 P4P2P1 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 pi 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
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
0
0
0
0
0
0
0
0
0
0
Error en
0
0
0
0
0
Error en
Error en 00
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
0
0
0
0
1
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
1
0
1
1
1
1
0
0
0
Error en
Sin error en 01
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
1
0
0
1
1
1
0
0
1
0
0
0
1
6
1
0
Universidad Nacional de Quilmes
Técnicas Digitales
Códigos detectores y correctores de errores
Error en 01
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
Palabra
p001
p010
I011
P100
I101
1
0
0
1
0
1
0
1
p1I3I5
P1
p2I3
P1
p4I5
P4
0
0
1
0
0
1
1
0
1
0
1
1
1
0
Error en
1
1
1
1
1
1
1
0
Error en
Sin error en 10
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
1
1
1
0
0
1
1
1
0
1
0
0
0
0
0
Error en 10
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
1
1
1
0
1
0
0
1
1
1
1
1
1
0
1
0
0
1
0
0
0
1
Error en
0
0
1
1
1
0
7
0
0
Universidad Nacional de Quilmes
Técnicas Digitales
Códigos detectores y correctores de errores
Sin error en 11
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
0
1
1
1
1
0
1
1
1
1
Error en
0
0
1
1
0
Error en
Error en 11
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
Palabra
p1I3I5
P1
p2I3
P1
p4I5
P4
p001
p010
I011
P100
I101
0
1
1
1
0
0
1
1
0
1
0
0
1
0
0
1
0
1
1
0
1
1
1
0
1
1
1
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 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
Códigos detectores y correctores de errores
debe dar paridad al subconjunto
Construiremos la tabla para un elemento del código y luego ejemplificaremos el método para algunos casos:
p0001
p0010
I0011
Código
I3I5I7I9
p1
I3I6I7
p2
I5I6I7
p4
I9
0
1
P0100
I0101
I0110
I0111
1
0
1
1
0
1
0
1
0
1
0
0
1
1
1
1
p1000
p8
Palabra
0
1
1
0
0
1
1
I1001
0
0
0
0
Error en I3
p0001 p0010 I0011 P0100 I0101 I0110 I0111 p1000 I1001 Error en
Palabra
p1I3I5I7I9
0
P1
p2I3I6I7
P2
p4I5I6I7
P4
p8I9
1
0
0
0
0
0
1
1
0
0
0
0
1
0
1
0
0
1
1
1
1
1
1
0
P8
0
0
0
Error en I7
p0001 p0010 I0011 P0100 I0101 I0110 I0111 p1000 I1001 Error en
Palabra
p1I3I5I7I9
0
P1
p2I3I6I7
P2
p4I5I6I7
P4
p8I9
1
0
1
0
0
1
1
1
0
1
0
0
P8
0
0
0
0
0
1
1
0
1
1
0
1
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á: p1p2I3p4I5I6.
9
Universidad Nacional de Quilmes
Técnicas Digitales
Códigos detectores y correctores de errores
Las paridades se generaran de la siguiente forma:
En la recepción tendremos:
Para simplificar la representación del circuito esquemático se utilizarán las formas de la figura 9.
10
Descargar