CAPITULO Nº2 CÓDIGOS. 2.1 Definiciones. Funciones de la codificación: Transmitir en forma fácil, rápida y segura los datos. Facilitar el procesamiento de datos. Descubrir y corregir errores. Mantener en secreto información. Capacidad : Número de valores diferentes que puede representar un código. Depende del número de dígitos usados. Palabra : Representación válida dentro de un código. Distancia: Número de dígitos diferentes que existen entre dos palabras del código. Código adyacente: Cuando las palabras vecinas tienen una distancia unitaria.
2.2 Códigos ponderados. En estos códigos, cada dígito tiene una ponderación establecida. Palabra : d n-1 d n-2... d 1 d 0 Ponderaciones : p n-1 p n-2...p 1 p 0 El número que representan se calcula como: N dec = d n-1 * p n-1 + d n-2 * p n-2 +... + d 1 * p 1 + d 0 * p 0 Código BCD (Binary Coded Decimal). Código ponderado en que cada cifra decimal se representa por 4 cifras binarias con cierta ponderación. La ponderación más usada es la 8421, en que los dígitos 0... 9 son representados por su respectivo binario de 4 dígitos (en este caso cada dígito puede ser 0 ó 1). Tabla BCD 8421 Dec d3 (p3=8) d2(p2=4) d1(p1=2) d0(p0=1) Desarrollo 0 0 0 0 0 0*8+0*4+0*2+0*1=0 1 0 0 0 1 0*8+0*4+0*2+1*1=1 2 0 0 1 0 0*8+0*4+1*2+0*1=2 3 0 0 1 1 0*8+0*4+1*2+1*1=3 4 0 1 0 0 0*8+1*4+0*2+0*1=4 5 0 1 0 1 0*8+1*4+0*2+1*1=5 6 0 1 1 0 0*8+1*4+1*2+0*1=6 7 0 1 1 1 0*8+1*4+1*2+1*1=7 8 1 0 0 0 0*8+0*4+0*2+0*1=8 9 1 0 0 1 1*8+0*4+0*2+1*1=9
Otras ponderaciones son BCD 2421, BCD1224, BCD 7421. Decimal BCD 8421 BCD 2421 0 0000 0000 1 0001 0001 2 0010 0010 1000 3 0011 0011 4 0100 1001 5 0101 0101 1011 6 0110 0110 1100 7 0111 0111 1101 8 1000 1110 9 1001 1111 Se observa que en BCD 2421 no hay representación única. En BCD 8421 si hay representación única.
2.3 Códigos autocomplementados. Un código es auto complementado cuando el complemento a la base disminuida de una palabra es también parte del código. Recordar que en caso binario se obtiene cambiando el valor de los bits o dígitos. Decimal BCD 8421 Exceso 3 BCD 2421 0 0000 0011 0000 1 0001 0100 0001 2 0010 0101 0010 1000 3 0011 0110 0011 4 0100 0111 1001 5 0101 1000 0101 1011 6 0110 1001 0110 1100 7 0111 1010 0111 1101 8 1000 1011 1110 9 1001 1100 1111 Según la tabla anterior se pueden realizar las siguientes observaciones: El código exceso 3 se obtiene sumando 0011 al código BCD 8421. Códigos exceso 3 y BCD 2421 son autocomplementados. Código BCD 8421 no es auto complementado.
2.4 Códigos adyacentes. 2.4.1 Conceptos. Un código es adyacente cuando las palabras vecinas tienen distancia 1. Los más utilizados son el código GRAY y el REFLEJADO EXESO 3. Decimal BCD 8421 GRAY Reflejado Exceso 3 0 0000 0000 0010 1 0001 0001 0110 2 0010 0011 0111 3 0011 0010 0101 4 0100 0110 0100 5 0101 0111 1100 6 0110 0101 1101 7 0111 0100 1111 8 1000 1100 1110 9 1001 1101 1010 2.4.2 Método de transformación de binario(bcd 8421) a gray. Se utiliza función binaria XOR (Or exclusivo) 0 xor 0 = 0 0 xor 1 = 1 Cifras iguales resultado 0 1 xor 0 = 1 Cifras distintas resultado 1 1 xor 1 = 0 Se parte del dígito binario menos significativo y se aplica la siguiente relación: gray (i) = bin (i) xor bin (i+1) Ejemplo: Convertir el binario 1100 a gray. b3 b2 b1 b0 1 1 0 0
g0 = b0 xor b1 = 0 xor 0 = 0 g1 = b1 xor b2 = 0 xor 1 = 1 g2 = b2 xor b3 = 1 xor 1 = 0 g3 = b3 xor b4 = 1 xor 0 = 1 g3 g2 g1 g0 1 0 1 0 2.4.3 Método de transformación de gray a binario. Método 1 Partiendo del dígito más significativo: b MS = g MS b(i + 1) b(i) = b(i + 1) si si g(i) = 0 g(i) = 1 Con b MS = Binario más significativo. g MS = Gray más significativo. Ejemplo : Transformar a binario el gray 1010 gray Gray : 1 0 1 0 Binario : 1xxx, 11xx, 110x, 1100 Método 2 Del mismo modo que el anterior, se parte del dígito del dígito más significativo, y se aplica la siguiente relación:
bms b(i) = g MS = b(i +1) exor g(i) Ejemplo : Transformar a binario el gray 1010 gray Gray : g3 g2 g1 g0 1 0 1 0 b3= g3 = 1 b3 b2 b1 b0 = 1 x x x b2= b3 exor g2 = 1 exor 0 = 1 b3 b2 b1 b0 = 1 1 x x b1= b2 exor g1 = 1 exor 1 = 0 b3 b2 b1 b0 = 1 1 0 x b0 = b1 exor g0 = 0 exor 0 = 0 b3 b2 b1 b0 = 1 1 0 0
2.5 Códigos detectores de error. 2.5.1 Conceptos. El esquema de comunicación más básico contempla 3 elementos importantes: El transmisor (Tx), el medio por el que se transmiten los datos y el receptor (Rx). En el caso de la transmisión de datos, es posible que la palabra transmitida no sea la misma que la palabra recibida, esto es, se ha producido un error de transmisión, lo cual en algunos casos se debe a imperfecciones en el medio de transmisión. Para la transmisión digital (se transmiten palabras binarias), existen técnicas basadas en la codificación que permiten detectar si ha existido un error de transmisión, es decir, permiten detectar diferencias en la palabra transmitida y la recibida. La detección de errores considera que el receptor es capaz de detectar que se ha producido un error de transmisión, pero no es capaz de saber que dígito binario es el que está errado, es decir, a través de la detección no se puede conocer la posición del error. En general, para la detección de errores como para la corrección de ellos, esta última considera la ubicación de bit errado, es necesario agregar información redundante que sirva para los propósitos anteriores, es decir, no sólo basta con transmitir la palabra deseada, sino que además se deben transmitir otros bits. Cuando el sistema detecta un error, la solución al problema consiste en volver a transmitir hasta que el error no se produzca. Las técnicas de detección de errores a estudiar son básicamente tres: El uso del bit de paridad, los códigos m de n y los códigos m de n ponderados. 2.5.2 Bit de paridad. Bit de paridad: Es un bit que se agrega a la palabra para verificar la paridad de unos.
Paridad par: El número de unos en la palabra más el bit de paridad deben ser pares. Paridad impar: El número de unos en la palabra más el bit de paridad deben ser impares. Ejemplo: Para el número de 7 bits 1001010 encontrar bit de paridad par e impar. Paridad bp b6 b5 b4 b3 b2 b1 b0 Par 1 1 0 0 1 0 1 0 Impar 0 1 0 0 1 0 1 0 Según lo anterior, se pueden realizar las siguientes observaciones: Este método es capaz de detectar un número impar de errores. Si existe en la transmisión un número par de errores, la cuenta de paridad es correcta.
2.5.3 Códigos m de n Estos códigos mantienen m unos en una palabra de n dígitos. error. Verificando la cantidad de 1s en la palabra recibida se observa si ha ocurrido un Típicamente se utilizan los códigos 2 de 5. Código 2 de 5 Walking Code. Decimal Walking Code 0 00011 1 00101 2 00110 3 01010 4 01100 5 10100 6 11000 7 01001 8 10001 9 10010 2.5.4 Códigos m de n ponderados Código 2 de 5 ponderado 50-43210 y 10-86420 Dec 50-43210 10-86420 0 01-00001 01-00001 1 01-00010 10-00001 2 01-00100 01-00010 3 01-01000 10-00010 4 01-10000 01-00100 5 10-00001 10-00100 6 10-00010 01-01000 7 10-00100 10-01000 8 10-01000 01-10000 9 10-10000 10-10000
2.6 Códigos correctores de errores. 2.6.1 Conceptos. La detección de errores considera que el sistema es capaz de darse cuenta que existe un error. En el caso de la corrección de errores, además de lo anterior, involucra la capacidad de saber la posición exacta del bit erroneo. Se presentan a continuación dos método para corregir errores en la transmisión: La Transmisión en bloque y el Código Hamming. 2.6.2 Transmisión en bloques. Se transmite un conjunto o bloque de palabras con un código detector de error (bit de paridad o código m de n). Junto con transmitir las palabras deseadas, se transmite una palabra de validación de paridad por columnas. Ejemplo: Transmitir los dígitos 1, 2, 4, 5, 9 en BCD 8421 con bit de paridad par, con paridad par por columnas. Dec bp b3 b2 b1 b0 1 1 0 0 0 1 2 1 0 0 1 0 4 1 0 1 0 0 5 0 0 1 0 1 9 0 1 0 0 1 V 1 1 0 1 1 Al producirse un error de transmisión se altera la paridad por filas y por columnas. La intersección de errores de paridad por filas y columnas indican el bit del bloque que está errado.
Ejemplo de error de transmisión: Dec bp b3 b2 b1 b0 1 1 0 0 0 1 2 1 1 0 1 0 4 1 0 1 0 0 5 0 0 1 0 1 9 0 1 0 0 1 V 1 1 0 1 1 error error Con este método es posible corregir varios errores. La cantidad de errores posibles de detectar y además corregir dependerá de la cantidad par o impar de errores que se produzcan en una fila o columna.
2.5.2 Código Hamming. Para poder detectar o corregir errores es necesario introducir bits redundantes. Si se quiere corregir un error, es necesario identificarla posición del error. En una palabra de n bits, m bits de datos y k dígitos de redundancia se cumple que: n = m + k Con k bits de redundancia se pueden direccionar 2 k 1 posiciones. Luego debe cumplirse que k: Bits de corrección. n: Bits totales del código. m: bits de datos en el código. 2 k -1 n = m + k m n k 1 3 2 2 5 3 3 6 3 4 7 3 5 9 4 Hamming propuso ubicar los bits redundantes o de validación en posiciones potencias de 2 y en las restantes posiciones ubicar los datos. Bits P de validación Bits D de datos. 1 2 3 4 5 6 7 8 9 10 11 P1 P2 D3 P4 D5 D6 D7 P8 D9 D10 D11 Cada bit de validación Pi debe producir paridad par (o impar) en determinadas posiciones según la siguiente tabla:
P1: 1, 3, 5, 7, 9, 11, 13, 17,... P2: 2, 3, 6, 7, 10, 11, 14, 15, 18,... P4: 4, 5, 6, 7, 12, 13, 14, 15, 20,... P8: 8, 9, 10, 11, 12, 13, 14, 15, 24,... Ejemplo: Codificar en Hamming el equivalente a 7 decimal en BCD 8421, utilizando para verificación paridad par. 7 (10) = 0 1 1 1 (BCD8421) 4 bits de datos implican 3 bits de redundancia 1 3 5 7 (P1, 0, 1, 1 ) => P1 = 0 2 3 6 7 (P2, 0, 1, 1 ) => P2 = 0 4 5 6 7 (P4, 1, 1, 1) => P4 = 1 P1 P2 D3 P4 D5 D6 D7 0 0 0 1 1 1 1 Si existe un error de transmisión, el análisis de la información de los datos recepcionados indicará la posición del error. Tx Rx P1 P2 D3 P4 D5 D6 D7 0 0 0 1 1 1 1 P1 P2 D3 P4 D5 D6 D7 0 0 0 1 1 0 1
Para obtener la posición del error se revisa la paridad de las posiciones anteriores incluyendo el bit P correspondiente. 1 3 5 7 ( 0, 0, 1, 1 ) => E1 = 0 2 3 6 7 (0, 0, 0, 1 ) => E2 = 1 4 5 6 7 ( 1, 1, 0, 1 ) => E4 = 1 La posición del error es la formada por los bits E de la siguiente forma: E4 E2 E1 = 1 1 0 2 = 6 10 En caso de no existir error los valores E i son todos ceros. 2.7 Códigos alfanuméricos. Son necesarios códigos alfanuméricos cuando no sólo se desean transmitir números, sino que caracteres. Los códigos alfanuméricos más usados son: ASCII (American Standard Code for Information Interchange). EBCDIC (Extended BCD Interchange). Usado por IBM. Para los códigos anteriores, ambos son de 8 bits. En el caso del ASCII el bit más significativo corresponde al bit de paridad (par o impar).
Tabla de Códigos Ascii y EBCDIC Carácter ASCII EBCDIC A 100 0001 1100 0001 B 100 0010 1100 0010 C 100 0011 1100 0011 D 100 0100 1100 0100 E 100 0101 1100 0101 F 100 0110 1100 0110 G 100 0111 1100 0111 H 100 1000 1100 1000 I 100 1001 1100 1001 J 100 1010 1101 0001 K 100 1011 1101 0010 L 100 1100 1101 0011 M 100 1101 1101 0100 N 100 1110 1101 0101 O 100 1111 1101 0110 P 101 0000 1101 0111 Q 101 0001 1101 1000 R 101 0010 1101 1001 S 101 0011 1110 0001 T 101 0100 1110 0010 U 101 0101 1110 0011 V 101 0110 1110 0100 W 101 0111 1110 0101 X 101 1000 1110 0111 Y 101 1001 1110 1000 Z 101 1010 1110 1001 0 011 0000 1111 0000 1 011 0001 1111 0001 2 011 0010 1111 0010 3 011 0011 1111 0011 4 011 0100 1111 0100 5 011 0101 1111 0101 6 011 0110 1111 0110 7 011 0111 1111 0111 8 011 1000 1111 1000 9 011 1001 1111 0001 Espacio 010 0000 0100 0000. 010 1110 0100 1011 ( 010 1000 0100 1101 + 010 1011 0100 1110 $ 010 0100 0101 1011 * 010 1010 0101 1100 ) 010 1001 0101 1101-010 1101 0110 0000 / 010 1111 0110 0001, 010 1100 0110 1011 = 010 1101 0111 1110