0% encontró este documento útil (0 votos)
383 vistas8 páginas

Fundamentos de Sistemas Digitales - 23

Este documento describe métodos para detectar y corregir errores en códigos digitales. Explica el método de paridad para la detección de errores mediante la adición de un bit de paridad que indica si el número total de 1s en un grupo de bits es par o impar. También describe el código de corrección de errores de Hamming, el cual permite corregir un único error mediante la adición de múltiples bits de paridad que identifican la posición del bit erróneo. Finalmente, presenta un ejemplo de cómo construir un código Hamming de

Cargado por

Pao Padilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
383 vistas8 páginas

Fundamentos de Sistemas Digitales - 23

Este documento describe métodos para detectar y corregir errores en códigos digitales. Explica el método de paridad para la detección de errores mediante la adición de un bit de paridad que indica si el número total de 1s en un grupo de bits es par o impar. También describe el código de corrección de errores de Hamming, el cual permite corregir un único error mediante la adición de múltiples bits de paridad que identifican la posición del bit erróneo. Finalmente, presenta un ejemplo de cómo construir un código Hamming de

Cargado por

Pao Padilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

CAP02_FLOYD_IMP.

qxd 17/05/2006 9:28 PÆgina 104

www.elsolucionario.net

104 ■ SISTEMA DE NUMERACIÓN, OPERACIONES Y CÓDIGOS

Expresarlos como un patrón de bits y en notación hexadecimal.


(a) K (b) r (c) $ (d) +

2.12 DETECCIÓN DE ERRORES Y CÓDIGOS DE CORRECIÓN


En esta sección se abordan dos métodos para sumar bits a códigos para detectar o para detectar y corre-
gir un error de un único bit. Se presenta el método de paridad para la detección de errores y el método
Hamming para detección y corrección de un único error. Cuando se detecta que un bit es erróneo en
una determinada palabra de código, puede corregirse simplemente invirtiéndolo.
Al finalizar esta sección, el lector será capaz de:
■ Determinar si existe un error en un código basándose en el bit de paridad. ■ Asignar el apropiado
bit de paridad a un código. ■ Utilizar el código Hamming para la detección y corrección de un único

www.elsolucionario.net
error. ■ Asignar los apropiados bits de paridad para corregir un único error.

Método de paridad para la detección de errores


▲ Un bit de paridad Muchos sistemas emplean un bit de paridad como medio para la detección de
indica si el número de errores de bit. Cualquier grupo de bits contiene un número par o impar de 1s. Un
1s es impar o par. bit de paridad se añade al grupo de bits para hacer que el número total de 1s en
el grupo sea siempre par o siempre impar. Un bit de paridad par hace que el
número total de 1s sea par, y un bit de paridad impar hace que el número total de 1s del grupo sea impar.
Un determinado sistema puede funcionar con paridad par o impar, pero no con ambas. Por ejemplo, si un
sistema trabaja con paridad par, una comprobación que se realice en cada grupo de bits recibidos tiene que
asegurar que el número total de 1s en ese grupo es par. Si hay un número impar de 1s, quiere decir que se ha
producido un error.
Vamos a ver cómo se asocian los bits de paridad a un código. La Tabla 2.10 enumera los bits de paridad
de cada número BCD, tanto en el caso de paridad par como de paridad impar. El bit de paridad para cada
número BCD se indica en la columna P.
El bit de paridad se puede añadir al principio o al final del código, dependiendo del diseño del sistema.
Observe que el número total de 1s, incluyendo el bit de paridad, siempre es par para paridad par, y siempre
es impar para paridad impar.

Paridad par Paridad impar


P BCD P BCD
0 0000 1 0000
1 0001 0 0001
1 0010 0 0010
0 0011 1 0011
1 0100 0 0100
0 0101 1 0101
0 0110 1 0110
1 0111 0 0111
1 1000 0 1000
0 1001 1 1001

TABLA 2.10 El código BCD con bits de paridad.


CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 105

www.elsolucionario.net
CÓDIGOS DIGITALES ■ 105

Detección de un error. Un bit de paridad facilita la detección de un único error de bit (o de cualquier núme-
ro impar de errores, lo cual es muy improbable), pero no puede detectar dos errores dentro de un grupo. Por
ejemplo, supongamos que deseamos transmitir el código BCD 0101 (el método de paridad puede usarse con
cualquier número de bits, ahora usamos cuatro con propósitos de ilustración). El código total transmitido
incluyendo el bit de paridad par es:
Bit de paridad par
0 0101
N
Código BCD
Supongamos ahora que se produce un error en el tercer bit de la izquierda (el 1 se transmite como 0).
Bit de paridad par
00001

www.elsolucionario.net
Bit erróneo
Cuando se recibe este código, la circuitería de comprobación de paridad determina que sólo hay un 1
(impar), cuando debería haber un número par de 1s. Puesto que en el código recibido no aparece un número
par de 1s, esto indica que se ha producido un error.
Un bit de paridad impar también facilita de forma similar la detección de un único error en un grupo de
bits dado.

EJEMPLO 2.39
Asignar el bit de paridad par apropiado a cada uno de los siguientes grupos de códigos:
(a) 1010 (b) 111000 (c) 101101
(d) 1000111001001 (e) 101101011111
Solución El bit de paridad puede ser 1 o 0 de modo que el número total de 1s sea par. El
bit de paridad será el bit más a la izquierda (tramado).
(a) 01010 (b) 1111000 (c) 0101101
(d) 0100011100101 (e) 1101101011111
Problema relacionado añadir un bit de paridad par al código ASCII de 7 bits correspondiente a la letra
K.

EJEMPLO 2.40
Un sistema de paridad impar recibe los siguientes grupos de códigos: 10110, 11010, 110011,
110101110100 y 1100010101010. Determinar qué grupos, si hay alguno, tienen error.
Solución Puesto que se requiere paridad impar, cualquier grupo con un número par de
1s es incorrecto. Los siguientes grupos contienen error:
110011 y 1100010101010.
Problema relacionado En un sistema de paridad impar se recibe el siguiente carácter ASCII:
00110111. ¿Es correcto?
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 106

www.elsolucionario.net

106 ■ SISTEMA DE NUMERACIÓN, OPERACIONES Y CÓDIGOS

El código Hamming de corrección de errores


Como hemos visto, un único bit de paridad permite detectar errores de un único bit en una palabra de código.
Un único bit de paridad puede indicar si existe un error en un determinado grupo de bits. Para corregir un error
detectado, se necesita más información, ya que hay que identificar la posición del bit erróneo antes de poder
corregirlo. Debe incluirse más de un bit de paridad en un grupo de bits para poder corregir el error detectado.
En un código de 7 bits, existen siete posibles bits erróneos. En este caso, tres bits de paridad no sólo pueden
detectar el error sino que también pueden especificar la posición del bit erróneo. El código Hamming pro-
porciona un método de corrección de un único bit erróneo. A continuación se estudia la construcción de un
código Hamming de 7 bits para corregir un único error.
Número de bits de paridad. Si el número de bits de datos se designa por d, entonces el número de bits de pari-
dad, p, se determina mediante la siguiente relación:
Ecuación 2.1 2p ≥ d + p + 1

www.elsolucionario.net
Por ejemplo, si tenemos cuatro bits de datos, entonces p se calcula por el método de prueba y error usan-
do la Ecuación 2.1. Sea p = 2. Entonces,
2p = 22 = 4
y
d+p+1=4+2+1=7
Puesto que 2p tiene que ser igual o mayor que d + p + 1, la relación de la Ecuación 2.1 no se satisface.
Probamos de nuevo, sea p = 3. Luego,
2p = 23 = 8
y
d+p+1=4+3+1=8
Este valor de p satisface la relación de la Ecuación 2.1, por lo que se necesitan tres bits de paridad para
poder corregir un único error en cuatro bits de datos. Debemos destacar que se proporciona la detección y
corrección de errores para todos los bits, tanto de paridad como de datos, del grupo de códigos; es decir, los
bits de paridad también se comprueban a sí mismos.
Colocación de los bits de paridad en el código. Ahora que ya sabemos cuál es el número necesario de bits de pari-
dad en nuestro ejemplo, debemos colocar correctamente los bits dentro del código. Debe darse cuenta de que,
en este ejemplo, el código está formado por cuatro bits de datos y tres bits de paridad. El bit más a la izquier-
da es el bit 1, el siguiente bit es el bit 2, y así sucesivamente, como se muestra a continuación:
bit 1, bit 2, bit 3, bit 4, bit 5, bit 6, bit 7
Los bits de paridad se sitúan en las posiciones que se han numerado haciéndolas corresponder con las
potencias de dos en sentido ascendente (1, 2, 4, 8, . . . ), del modo siguiente:
P1, P2, D1, P3, D2, D3, D4
El símbolo Pn designa un determinado bit de paridad y Dn designa cada uno de los bits de datos.
Asignación de los valores de los bits de paridad. Para terminar, hay que asignar apropiadamente un valor de 1 o
de 0 a cada uno de los bits de paridad. Puesto que cada bit de paridad proporciona una comprobación sobre
los restantes bits del código total, tenemos que conocer el valor de dichos otros bits par asignar el valor del
bit de paridad. Para hallar los valores de los bits, primero expresamos en binario el número correspondiente a
cada posición de bit; es decir, escribimos el número binario correspondiente a cada número decimal de posi-
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 107

www.elsolucionario.net
CÓDIGOS DIGITALES ■ 107

ción, como se muestra en la Tabla 2.11. A continuación, como se ilustra en la primera fila de la Tabla 2.11,
indicamos las posiciones de los bits de paridad y de datos. Observe que el número binario de posición del bit
de paridad P1 tiene un 1 como su dígito más a la derecha. Este bit de paridad comprueba las posiciones de
todos los bits, incluyéndose a sí mismo, que tienen 1s en la misma posición en el correspondiente número de
posición en binario. Por tanto, el bit de paridad P1 comprueba las posiciones de bits 1, 3, 5 y 7.

Designación de bit P1 P2 D1 P3 D2 D3 D4
Posición de bit 1 2 3 4 5 6 7
Número de posición en binario 001 010 011 100 101 110 111
Bits de datos (Dn)
Bits de paridad (Pn)

www.elsolucionario.net
TABLA 2.11 Tabla de posiciones de bits para un código de corrección de errores de 7 bits.

El número de posición en binario para el bit de paridad P2 tiene un 1 en su posición intermedia. Este bit
comprueba entonces todas las posiciones de bit, incluyéndose a sí mismo, que tienen un 1 en esa misma posi-
ción. Por tanto, el bit de paridad P2 comprueba las posiciones de bit 2, 3, 6 y 7.
El número de posición en binario para el bit de paridad P3 tiene un 1 como su bit más a la izquierda. Este
bit comprueba entonces todas las posiciones de bit, incluyéndose a sí mismo, que tienen un 1 en esa misma
posición. Por tanto, el bit de paridad P3 comprueba las posiciones de bit 4, 5, 6 y 7.
En cada uno de los casos, se asigna un valor al bit de paridad de modo que la cantidad de 1s en el conjun-
to de bits que se desea comprobar sea impar o par, dependiendo de lo que se haya especificado. Los siguien-
tes ejemplos clarificarán este procedimiento.

EJEMPLO 2.41
Determinar el código Hamming para el número BCD 1001 (bits de datos), utilizando paridad par.
Solución Paso 1. Hallar el número de bits de paridad requeridos. Sea p = 3. Entonces,
2p = 23 = 8
d+p+1=4+3+1=8
Tres bits de paridad son suficientes.
Número total de bits de código = 4 + 3 = 7
Paso 2. Construir la tabla de posiciones de los bits, como se muestra en la
Tabla 2.12, e introducir los bits de datos. Los bits de paridad se deter-
minan en los pasos siguientes.

Designación de bit P1 P2 D1 P3 D2 D3 D4
Posición de bit 1 2 3 4 5 6 7
Número de posición en binario 001 010 011 100 101 110 111
Bits de datos 1 0 0 1
Bits de paridad 0 0 1

Tabla 2.12
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 108

www.elsolucionario.net

108 ■ SISTEMA DE NUMERACIÓN, OPERACIONES Y CÓDIGOS

Paso 3. Determinar los bits de paridad como sigue:


El bit P1 comprueba las posiciones de bit 1, 3, 5 y 7, y debe ser igual
a 0 para que haya un número par de 1s (2) en este grupo.
El bit P2 comprueba las posiciones de bit 2, 3, 6 y 7, y debe ser igual
a 0 para que haya un número par de 1s (2) en este grupo.
El bit P3 comprueba las posiciones de bit 4, 5, 6 y 7, y debe ser igual
a 1 para que haya un número par de 1s (2) en este grupo.
Paso 4. Estos bits de paridad se anotan en la Tabla 2.12 y el código combina-
do resultante es 0011001.
Problema relacionado Determinar el código Hamming para el número BCD 1000 utilizando paridad
par.

www.elsolucionario.net
EJEMPLO 2.42
Determinar el código Hamming para los bits de datos 10110 utilizando paridad impar.
Solución Paso 1. Determinar el número de bits de paridad necesario. En este caso, el
número de bits de datos, d, es cinco. Del ejemplo anterior sabemos
que p = 3 no es apropiado, por lo que probamos p = 4:
2p = 24 = 16
d + p + 1 = 5 + 4 + 1 = 10
Cuatro bits de paridad son suficientes.
Número total de bits de código = 5 + 4 = 9
Paso 2. Construir una tabla de posiciones de los bits, Tabla 2.13, y escribir los
bits de datos. Los bits de paridad se determinan en los pasos siguien-
tes. Observe que P4 se encuentra en la posición de bit 8.

Designación de bit P1 P2 D1 P3 D2 D3 D4 P4 D5
Posición de bit 1 2 3 4 5 6 7 8 9
Número de posición en binario 0001 0010 0011 0100 0101 0110 0111 1000 1001
Bits de datos 1 0 1 1 0
Bits de paridad 1 0 1 1

Tabla 2.13

Paso 3. Determinar los bits de paridad como sigue:


El bit P1 comprueba las posiciones de bit 1, 3, 5, 7 y 9, y debe ser igual
a 1 para que haya un número impar de 1s (3) en este grupo.
El bit P2 comprueba las posiciones de bit 2, 3, 6 y 7, y debe ser igual
a 0 para que haya un número impar de 1s (3) en este grupo.
El bit P3 comprueba las posiciones de bit 4, 5, 6 y 7, y debe ser igual
a 1 para que haya un número impar de 1s (3) en este grupo.
El bit P4 comprueba las posiciones de bit 8 y 9, y debe ser igual a 1
para que haya un número impar de 1s (1) en este grupo.
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 109

www.elsolucionario.net
CÓDIGOS DIGITALES ■ 109

Paso 4. Estos bits de paridad se introducen en la Tabla 2.13, y el código com-


binado resultante es 101101110.
Problema relacionado Determinar el código Hamming para el número 11001 usando paridad impar.

Cómo detectar y corregir un error con el código Hamming


Ahora que ya conoce el método de construcción de un código de corrección de errores, ¿cómo se emplea para
localizar y corregir un error? Cada uno de los bits de paridad junto con su correspondiente grupo de bits debe
comprobarse de acuerdo con la paridad que se vaya a utilizar. Si en una palabra de código hay tres bits de pari-
dad, entonces se realizan tres comprobaciones de paridad. Si hay cuatro bits de paridad, deben realizarse cua-
tro comprobaciones, y así sucesivamente. Cada comprobación de paridad dará un resultado bueno o malo. El
resultado total de todas las comprobaciones de paridad indica el bit, si existe, en el que se encuentra el error

www.elsolucionario.net
de la siguiente manera:
Paso 1. Comience con el grupo comprobado por P1.
Paso 2. Compruebe si el grupo tiene la paridad correcta. Un 0 representa que la comprobación de pari-
dad es correcta y un 1 que es incorrecta.
Paso3. Repita el paso 2 para cada grupo de paridad.
Paso 4. El número binario formado por los resultados de todas las comprobaciones de paridad indica la
posición del bit del código que es erróneo. Es el código de posición de error. La primera com-
probación de paridad genera el bit menos significativo (LSB). Si todas las comprobaciones son
correctas, no habrá error.

EJEMPLO 2.43
Suponga que se transmite la palabra código del Ejemplo 2.41 (0011001) y que se recibe 0010001. El
receptor no “sabe” lo que se ha transmitido y debe calcular las paridades apropiadas para determinar si
el código es correcto. Indique cualquier error que se haya producido en la transmisión si se utiliza pari-
dad par.
Solución En primer lugar, construimos una tabla de posiciones de bits, como la mostra-
da en la Tabla 2.14.

Designación de bit P1 P2 D1 P3 D2 D3 D4
Posición de bit 1 2 3 4 5 6 7
Número de posición en binario 001 010 011 100 101 110 111
Código recibido 0 0 1 0 0 0 1

Tabla 2.14

Primera comprobación de paridad:


El bit P1 comprueba las posiciones 1, 3, 5 y 7.
En este grupo hay dos 1s.
La comprobación de paridad es correcta. 0 (LSB)
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 110

www.elsolucionario.net

110 ■ SISTEMA DE NUMERACIÓN, OPERACIONES Y CÓDIGOS

Segunda comprobación de paridad:


El bit P2 comprueba las posiciones 2, 3, 6 y 7.
En este grupo hay dos 1s.
La comprobación de paridad es correcta. 0
Tercera comprobación de paridad:
El bit P3 comprueba las posiciones 4, 5, 6 y 7.
En este grupo hay un 1.
La comprobación de paridad es incorrecta. 1 (MSB)
Resultado:
El código de posición del error es 100 (cuatro en binario). Esto quiere decir
que el bit que se encuentra en la posición 4 es erróneo. Se ha recibido un 0
y tiene que ser un 1. El código corregido es 0011001, que es el mismo que
el código transmitido.

www.elsolucionario.net
Problema relacionado Repita el proceso ilustrado en el ejemplo para el caso de que el código recibi-
do fuera 0111001.

EJEMPLO 2.44
Se recibe el código 101101010. Corregir los errores. Se emplean cuatro bits de paridad y el tipo de pari-
dad impar.
Solución En primer lugar, construimos una tabla de posiciones de bits, como la mostra-
da en la Tabla 2.15.

Designación de bit P1 P2 D1 P3 D2 D3 D4 P4 D5
Posición de bit 1 2 3 4 5 6 7 8 9
Número de posición en binario 0001 0010 0011 0100 0101 0110 0111 1000 1001
Código recibido 1 0 1 1 0 1 0 1 0

Tabla 2.15

Primera comprobación de paridad:


El bit P1 comprueba las posiciones 1, 3, 5, 7 y 9.
En este grupo hay dos 1s.
La comprobación de paridad es incorrecta. 1 (LSB)
Segunda comprobación de paridad:
El bit P2 comprueba las posiciones 2, 3, 6 y 7.
En este grupo hay dos 1s.
La comprobación de paridad es incorrecta. 1
Tercera comprobación de paridad:
El bit P3 comprueba las posiciones 4, 5, 6 y 7.
En este grupo hay un 1.
La comprobación de paridad es incorrecta. 1
Cuarta comprobación de paridad:
El bit P4 comprueba las posiciones 8 y 9.
CAP02_FLOYD_IMP.qxd 17/05/2006 9:28 PÆgina 111

www.elsolucionario.net
RESUMEN ■ 111

En este grupo hay un 1.


La comprobación de paridad es correcta. 0 (MSB)
Resultado:
El código de posición de error es 0111 (siete en binario). Esto quiere decir
que l bit situado en la posición 7 es erróneo. Por tanto, el código corregido
es 101101110.
Problema relacionado Se recibe el código 101111001. Corrija cualquier error que se haya producido
utilizando paridad impar.

1. ¿Qué códigos de paridad impar son erróneos?


REVISIÓN DE
LA SECCIÓN 2.12 (a) 1011 (b) 1110 (c) 0101 (d) 1000

www.elsolucionario.net
2. ¿Qué códigos de paridad par son erróneos?
(a) 11000110 (b) 00101000 (c) 10101010 (d) 11111011
3. Sumar un bit de paridad par al final de cada uno de los siguientes códigos.
(a) 1010100 (b) 0100000 (c) 1110111 (d) 1000110
4. ¿Cuántos bits de paridad son necesarios para los bits de datos 11010 utilizando
el código Hamming?
5. Crear el código Hamming para los bits de datos 0011 utilizando paridad impar.

RESUMEN

■ Un número binario es un grupo de bits con peso en el que el peso de cada número entero es una
potencia positiva de dos, y el peso de cada dígito fraccionario es una potencia negativa de dos. Los
pesos de los números enteros aumentan de derecha a izquierda, del bit menos significativo al más
significativo.
■ Un número binario puede convertirse a número decimal sumando los valores decimales de los
pesos de todos los 1s del número binario.
■ Un número entero decimal puede convertirse a binario utilizando la suma de pesos o el método de
la división sucesiva por 2.
■ Una fracción decimal puede convertirse a binario utilizando la suma de pesos o el método de mul-
tiplicación sucesiva por 2.
■ Las reglas básicas de la suma binaria son las siguientes:
0+0=0
0+1=1
1+0=1
1 + 1 = 10
■ Las reglas básicas de la resta binaria son las siguientes:
0−0=0
1−1=0
1−0=1
10 − 1 = 1
■ El complemento a 1 de un número binario se obtiene cambiando los 1s por 0s, y los 0s por 1s.
■ El complemento a 2 de un número binario puede obtenerse sumando 1 al complemento a 1.
■ La resta binaria puede realizarse mediante sumas, utilizando los métodos de complemento a 1 y
complemento a 2.
■ Un número binario positivo se representa mediante un bit de signo 0.

También podría gustarte