Sei sulla pagina 1di 11

UNIVERSIDAD FERMIN TORO

DEPARTAMNETO DE MATEMÁTICAS
ESTRUCTURAS DISCRETAS II
ING. MSC. ADRIANA BARRETO

GRUPOS Y CÓDIGOS

1. Codificación de Información Binaria y del Error.

1.1 Sistema numérico binario.

El sistema numérico binario es un sistema posicional, en el cual cada dígito binario


(bit) lleva un cierto peso basado en su posición relativa al punto binario (separación de la
parte entera y la fraccionaria). Cualquier número binario puede convertirse a su equivalente
decimal sumando juntos los pesos de las diferentes posiciones en el número binario que
contienen un 1. Por ejemplo:

1 1 0 1 1
binario

24 +23 +21 +20


= 16 + 8 + 2 + 1
= 2710 (decimal)

1.2. Codificación y Detección de Errores.

La unidad básica de información llamada mensaje, es una secuencia finita de


caracteres de un alfabeto finito. Se puede elegir un alfabeto como el conjunto B={o,1}.
Cada carácter o símbolo que se quiera transmitir se representa ahora como una secuencia
de m elementos de B. La unidad básica de información, una palabra, es una secuencia de
m ceros y unos.

Un elemento x  Bm es enviado a través de un canal de transmisión y recibido


como un elemento x1  Bm. El canal de transmisión puede sufrir disturbios, llamados de
manera general, ruído, lo cual puede hacer que reciba un cero en vez de un uno, o
viceversa; es decir x  x1 .

En la siguiente figura se puede observar el proceso básico de enviar una palabra de


un punto a otro a través de un canal d transmisión.

Palabra Palabra
x  Bm x1  Bm
transmitida recibida

La tara básica en la transmisión de información es reducir la probabilidad de recibir


una palabra diferente de la palabra enviada. Esto se hace de la siguiente manera:
1. Se elige un entero n > m y una función uno a uno e: B m  Bn . La función e es una
función de codificación (m, n) y es vista como un medio para representar cada
palabra en Bm como una palabra en Bn. Si b  Bm, entonces e(b) es la palabra
codificada que representa a b. Los ceros y unos adicionales pueden proporcionar el
medio para detectar o corregir los errores producidos en el canal de transmisión.

2. Se transmite la palabra codificada a través de un canal de transmisión. Así cada


palabra codificada x = e(b) es recibida como la palabra x1 en B.

Palabra Palabra Palabra


b  Bm Codificada X1  Bn
por enviar x = e(b)  Bn recibida

Si el canal de transmisión no tiene ruido, entonces x 1 = x para toda x en Bn. En este


caso, x = e(b) es recibida para cada b  Bm, y como e es una función conocida, es posible
identificar a b.

En ocasiones, suelen presentarse errores en la transmisión. La palabra codificada x =


e(b) ha sido transmitida con k o menos errores si x y x 1, difieren al menos una pero no más
de k posiciones.

Sea e: Bm  Bn una función de codificación (m, n). Se dice que e detecta k o menos
errores si al transmitir x = e(b) con k o menos errores, entonces x 1 no es una palabra
codificada (así, x1 no puede ser x y por lo tanto no puede haberse transmitido en forma
correcta).

2. Código de Grupo.

Una función de Codificación (m, n) e: Bm  Bn es un grupo de código si:

e(Bm) = {e(b) / b  Bm} = Ran(e) es un subgrupo de Bn

Ahora N es un subgrupo de Bn si

(a) La identidad de Bn está en N,


(b) Si x y y pertenecen a N.

No hay que verificar la propiedad ( c ) ya que cada elemento de Bn es su propio inverso.

2.1. Procedimiento de Codificación por Código de Grupo.

Para convertir el código binario A al código binario B, las líneas de entrada deben dar una
combinación de bits de los elementos, tal como se especifica por el código A y las líneas de salida
deben generar la correspondiente combinación de bits del código B.
EJEMPLO 1: Realizar un circuito mínimo conversor de código de BCD a GRAY para 4
variables de entrada A, B, C, D, utilizando inversores, una compuerta O y compuertas No-O.
Considere las condiciones irrelevantes.

Solución:

a) Tabla funcional:

BCD GRAY
DEC
A B C D G3 G2 G1 G0
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 x x x x
: : : : :
15 x x x x

b) Variables de salida: Como el logigrama deberá realizarse con compuertas No-O, las
funciones de conmutación a la salida del conversor, deberán expresarse como producto de
maxitérminos:

G3(A,B,C,D) = PRODUCTOMAXITÉRMINOS (0-7) PRODUCTOINDIFERENTES (10-15)


G2(A,B,C,D) = PRODUCTOMAXITÉRMINOS (0-3) PRODUCTOINDIFERENTES (10-15)
G1(A,B,C,D) = PRODUCTOMAXITÉRMINOS (0,1,6-9) PRODUCTOINDIFERENTES (10-15)
G0(A,B,C,D) = PRODUCTOMAXITÉRMINOS (0,3,4,7,8) PRODUCTOINDIFERENTES (10-15)

c) Minimización de las funciones de conmutación: Reduciendo por el método de


Karnaugh, se obtiene:

Las funciones mínimas son:

G3(A,B,C,D) =A
G2(A,B,C,D) =A+B
G1(A,B,C,D) = (B + C)(B' +C')
G0(A,B,C,D) = (C + D)(C' +D'

EJEMPLO 2: Realice un circuito mínimo conversor de código exceso-3 (BCD) a 8 4 -2


-1, utilizando sólo inversores.

a) Tabla funcional:

CÓDIGO
Exceso-3 8 4 -2 -1
Decimal mi
E3 E2 E1 E0 A B C D
0 0 0 1 1 3 0 0 0 0
1 0 1 0 0 4 0 1 1 1
2 0 1 0 1 5 0 1 1 0
3 0 1 1 0 6 0 1 0 1
4 0 1 1 1 7 0 1 0 0
5 1 0 0 0 8 1 0 1 1
6 1 0 0 1 9 1 0 1 0
7 1 0 1 0 10 1 0 0 1
8 1 0 1 1 11 1 0 0 0
9 1 1 0 0 12 1 1 1 1
10 0-2 x x x x
:
15 13-15 x x x x

Obsérvese que el código exceso-3 sólo puede generarse hasta el 9 decimal,


puesto que se toma como base el código BCD. Asimismo, los minitérminos de
entrada para el código 8 4 -2 -1, son los que genera el código exceso-3, los
cuales se indican en la columna mi. También, los términos indiferentes
corresponden a aquellos que no aparecen a la salida del código exceso-3, puesto
que no se generarán.

b) Funciones de conmutación: Las funciones de conmutación a la salida del código 8 4 -2 -1,


pueden expresarse como suma de minitérminos, ya que no existe una condición previa:

A(E3,E2,E1,E0) = SUMAMINITÉRMINOS (8-12) + SUMAINDIFERENTES (0-2,13-15)


B(E3,E2,E1,E0) = SUMAMINITÉRMINOS (4-7,12) + SUMAINDIFERENTES (0-2,13-15)
C(E3,E2,E1,E0) = SUMAMINITÉRMINOS (4,5,8,9,12) + SUMAINDIFERENTES (0-2,13-15)
D(E3,E2,E1,E0) = SUMAMINITÉRMINOS (4,6,8,10,12) + SUMAINDIFERENTES (0-2,13-15)

d) Funciones de conmutación minimizadas:

A(E3,E2,E1,E0) = E3
B(E3,E2,E1,E0) = E2
C(E3,E2,E1,E0) = E1'
D(E3,E2,E1,E0) = E0'

3. Decodificación y corrección de errores.

Uno de los métodos más empleados para detectar y corregir errores es el código
desarrollado por Hamming. A continuación se presentan algunas definiciones iniciales:

 DISTANCIA: La distancia en un código, se define como el número de cambios (0 o 1)


que existen entre dos caracteres consecutivos.
 DISTANCIA MÍNIMA: La distancia mínima M de un código, se define como el
número mínimo de bits en que pueden diferir dos caracteres consecutivos
cualesquiera de un código.
La expresión que relaciona la distancia mínima, detección y corrección de errores es:

M - 1 = D + C para toda C <= D (1)

Donde:

M = Distancia mínima
D = Bits erróneos que se detectan
C = Bits erróneos que se corrigen

La Tabla 1, muestra la relación para diferentes valores de M, D y C:

Tabla 1
M D C
0 0 0
1 0 0
2 1 0
2 0 Código de
3
1 1 Hamming
3 0
4
2 1
4 0
5 3 1
2 2

Considerando a:

k = Número de bits de verificación de paridad

M=k

Entonces, la relación entre los bits de paridad y los bits del código original, está dada por la
siguiente expresión:

2k - 1 = k + n (2)

donde:

n = No. de bits del código original


k + n = No. de bits del nuevo código

La siguiente tabla, muestra la relación entre k y n, para algunos valores de k:


k n K+n
0 0 0
1 0 1
2 1 3
3 4 7 Código de Hamming
4 11 15
5 26 31

De la tabla anterior, se observa que entre más bits de seguridad se deseen en el código de
interés, el número de bits de éste aumenta considerablemente.

Para un código original de 4 bits A, B, C y D, al que le corresponden 3 bits de paridad C1,


C2 y C3, éstos se colocan en las posiciones 2n, con n=0,1,2; es decir, en las posiciones 1, 2 y 4,
como se muestra a continuación:

1 2 3 4 5 6 7
C1 C2 A C3 B C D

Cada bit de paridad se selecciona para generar paridad (par o impar) en las siguientes
posiciones:

C1 6 1,3,5,7
C2 6 2,3,6,7
C3 6 4,5,6,7

Una manera sencilla de recordar las posiciones para generar paridad de cada uno de los bits
de paridad, se muestra en la siguiente tabla:

1 2 3 4 5 6 7 Posición
C1 1 0 1 0 1 0 1 1,3,5,7
C2 0 1 1 0 0 1 1 2,3,6,7
C3 0 0 0 1 1 1 1 4,5,6,7

Por ejemplo, si se quiere transmitir 910 = 10012 con paridad par, el nuevo código será:

1 2 3 4 5 6 7
C1 C2 A C3 B C D
0 0 1 1 0 0 1 nuevo código
 Para C1: En las posiciones 3, 5 y 7, se tienen dos UNOS, obteniéndose paridad par, lo
que indica que hay que colocar un CERO en la posición 1.
 Para C2: En las posiciones 3, 6 y 7, se tienen dos UNOS, obteniéndose paridad par, lo
que indica que hay que colocar un CERO en la posición 2.
 Para C3: En las posiciones 5, 6 y 7, se tiene un solo UNO, lo que indica que hay que
colocar un 1 en la posición 4 para tener paridad par.

EJEMPLO 3. Dado el código exceso-3 (BCD), obtener el nuevo código con distancia
mínima de 3 (M = 3) y diseñar el circuito generador de paridad.

S
O
L
U
C
I
Ó
N

a) Tabla funcional.

Código exceso-3 Código a transmitir


DEC mi
E3 E2 E1 E0 C1 C2 E3 C3 E2 E1 E0
0 0 0 1 1 3 1 0 0 0 0 1 1
1 0 1 0 0 4 1 0 0 1 1 0 0
2 0 1 0 1 5 0 1 0 0 1 0 1
3 0 1 1 0 6 1 1 0 0 1 1 0
4 0 1 1 1 7 0 0 0 1 1 1 1
5 1 0 0 0 8 1 1 1 0 0 0 0
6 1 0 0 1 9 0 0 1 1 0 0 1
7 1 0 1 0 10 1 0 1 1 0 1 0
8 1 0 1 1 11 0 1 1 0 0 1 1
9 1 1 0 0 12 0 1 1 1 1 0 0
10 0-2 x x x
: : : : :
15 13-15 x x x

b) Funciones de conmutación: Las funciones de conmutación correspondientes a los bits


de verificación de paridad son:

C1(E3,E2,E1,E0) = SUMAMINITÉRMINOS (3,4,6,8,10) + SUMAINDIFERENTES (0-2,13-15)


C2(E3,E2,E1,E0) = SUMAMINITÉRMINOS (5,6,8,11,12) + SUMAINDIFERENTES (0-2,13-15)
C3(E3,E2,E1,E0) = SUMAMINITÉRMINOS (4,7,9,10,12) + SUMAINDIFERENTES (0-2,13-15)

De los mapas, se obtienen las siguientes funciones reducidas:

C1(E3,E2,E1,E0) = E3'E0' + E2'E0' + E3'E2'


(1) (2) (3)

C2(E3,E2,E1,E0) = E3E1'E0' + E2E1'E0 + E3E1E0 + E2E1E0' =


(1) (2) (3) (4)
= E3(E1'E0' + E1E0) + E2(E1'E0 + E1E0') =
= E3(E1 OEXC E0)' + E2(E1 OEXC E0)

C3(E3,E2,E1,E0) = E2E1'E0' + E2E1E0 + E3E1'E0 + E3E1E0' =


(1) (2) (3) (4)
= E2(E1 OEXC E0)' + E3(E1 OEXC E0)

EJEMPLO 4. Determinar las posiciones de paridad para los bits de verificación para k=4
(distancia mínima igual a 4).

S
O
L
U
C
I
Ó
N

Sustituyendo el valor de k en la expresión (1), se tiene:

2k - 1 = 24 - 1 = 15 = k + n

Por tanto, el número de bits del código original, n, es igual a 11. El código a transmitir
es de 15 bits (k+n).

La posición para determinar la paridad de los bits de verificación se obtiene de la siguiente


tabla:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
C2 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
C3 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C4 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Para C1: Se debe tener paridad par en las posiciones: 1,3,5,7,9,11,13,15


Para C2: Se debe tener paridad par en las posiciones: 2,3,5,7,10,11,14,15
Para C3: Se debe tener paridad par en las posiciones: 4,5,6,7,12,13,14,15
Para C4: Se debe tener paridad par en las posiciones: 8,9,10,11,12,13,14,15

Como los bits de verificación deben estar en una posición correspondiente a una combinación
binaria (1,2,4,8), entonces el código a transmitir es:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C1 C2 x10 C3 x9 x8 x7 C4 x6 x5 x4 x3 x2 x1 x0

Donde: C1, C2, C3 y C4 son los bits de verificación y x10, x9, ... , x0 corresponden al código
original.
4. Describir Código de verificación de paridad.

La transmisión de datos binarios de una localización a otra es un lugar común en todos los
sistemas digitales. Se presentan cuatro ejemplos de esto:

1. Salida de datos binarios desde una computadora y que están registrándose en cinta
magnética.
2. Transmisión de datos binarios por línea telefónica, tal como entre una
computadora y una consola remota.
3. Un número se toma de la memoria de la computadora y se coloca en la unidad
aritmética, en donde se añade a otro número. La suma es luego regresada a la
memoria.
4. Información almacenada en un disco flexible se lee para cargarse en la memoria de
una computadora personal.

El proceso de transferir datos está sujeto a error, aun cuando el equipo moderno ha sido
diseñado para reducir la probabilidad de error. Sin embargo, aun errores relativamente
infrecuentes pueden causar resultados inútiles, así que es deseable detectarlos siempre que ello
sea posible. Uno de los esquemas usados más ampliamente para la detección de errores es el
método de paridad.

Un bit de paridad es un bit extra que se agrega a un grupo codificado el cual se transmite de
una localización a otra. El bit de paridad se hace ya sea 0 o 1, dependiendo del número de unos
que están contenidos en el grupo codificado.

Se usan dos métodos diferentes. En el método de paridad par el valor del bit de paridad
se escoge de tal manera que el número total de unos en el grupo codificado (incluyendo el bit de
paridad) sea un número par. Supóngase por ejemplo, que el grupo codificado es 10110. El grupo
codificado tiene tres unos. Por tanto, se añade un bit de paridad de 1 para hacer el número total
de unos un valor par. El nuevo grupo codificado, incluyendo el bit de paridad es:

1
10110
^
bit de paridad añadido

Si el grupo codificado contiene un número par de unos inicialmente, el bit de paridad


recibe el valor de 0. Por ejemplo, si el código es 10100, el bit de paridad asignado sería 0, así
que el nuevo código, incluyendo el bit de paridad sería 101000.

El método de paridad impar se usa exactamente de la misma manera, excepto que el bit de
paridad se escoge de tal modo que el número total de unos (incluyendo el bit de paridad) sea
un número impar. Por ejemplo, para el grupo codificado 01100, el bit de paridad asignado
sería un 1. Para el grupo 11010, el bit de paridad sería un 0.
Sin importar si se usa paridad par o impar, el bit de paridad se añade a la palabra codificada
y es transmitido como parte de la palabra codificada. Los bits del grupo codificado están
representados por A, B y C. Estos bits pudieran venir de las salidas de un conversor de código. Se
alimentan entonces a un circuito generador de paridad, el cual es un circuito lógico que examina
los bits de entrada y produce un bit de paridad de salida del valor correcto.

La siguiente tabla muestra la forma de obtener los bits de paridad para el código binario de
3 bits. Pp y Pi, son las funciones resultantes de aplicar paridad par e impar, respectivamente.

Decimal A B C Pp Pi
0 0 0 0 0 1
1 0 0 1 1 0
2 0 1 0 1 0
3 0 1 1 0 1
4 1 0 0 1 0
5 1 0 1 0 1
6 1 1 0 0 1
7 1 1 1 1 0

Las funciones de conmutación correspondientes a los bits de verificación son:

Pp (A,B,C) = SUMAMINITÉRMINOS (1,2,3,4,7)


Pi (A,B,C) = SUMAMINITÉRMINOS (0,3,5,6)

Tanto de la tabla como de las ecuaciones, se observa que Pp y Pi son complementarios. La


figura adjunta muestra la reducción de Pp por mapas K:

La función reducida es:

Pp (A,B,C) = A'B'C + A'BC' + AB'C' + ABC =


(1) (2) (3) (4)
= A'(B'C + BC') + A(B'C' + BC) =
= A'(B OEXC C) + A(B OEXC C)' =
= A OEXC B OEXC C

Como Pi es el complemento de Pp, entonces:

Pi (A,B,C) = (A OEXC B OEXC C)'


El logigrama de Pp junto con una
posible aplicación es:

Cuando los bits transmitidos


alcanzan su destino, son alimentados
a un circuito comprobador de
paridad, el cual es un circuito
lógico que examina todos los bits
para determinar si la paridad correcta
está presente. En un sistema de
paridad par, el comprobador de
paridad generará una salida baja de
error si el número de entradas1 es un
número par y una salida de error
alta (indicando un error) si el
número de entradas 1 es impar. En
un sistema de paridad impar sería al
contrario.

Si ocurre un error en uno de los bits transmitidos, el circuito comprobador de paridad lo


detectará. Por ejemplo, supongamos que los bits del grupo codificado son 0110 y que estamos
usando un sistema de paridad impar. El circuito generador de paridad generará entonces un
1 para un bit de paridad, así que será transmitido 01101. Si estos bits llegan al comprobador
de paridad sin cambio, éste producirá una salida 0 (ningún error). Sin embargo, si uno de los
bits cambia antes de llegar al verificador de paridad (tal como 00101 en lugar de 01101), el
comprobador de paridad se hará alto indicando que ha ocurrido un error en la transmisión. La
salida de error puede usarse para sonar una alarma, detener la operación del sistema o
activar un indicador de error.

Debería ser aparente que este método de paridad puede detectar errores únicos pero no
puede detectar errores dobles. Esto es porque un error doble no cambiará la paridad del
grupo de bits, así que el verificador de paridad indicará ningún error. También, este método
de paridad no señala al error; esto es, no determina al bit erróneo. Para detectar y señalar
errores dobles, deberán usarse métodos más sofisticados, que permitan hacer correcciones.

Potrebbero piacerti anche