ELECTRONICA DIGITAL UNIDAD 1 2010 ELECTRONICA DIGITAL CAPITULO I. SISTEMA NUMERICOS, CODIGOS DIGITALES 1.1- SISTEMA DECIMAL, BINARIO, OCTAL Y HEXADECIMAL. 1.2- OPERACIONES ARITMETRICAS BASICAS. 1.3- SUSTRACCION MEDIANTE COMPLEMENTOS. 1.4- CODIGOS NUMERICOS. 1.5- CONVERSION ENTRE LOS DIFERENTES CODIGOS NUMERICOS. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 1 ELECTRONICA DIGITAL UNIDAD 1 2010 1.1- SISTEMA DECIMAL, BINARIO, OCTAL Y HEXADECIMAL. SISTEMA DECIMAL El sistema decimal es un sistema de numeración posicional en el que las cantidades se representan utilizando como base el número diez, por lo que se compone de diez cifras diferentes: cero (0); uno (1); dos (2); tres (3); cuatro (4); cinco (5); seis (6); siete (7); ocho (8) y nueve (9). Este conjunto de símbolos se denomina números árabes, y es de origen indú. Es el sistema de numeración usado habitualmente en todo el mundo (excepto ciertas culturas) y en todas las áreas que requieren de un sistema de numeración. Sin embargo hay ciertas técnicas, como por ejemplo en la informática, donde se utilizan sistemas de numeración adaptados al método de trabajo como el binario o el hexadecimal. También pueden existir en algunos idiomas vestigios del uso de otros sistemas de numeración, como el quinario, el duodecimal y el vigesimal. Según los antropólogos, el origen del sistema decimal está en los diez dedos que tenemos los humanos en las manos, los cuales siempre nos han servido de base para contar. ¿Cómo trabaja o funciona el sistema decimal? Observando el gráfico Un número en el Sistema Decimal se divide en cifras con diferente peso. Las unidades tienen peso 1, las decenas peso 10, las centenas peso 100, los miles peso 1000, etc. Cada peso tiene asociado una potencia de 10. En el caso de las unidades la potencia de diez es 100, en el caso de los miles o millares la potencia de diez es 103 .Entonces para formar el número 3427: ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 2 ELECTRONICA DIGITAL UNIDAD 1 2010 Sistema decimal en el idioma español Lo más usual en español es utilizar un punto como separador de millares, un subíndice 1 como separador de millones, un subíndice 2 como separador de billones, 3 de trillones, etc., y una coma coma, alta ( ' ) o baja ( , ) como separador decimal. Algunas veces, mediante un espacio, agrupándolos cada tres dígitos, contando desde las unidades. Fracciones Algunas fracciones muy simples, como 1/3, tienen infinitas cifras decimales. Por eso, algunos han propuesto la adopción del sistema duodecimal, en el que 1/3 tiene una representación más sencilla. 1/2 = 0,5 1/3 = 0,3333... 1/4 = 0,25 1/5 = 0,2 1/6 = 0,1666... 1/7 = 0,142857142857... Tabla de multiplicar Búsqueda de números primos En base 10, un número primo sólo puede acabar en 1, 3, 7 o 9. Las 7 posibilidades restantes generan siempre números compuestos: * Los acabados en 2, 4, 6, 8 y 0 son múltiplos de 2, * Los acabados en 5 y 0 son múltiplos de 5. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 3 ELECTRONICA DIGITAL UNIDAD 1 2010 SISTEMA BINARIO El sistema binario, en matemáticas e informática, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, pues trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). Representación Un número binario puede ser representado por cualquier secuencia de bits (dígitos binarios), que suelen representar cualquier mecanismo capaz de estar en dos estados mutuamente excluyentes. Las siguientes secuencias de símbolos podrían ser interpretadas como el mismo valor numérico binario: 1 | x y 0 o n 1 | x y 0 o n 0 o n 1 | x y 1 | x y 0 o n 1 | x y 0 o n El valor numérico representado en cada caso depende del valor asignado a cada símbolo. En una computadora, los valores numéricos pueden representar dos voltajes diferentes; también pueden indicar polaridades magnéticas sobre un disco magnético. Un "positivo", "sí", o "sobre el estado" no es necesariamente el equivalente al valor numérico de uno; esto depende de la nomenclatura usada. De acuerdo con la representación más habitual, que es usando números árabes, los números binarios comúnmente son escritos usando los símbolos 0 y 1. Los números binarios se escriben a menudo con subíndices, prefijos o sufijos para indicar su base. Las notaciones siguientes son equivalentes: 100101 binario (declaración explícita de formato) 100101b (un sufijo que indica formato binario) 100101B (un sufijo que indica formato binario) bin 100101 (un prefijo que indica formato binario) 1001012 (un subíndice que indica base 2 (binaria) notación) %100101 (un prefijo que indica formato binario) 0b100101 (un prefijo que indica formato binario, común en lenguajes de programación) ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 4 ELECTRONICA DIGITAL UNIDAD 1 2010 SISTEMA OCTAL El sistema numérico en base 8 se llama octal y utiliza los dígitos 0 a 7. Por ejemplo, el número binario para 74 (en decimal) es 1001010 (en binario), lo agruparíamos como 1 / 001 / 010, de tal forma que obtengamos una serie de números en binario de 3 dígitos cada uno (para fragmentar el número se comienza desde el primero por la derecha y se parte de 3 en 3), después obtenemos el número en decimal de cada uno de los números en binario obtenidos: 1=1, 001=1 y 010=2. De modo que el número decimal 74 en octal es 112. Hay que hacer notar que antes de poder pasar un número a octal es necesario pasar por el binario. Para llegar al resultado de 74 en octal se sigue esta serie: decimal -> binario -> octal. En informática, a veces se utiliza la numeración octal en vez de la hexadecimal. Tiene la ventaja de que no requiere utilizar otros símbolos diferentes de los dígitos. Sin embargo, para trabajar con bytes o conjuntos de ellos, asumiendo que un byte es una palabra de 8 bits, suele ser más cómodo el sistema hexadecimal, por cuanto todo byte así definido es completamente representable por dos dígitos hexadecimales. Es posible que la numeración octal se usara en el pasado en lugar del decimal, por ejemplo, para contar los espacios interdigitales o los dedos distintos de los pulgares. Tabla de multiplicación octal ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 5 ELECTRONICA DIGITAL UNIDAD 1 2010 SISTEMA HEXADECIMAL El sistema de numeración más utilizado actualmente en computación es el hexadecimal o base 16, el cual consta de 16 dígitos símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F . El sistema hexadecimal un sistema de numeración vinculado a la informática, ya que los ordenadores interpretan los lenguajes de programación en bytes, que están compuestos de ocho dígitos. A medida de que los ordenadores y los programas aumentan su capacidad de procesamiento, funcionan con múltiplos de ocho, como 16 o 32. Por este motivo, el sistema hexadecimal, de 16 dígitos, es un estándar en la informática. Como nuestro sistema de numeración sólo dispone de diez dígitos, debemos incluir seis letras para completar el sistema. Estas letras y su valor en decimal son: A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. El sistema hexadecimal es posicional y por ello el valor numérico asociado a cada signo depende de su posición en el número, y es proporcional a las diferentes potencias de la base del sistema que en este caso es 16. Veamos un ejemplo numérico Por ejemplo: 3E0A16 = 3×163 + E×162 + 0×161 + A×160 = 3×4096 + 14×256 + 0×16 + 10×1 = 15882. Tabla de multiplicar hexadecimal ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 6 ELECTRONICA DIGITAL UNIDAD 1 2010 1.2- OPERACIONES ARITMETRICAS BASICAS. Operaciones con números binarios Suma de números binarios Las posibles combinaciones al sumar dos bits son: *0+0=0 *0+1=1 *1+0=1 * 1 + 1 = 0 al sumar 1+1 siempre nos llevamos 1 a la siguiente operación (acarreo).Ejemplo 10011000 + 00010101 ——————————— 10101101 Se puede convertir la operación binaria en una operación decimal, resolver la decimal, y después transformar el resultado en un (número) binario. Operamos como en el sistema decimal: comenzamos a sumar desde la derecha, en nuestro ejemplo, 1 + 1 = 10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1" se llama acarreo o arrastre). A continuación se suma el acarreo a la siguiente columna: 1 + 0 + 0 = 1, y seguimos hasta terminar todas la columnas (exactamente como en decimal). Resta de números binarios El algoritmo de la resta en sistema binario es el mismo que en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. Las restas básicas 0 - 0, 1 - 0 y 1 - 1 son evidentes: *0-0=0 *1-0=1 *1-1=0 * 0 - 1 = 1 (se transforma en 10 - 1 = 1) (en sistema decimal equivale a 2 - 1 = 1) ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 7 ELECTRONICA DIGITAL UNIDAD 1 2010 La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 0 - 1 = 1 y me llevo 1, lo que equivale a decir en el sistema decimal, 2 - 1 = 1. Ejemplos 10001 -01010 —————— 00111 11011001 -10101011 ————————— 00101110 En sistema decimal sería: 17 - 10 = 7 y 217 - 171 = 46. Para simplificar las restas y reducir la posibilidad de cometer errores hay varios métodos: * Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una resta larga en tres restas cortas: 100110011101 -010101110010 ————————————— 010000101011 = 1001 -0101 ————— 0100 1001 -0111 ————— 0010 1101 -0010 ————— 1011 * Utilizando el complemento a dos (C2). La resta de dos números binarios puede obtenerse sumando al minuendo el «complemento a dos» del sustraendo. Ejemplo La siguiente resta, 91 - 46 = 45, en binario es: 1011011 -0101110 ———————— 0101101 el C2 de 0101110 es 1010010 1011011 +1010010 ———————— 10101101 En el resultado nos sobra un bit, que se desborda por la izquierda. Pero, como el número resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia. Producto de números binarios El algoritmo del producto en binario es igual que en números decimales; aunque se lleva a cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el elemento neutro del producto. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 8 ELECTRONICA DIGITAL UNIDAD 1 2010 Por ejemplo, multipliquemos 10110 por 1001: 10110 1001 ————————— 10110 00000 00000 10110 ————————— 11000110 En sistemas electrónicos, donde suelen usarse números mayores, se utiliza el método llamado algoritmo de Booth. 11101111 111011 __________ 11101111 11101111 00000000 11101111 11101111 11101111 ______________ 11011100010101 División de números binarios La división en binario es similar a la decimal; la única diferencia es que a la hora de hacer las restas, dentro de la división, éstas deben ser realizadas en binario. Ejemplo Dividir 100010010 (274) entre 1101 (13): 100010010 |1101 —————— -0000 010101 ——————— 10001 -1101 ——————— 00100 - 0000 ——————— 10000 - 1101 ——————— 00011 - 0000 ——————— 01110 - 1101 ——————— 00001 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 9 ELECTRONICA DIGITAL UNIDAD 1 2010 Sistema Octal Para el sistema octal utilizamos los símbolos {0,1,2,3,4,5,6,7} y por la característica de los sistemas posicionales con conocer las operaciones de adición y multiplicación para estos valores se puede calcular el de los demás con un algoritmo similar al de base 10 o de base 2. A partir de este punto, los números están en base 8. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 10 ELECTRONICA DIGITAL UNIDAD 1 2010 Tabla de multiplicación octa ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 11 ELECTRONICA DIGITAL UNIDAD 1 2010 SISTEMA HEXADECIMAL Suma hexadecimal. Se debe restar o dividir la semisuma de cada columna, cuando la misma exceda la base del sistema, y colocar en la columna inmediata del lado izquierdo, el valor del acarreo tantas veces se haya superado la base del sistema. Cada unidad que se acarree equivale a dieciséis unidades de la columna anterior. Ejemplo: Dado los números binarios: Multiplicación hexadecimal: Ej: Multiplicar A. 67D3416 y B. 1216 División hexadecimal ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 12 ELECTRONICA DIGITAL UNIDAD 1 2010 1.3- SUSTRACCION MEDIANTE COMPLEMENTOS. Complementos Los complementos se utilizan para operaciones de sustracción y manipulaciones lógicas. Para un sistema base r existen dos complementos: el complemento de r y complemento de (r-1). En el caso de los números binarios seria complemento de dos y complemento de uno respectivamente. El complemento 1 es útil en manipulaciones lógicas y el complemento 2 se utiliza en operaciones aritméticas. Complemento de 2 de Números Binarios Signados. Para un número positivo N base r con parte entera de n dígitos su complemento r de N es: Si se observa detenidamente se puede notar que el complemento de 2 se puede obtener dejando intactos los 0 menos significativos y el primer 1 menos significativo y cambiando todos los demás 1 por 0 y los 0 por 1. Complemento de 1 de Números Binarios Signados. Para un número positivo N base r con parte entera de n dígitos y parte fraccionaria de m dígitos su complemento (r-1) de N es Analizando el resultado del complemento de 1 se observa que es muy sencillo determinarlo, únicamente se tienen que sustituir los 0 por 1 y los 1 por 0. Sustracción con Complementos de 2 Al realizar una resta comúnmente se utiliza el método de préstamo de la posición mas alta cuando el minuendo es menor que el sustraendo. Sin embargo en un sistema digital resulta más eficiente el método de sustracción por complementos. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 13 ELECTRONICA DIGITAL UNIDAD 1 2010 El procedimiento de sustracción utilizando el complemento de 2 para dos números positivos (M –N) es: Sumar M al complemento 2 de N Verificar resultado. ¿Existe acarreo final? Si: El resultado de M – N es el resultado que se obtuvo en la suma del paso 1 No: El resultado de M – N es el complemento 2 del resultado que se obtuvo de la suma en el paso 1 anteponiendo el signo negativo. Ejemplos: Sustracción con Complementos de 2 Sustracción con Complementos de 1 El procedimiento de sustracción utilizando el complemento de 1 para dos números positivos (M –N) es: Sumar M al complemento 1 de N Verificar resultado. ¿Existe acarreo final? Si: Agregar 1 al dígito menos significativo que se obtuvo en la suma del paso 1 y ese es el resultado de M – N. No: El resultado de M – N es el complemento 1 del resultado que se obtuvo de la suma en el paso 1 anteponiendo el signo negativo. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 14 ELECTRONICA DIGITAL UNIDAD 1 2010 Ejemplos: Sustracción con Complementos de 1 1.4- CODIGOS NUMERICOS. Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los números de punto fijo y de punto flotante son ejemplos de estos códigos. Números de punto fijo. Se utilizan para representar tanto enteros con signo como fracciones con signo. En ambos casos se usan los mismos sistemas de magnitud y signos de complemento a dos o de complemento a uno para representar los valores con signo. Los enteros de punto fijo tienen un punto binario implícito a la derecha del bit menos significativo; las fracciones de punto fijo tienen un punto binario implícito entre el bit de signo y el bit más significativo. Ejemplo 1. Dar dos posibles interpretaciones del número de punto fijo de ocho bits 01101010 usando el sistema de complemento a dos. Como el bit de signo es 0, el número representa el entero positivo 1101010, o bien la fracción positiva 0.1101010. Ejemplo 2. Dar dos posibles interpretaciones del número de punto fijo de 8 bits 11101010, usando el sistema de complemento a dos. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 15 ELECTRONICA DIGITAL UNIDAD 1 2010 El bit del signo es 1, por tanto el número representa a -0010110, o bien 0.0010110. Representaciones con exceso o sesgadas. Una representación con exceso K de un código C se forma sumando el valor K a cada palabra del código C. Las representaciones con exceso se utilizan a menudo para representar los exponentes de los números de punto flotante. La representación con exceso 8 de la tabla siguiente, se obtiene al sumar (1000)2 al código de 4 bits. Código con exceso 8 Números de punto flotante. Un número de punto flotante es un número N que se escribe como, N = M ´ rE donde M, la mantisa, es un número de punto fijo que contiene los dígitos significativos de N y E, el exponente o característica, es un entero de punto fijo. Al deducir la representación de un número de punto flotante, la mantisa y la característica se codifican por separado. La base es implícita y no se incluye en la representación. La mantisa, muchas veces, se codifica con magnitud y signo, por lo general como una fracción Códigos de caracteres Decimal Codificado en Binario (BCD). Sirve para representar los dígitos decimales del 0 al 9 y es un ejemplo de un código ponderado, es decir, cada posición de bit en el código tiene un valor o peso numérico fijo asociado a ella. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 16 ELECTRONICA DIGITAL UNIDAD 1 2010 Este código asigna una representación binaria sin signo de 4 bits a cada dígito entre 0 y 9, no usándose las palabras del código entre 1010 y 1111. La conversión entre las representaciones BCD y decimal se puede llevar a cabo simplemente sustituyendo 4 dígitos BCD por cada dígito decimal y viceversa. Sin embargo, en la práctica se suelen agrupar dos dígitos BCD en un byte de 8 bits, que por tanto puede representar cualquier valor comprendido entre 0 y 99. Ejemplo 3. Codificar el número N = (9750)10 en BCD. Después se concatenan los códigos individuales para obtener N = (1001011101010000) El código BCD se puede utilizar en operaciones aritméticas. La suma es la más importante de estas operaciones, ya que las otras tres se pueden llevar a cabo utilizando la suma. Para sumar dos números en formato BCD se siguen los siguientes pasos: Se suman utilizando las reglas de la suma binaria. Si una suma de cuatro bits es igual o menor que 9, es un número BCD válido. Si una suma de 4 bits es mayor que 9, o si se genera un acarreo en el grupo de 4 bits, el resultado no es válido. En este caso, se suma 6 (0110) al grupo de 4 bits para saltar así los 6 estados no válidos y pasar al código BCD. Si se genera un acarreo al sumar 6, éste se suma al grupo de 4 bits siguiente. Código ASCII. Es el código de caracteres más utilizado en las aplicaciones de cómputo. Por sus siglas en ingles se llama Código estándar americano para intercambio de información. En general, una cadena de bits puede representar cualquier carácter, numérico o no. Dado que la mayoría de los procesadores de datos incluyen texto, los caracteres que se usan mas frecuentemente forman parte de un alfabeto, que se representa en el computador con una cadena de bits particular. En este código, cada carácter se representa con una cadena de 7 bits. Este código codifica 128 caracteres diferentes, incluyendo mayúsculas y minúsculas, números, algunos signos de puntuación, y una serie de caracteres de control. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 17 ELECTRONICA DIGITAL UNIDAD 1 2010 Cada una de las palabras del código ASCII suele almacenar en un byte, que incluye un bit de paridad extra que se usa para detección de errores. Código Gray. Un código cíclico se puede definir como cualquier código en el que, para cualquier palabra de código, un corrimiento circular produce otra palabra del código. El código Gray es uno de los tipos más comunes de códigos cíclicos y tiene la característica de que las palabras de código para dos números consecutivos difieren sólo en un bit. Es decir, la distancia entre las dos palabras de código es 1. En general la distancia entre dos palabras de código binario es igual al número de bits en que difieren las dos palabras. Para la conversión de código binario a código gray se siguen los siguientes pasos: El bit más significativo en el código gray, es el mismo de código binario. Yendo de izquierda a derecha, sumar cada par adyacente de los bits en código binario para obtener el siguiente bit en código gray. Se descartan los acarreos. Para convertir de código gray a binario, se siguen los pasos siguientes: El bit más significativo en código binario, es el mismo que el correspondiente bit en código gray. A cada bit del código binario generado, se le suma el bit en código gray de la siguiente posición adyacente. Se descartan los acarreos. Ejemplo 4. Defina un código Gray para codificar los números decimales del 0 al 15. Solución. Se necesitan cuatro bits para representar todos los números, y podemos construir el código necesario asignando al bit i de la palabra de código el valor 0 sí los bits i e i + 1 del número binario correspondientes son iguales, y 1 en caso contrario.El bit más significativo del número siempre se debe comparar con 0 al utilizar esta técnica. El código resultante es: ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 18 ELECTRONICA DIGITAL UNIDAD 1 2010 Código de detección de errores. Un proceso de comunicación puede tener lugar en diversas formas: por ejemplo al hacer una llamada telefónica, al enviar un telegrama, al usar un lenguaje de signos. En tales casos, el proceso involucra el flujo de información a través de un medio, el cual va del remitente al receptor. El medio que lleva la información puede ir de la mímica al habla, o la electricidad al agua, o una secuencia de dígitos binarios y puede ser tan intangible como cualquier cosa mediante la cual una mente humana puede afectar a otra. En cualquier caso, un proceso de comunicación involucra un flujo de información a través de un sistema. Un sistema de comunicación ideal se puede representar por tres partes esenciales a saber: o Transmisor, remitente o fuente o Canal o medio de almacenamiento o Receptor En la práctica, un canal de comunicación está sujeto a una a diversidad de perturbaciones que resultan en una distorsión del mensaje que se está trasmitiendo. Cualquier alteración de estas se llama ruido. La forma en la cual el ruido puede aparecer depende del canal. Por ejemplo, en una conversación entre dos personas, el canal puede estar sujeto a ruidos, tales como el viento, un carro que pasa, otras voces. En cualquier caso, se trata de minimizar las pérdidas debidas al ruido y recuperar de una manera óptima el mensaje original cuando se ha contaminado por la presencia del ruido. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 19 ELECTRONICA DIGITAL UNIDAD 1 2010 Un dispositivo que se puede usar para mejorar la eficiencia del canal de comunicación es un codificador que transforma el mensaje que llega de tal manera que se puede detectar la presencia del ruido en el mensaje transformado. El uso de un codificador requiere que se use un decodificador para transformar el mensaje codificado a su forma original que el receptor pueda entender. Es posible no sólo detectar la distorsión debida al ruido si no también corregir el mensaje al usar un codificador apropiado y mostrar la presencia del ruido en el canal. El modelo sería así: Esta parte se ocupa de los canales de comunicación que manejan símbolos de un conjunto especifico llamado alfabeto del lenguaje de comunicación. Cualquier elemento del alfabeto se llamará un símbolo, letra o carácter. Una secuencia finita de caracteres se llama mensaje o palabra. La longitud de una palabra x que se denota L(x) es el número de símbolos de la palabra. Cuando los mensajes originalmente expresados en un lenguaje, se transforman en un mensaje en otros lenguajes, de una manera que sea comprensible para ambos, el transmisor y el receptor, de modo que estos mensajes se puedan transformar sin ambigüedades al regreso, entonces se puede decir que estos mensajes están codificados. El proceso de codificación de o enciframiento es un procedimiento para asociar palabras de un lenguaje, con ciertas palabras de otro lenguaje de una manera uno a uno. De igual manera el proceso de decodificación o desciframiento, o es la operación inversa, o alguna otra transformación uno a uno. En la mayoría de las aplicaciones el canal de comunicación está limitado a un alfabeto valuado de manera binaria cuyas señales se pueden denotar como 0 y 1. Un canal así se llama canal binario. Cualquier código de n bits s e puede considerar como un subconjunto de todas las posibles cadenas de n bits. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 20 ELECTRONICA DIGITAL UNIDAD 1 2010 Las cadenas incluidas en este subconjunto particular se denominan palabras código, mientras las cadenas que no están incluidas se denominan palabras que no son del código. Un código se dice que es un código de detección de errores si tiene la propiedad de que ciertos tipos de errores pueden transformar palabras del código en palabras que no son del código. Suponiendo que se utilizan sólo palabras del código para la transmisión de datos, cualquier error introducido durante la transmisión se pondrá de manifiesto inmediatamente puesto que cambiará palabras del código en palabras que no son del código. Es decir, si la cadena recibida es una palabra del código, los datos son correctos; si no es una palabra del código, los datos deben ser erróneos Ejemplo 5. Codifique el alfabeto de 8 símbolos denotados con el conjunto [A, B, C,...H]. Cada una de las letras se puede representar con una secuencia de tres dígitos binarios. Un código posible es el siguiente: Si en este ejemplo se cambia un mensaje transportado por un canal, debido a alteraciones o ruido, entonces el receptor cometerá un error indetectable e incorregible porque cualquiera intercambio de 0 y 1 en una secuencia de código en especial resulta en una secuencia de códigos diferentes. Por ejemplo si la secuencia 000 para A se cambia por ruido a 100 entonces se identificará como 100, entonces, se decodificará como E. Se modificará ahora el código al añadirle el dígito extra o redundante a cada secuencia de 3 bits como se muestra en la siguiente tabla: ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 21 ELECTRONICA DIGITAL UNIDAD 1 2010 Este dígito de más se escoge para que sea 1 si la suma de los tres dígitos del código original es impar; si no sucede así, se escoge para que sea 0. Un error sencillo en una secuencia de código en particular produce otra secuencia que no pertenece al código. Por ejemplo, la secuencia de código 0000 para A se podría transformar por el ruido en cualquiera de las secuencias 0001, 0010, 0100, 1000. Ninguna de estas secuencias resultantes aparece en el código y de inmediato se detecta un error. Así la redundancia en el código permite detectar un error de un dígito por secuencia de código. Obsérvese que la secuencia 0001 se puede producir por un error de un solo dígito de las secuencias para A, B, C, o E, por consiguiente, no es posible corregir el error. Al introducir redundancias adicionales, es posible tanto detectar como corregir uno o más errores por secuencia de códigos. Se tendrán en cuenta las siguientes definiciones: Un error en un dato binario se define como un valor incorrecto en uno más bits. Un ERROR SIMPLE es un valor incorrecto en un solo bit. Un ERROR MULTIPLE se refiere a la existencia de uno o más bits incorrectos. Sean I y J palabras de información binaria de n bits. El peso de I, w(I), se define como el número de bits de I igual a 1. La DISTANCIA entre I Y J que se designa por d(I, J), es igual al número de bits en que difieren I y J. Ejemplo 6. Sí I=(01101100) y J= (11000100) w(I)=4, w(J)=3, d(I, J)=3 La tarea básica en la transmisión de información es eliminar la probabilidad de recibir una palabra diferente a la enviada. Esto se hace de la siguiente forma: ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 22 ELECTRONICA DIGITAL UNIDAD 1 2010 Se elige un entero n > m y una función uno a uno e: Bm ®Bn.La función e es la función de codificación. Si a Î Bm, entonces e(a) Î Bn, es la palabra codificada que representa a a. Los ceros y unos adicionales pueden proporcionar el medio para detectar o corregir los errores producidos en el canal de transmisión así: En general se pueden presentar errores en la transmisión. La palabra codificada ha sido trasmitida con k o menores errores si x y xt difieren en al menos una pero no más de k posiciones. Sí e: Bm ®Bn es una función de codificación, se dice que detecta k o menos errores si al trasmitir x= e(b) con k o menos errores, entonces xt no es una palabra codificada. Ejemplo 7. (código de verificación de paridad) La siguiente función de codificación e: Bm ®Bm+1 es el código de verificación de paridad. Hay que observar que bm+1 es cero si y solo si el número de unos en b es par. Lo anterior implica que cada palabra calificada e(b) tiene peso par. Un solo error en la transmisión de la palabra codificada cambia la palabra recibida por una palabra de peso impar y por lo tanto es posible detectarla. De la misma forma se puede detectar cualquier número impar de errores. Ejemplo 8. Sea en el ejemplo anterior m = 3, Entonces: e(000) = 0000 e(001) = 0011 e(010) = 0101 e(011) = 0110 e(100) = 1001 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 23 ELECTRONICA DIGITAL UNIDAD 1 2010 e(101) = 1010 e(110) = 1100 e(111) = 1111 Suponga ahora que b = 111, entonces x = e(111) = 1111. Si el canal de transmisión transmite x como xt = 1101 sabemos que ha ocurrido un número impar de errores. Se define la distancia mínima de una función de codificación e: Bm ® Bn como la mínima distancia entre todas las distintas parejas de palabras codificadas. Ejemplo 9. Considere la siguiente función de codificación e(00) = 0000 e(10) = 00111 Se puede verificar que la distancia mínima e(01) = 01110 es dos e(11) = 11111 10.5.1 Teorema. Una función de codificación e: B m ®Bn puede detectar K ó menos errores si y sólo si su distancia mínima es al menos K + 1. Demostración. Suponga que la distancia mínima entre dos palabras codificadas es al menos K + 1. Sea b Î Bm, y sea x = e(b) Î B n la palabra codificada que representa a b. Entonces x es transmitida y recibida como xt1. Si xt fuera una palabra codificada diferente de x, entonces d(x, xe) ³ K + 1 de modo que x sería transmitida con K ó menos errores, entonces xt no puede ser una palabra codificada. Esto significa que e puede detectar K ó menos errores. Ejemplo 10. Considere la función de codificación e: B3 ®B8 definida por: e(000) = 00000000 e(101) = 10001001 e(001) = 10111000 e(110) = 00011100 e(010) = 00101101 e(111) = 00110001 e(011) = 10010101 e(100) = 10100100 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 24 ELECTRONICA DIGITAL UNIDAD 1 2010 ¿ Cuántos errores detectará e? La distancia mínima de e es 3. Por tanto, el código detectara K o menos errores si y sólo si su distancia mínima es al menos K + 1. Como la distancia mínima es 3, se tiene que 3 ³ K + 1, o K £ 2, Así, el código detectará 2 o menos errores. En cursos mas avanzados se verán procedimientos para generar ciertos códigos llamados códigos de grupo. Decodificación y corrección de errores. Considérese una función de codificación e: Bm ® Bn. Una vez la palabra x = e(b) Î Bn con b Î Bm, es recibida como la palabra xt, surge el problema de identificar la palabra b que era el mensaje original. Una función sobre d: Bn ® Bm es una función de codificación asociada a e sí d(xt) = b’ Î Bm. Si el canal de transmisión no tiene unido, entonces b’ = b. La función de decodificación debe ser sobre, para que cada palabra recibida pueda decodificarse para obtener una palabra de Bm. Esta función decodifica en forma adecuada las palabras recibidas de manera correcta, pero la decodificación de las palabras recibidas en forma inadecuada puede o no ser correcta. Una función e de codificación y una función d de decodificación corrige k o menos errores si siempre que x = e(b) se trasmite en forma correcta, o k o menos errores, y se recibe xt, entonces d (xt) = b. así xt se decodifica como el mensaje correcto b. Se puede demostrar que se corrigen k o menores errores sí y sólo sí la distancia mínima de e es al menos 2k+1. Ejemplo 11. Considérese la función de codificación definida como e: Bm® B3m definida como e(b) = b1 b2…bmb1 b2…bmb1 b2…bm donde b= b1 b2…bm. O sea: E(000)= 000000000 E(001)= 001001001 E(010)= 010010010 E(011)= 011011011 E(101)= 101101101 E(110)= 110110110 E(100)= 100100100 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 25 ELECTRONICA DIGITAL UNIDAD 1 2010 E(111)= 111111111 Si, por ejemplo, se supone b = 011 y que el canal de transmisión recibe 011111011. Esta no es una palabra codificada, por lo que se ha detectado un error. Así es posible detectar un error simple y dos errores arbitrarios cualesquiera. ¿Cómo se corregiría? Considere la función de decodificación d: B3m ® Bm tal que Y = y1y2…ymym+1y2my2m+1…y3m, donde d(y)= z1 z2…zm Es decir la función de decodificación d examina el i-ésimo dígito en cada uno de los tres bloques trasmitidos. Se elige el dígito que aparece al menos dos veces en estos tres bloques como el iesimo dígito decodificado. Así si m = 3 y b = 011 y el canal comete un error y se recibe xt=011111011,entonces, como los primeros dígitos en dos de los tres bloques son cero, el primer dígito se codifica como cero. De manera análoga el segundo dígito se decodifica como uno, ya que los tres segundos dígitos en los tres bloques son unos. Por ultimo, el tercer dígito también se decodifica como uno, por una razón análoga, por tanto d(xt)=011. Es decir, este código corrige cualquier error simple. Hay códigos que permiten simultáneamente detectar y corregir errores; para ello basta usar un código con una distancia mínima de 2x + y + 1, que permite corregir hasta x errores de un solo bit y detectar hasta y errores adicionales Códigos de Hamming. Es un método general propuesto por R. W Hamming usando una distancia mínima m. Con este método, por cada entero m existe un código de hamming de 2m-1 bits que contiene m bits de paridad y 2m-1-m bits de información. En este código, los bits de paridad y los bits de paridad se encuentran entremezclados de la siguiente forma: Si se numeran las posiciones de los bits desde 1 hasta 2m-1, los bits en la ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 26 ELECTRONICA DIGITAL UNIDAD 1 2010 posición 2k, donde , son los bits de paridad y los bits restantes son bits de información. El valor de cada bit de paridad se escoge de modo que el total de unos en un número específico de bits sea par, y estos grupos se escogen de tal forma que ningún bit de información se cubra con la misma combinación de bits de paridad. Es lo anterior lo que proporciona al código su capacidad de corrección. Para cada bit de paridad en la posición 2k, su grupo de bits de información correspondiente incluye todos esos bits de información correspondiente cuya representación binaria tenga un uno en la posición 2k. La siguiente tabla muestra los grupos de paridad para un código de hamming de 7 bits o sea de la forma 2m1 con m = 3. En este ejemplo, los bits de información son 4 y los bits de paridad son 3. Los bits de información están en las posiciones 7, 6, 5 ,3. Los bits de paridad están en las posiciones 1, 2, 4. En la tabla anterior, el grupo de paridad del bit de paridad situado en la posición 4 son los bits de información situados en las posiciones 7, 6, 5 que contienen unos en la posición 2k o sea 4 cuando k = 2. El grupo de paridad del bit de paridad situado en la posición 2 son los bits de información situados en las posiciones 7, 6, 3 que contienen unos en la posición 2k o sea 2 cuando k = 1. El grupo de paridad del bit de paridad situado en la posición 1 son los bits de información situados en las posiciones 7, 5, 3 que contienen unos en la posición 2k o sea 1 cuando K = 0. Como 111 es la representación binaria de 7, el bit de información en la posición 7 se usa para calcular el valor de los tres bits de paridad. Similarmente, el bit de información en la posición 6 se usa para calcular el valor de los bits de paridad en las posiciones 4 y 2; el bit de información en la posición 5 se usa se usa para calcular el valor de los bits de paridad en las posiciones 4 y 1. Finalmente, el bit de información en la posición 3 se usa para calcular el valor de los bits de paridad en las posiciones 2 y 1. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 27 ELECTRONICA DIGITAL UNIDAD 1 2010 De acuerdo con estos grupos de paridad, el valor del bit de paridad de la posición 1 tiene que elegirse de modo que el número de unos en las posiciones 7, 5, 3, 1 sea par, mientras el bit de paridad en la posición 2 hace el número de unos par 7, 6, 3, 2 y el valor del bit de paridad en la posición cuatro hace el número de unos par en las posiciones 7, 6, 5, 4. Es fácil observar que, en estas condiciones, la distancia mínima es 3, o sea que tienen que haber al menos tres cambios de un bit para convertir una palabra de código en otra. Para probar que un cambio de un bit siempre genera una palabra que no pertenece al código, hay que observar que un cambio de un bit en una palabra del código afecta al menos un bit de paridad. Por otra parte, un cambio de dos bits en una palabra del código no cambia el valor del bit de paridad si ambos bits pertenecen al mismo grupo de paridad. Sin embargo ello no es posible ya que para dos posiciones cualquiera de una palabra del código siempre hay un grupo de paridad que no incluye ambas posiciones. En otras palabras, como dos bits cualquiera deben estar en distintas posiciones, sus números binarios deben diferir al menos en un bit, así que siempre hay al menos un grupo de paridad con un solo bit cambiado, lo cuál da lugar a una palabra que no pertenece al código con al menos un valor de paridad incorrecto. Ejemplo 12. Supóngase que se transmite una palabra de código y se recibe una palabra que no pertenece al código y que es 1110101 . Cuál fue la palabra correcta transmitida? Posiciones de los bits. En la tabla anterior se puede observar lo siguiente: Cuando se cuenta el número de unos que hay en los bits, 7, 6, 5, 4 de la palabra del código recibida, se encuentra que este número es impar. De forma similar, se encuentra que los bits 7, 6, 3, 2 contienen un número0 impar de unos. Por tanto hay un error en los bits de paridad 4 y 2. Como la suma de los números en esas posiciones es 6, se sabe que el error se ha producido en el bit de posición 6 y por tanto la palabra transmitida fue 1010101. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 28 ELECTRONICA DIGITAL UNIDAD 1 2010 1.5- CONVERSION ENTRE LOS DIFERENTES CODIGOS NUMERICOS. Conversión entre binario y decimal Decimal a binario Se divide el número del sistema decimal entre 2, cuyo resultado entero se vuelve a dividir entre 2, y así sucesivamente. Ordenados los restos, del último al primero, éste será el número binario que buscamos. Ejemplo Transformar el número decimal 131 en binario. El método es muy simple: 131 65 32 16 8 4 2 1 dividido dividido dividido dividido dividido dividido dividido dividido entre 2 da 65 entre 2 da 32 entre 2 da 16 entre 2 da 8 entre 2 da 4 entre 2 da 2 entre 2 da 1 entre 2 da 0 -> Ordenamos y el resto es igual a 1 y el resto es igual a 1 y el resto es igual a 0 y el resto es igual a 0 y el resto es igual a 0 y el resto es igual a 0 y el resto es igual a 0 y el resto es igual a 1 los restos, del último al primero: 10000011 en sistema binario, 131 se escribe 10000011 Ejemplo Transformar el número decimal 100 en binario. Otra forma de conversión consiste en un método parecido a la factorización en números primos. Es relativamente fácil dividir cualquier número entre 2. Este método consiste también en divisiones sucesivas. Dependiendo de si el número es par o impar, colocaremos un cero o un uno en la columna de la derecha. Si es impar, le restaremos uno y seguiremos dividiendo entre dos, hasta llegar a 1. Después sólo nos queda tomar el último resultado de la columna izquierda (que siempre será 1) y todos los de la columna de la derecha y ordenar los dígitos de abajo a arriba. ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 29 ELECTRONICA DIGITAL UNIDAD 1 2010 Ejemplo 100|0 50|0 25|1 12|0 6|0 3|1 1|1 --> 1, 25-1=24 y seguimos dividiendo por 2 --> (100)10 = (1100100)2 Decimal (con decimales) a binario Para transformar un número del sistema decimal al sistema binario: 1. Se inicia por el lado izquierdo, multiplicando cada número por 2 (si la parte entera es mayor que 1 en binario será 1, y en caso contrario es 0). 2. En caso de ser 1, en la siguiente multiplicación se utilizan sólo los decimales. 3. Después de realizar cada multiplicación, se colocan los números obtenidos en el orden de su obtención. 4. Algunos números se transforman en dígitos periódicos, por ejemplo: el 0,1. Ejemplo 0,3125 (decimal) Proceso: 0,3125 x 2 = 0,625 0,625 x 2 = 1,25 0,25 x 2 = 0,5 0,5 x 2 = 1 En orden: 0101 0,1 x 2 = 0,2 x 2 = 0,4 x 2 = 0,8 x 2 = 0,6 x 2 = 0,2 x 2 = 0,4 x 2 = 0,8 x 2 = 0,6 x 2 = En orden: => 0,0101 (binario). => => => => -> 0 1 0 1 0,0101 (binario) 0,2 ==> 0 0,4 ==> 0 0,8 ==> 0 1,6 ==> 1 1,2 ==> 1 0,4 ==> 0 <--se repiten las cuatro cifras, periódicamente 0,8 ==> 0 <1,6 ==> 1 <1,2 ==> 1 <- ... 0 0011 0011 ... ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 30 ELECTRONICA DIGITAL UNIDAD 1 2010 Binario a decimal Para realizar la conversión de binario a decimal, realice lo siguiente: 1. Inicie por el lado izquierdo del número en binario, cada número multiplíquelo por 2 y elévelo a la potencia consecutiva (comenzando por la potencia 6). 2. Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. Ejemplos: * (Los números de arriba indican la potencia a la que hay que elevar 2) También se puede optar por utilizar los valores que presenta cada posición del número binario a ser transformado, comenzando de derecha a izquierda, y sumando los valores de las posiciones que tienen un 1. Ejemplo «El número binario 1010010 corresponde en decimal al 82» se puede representar de la siguiente manera: entonces se suman los números 64, 16 y 2: Binario a decimal (con decimal binario) 1. Inicie por el lado izquierdo, cada número multiplíquelo por 2 y elévelo a la potencia consecutiva a la inversa (comenzando por la potencia -1). 2.Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. Ejemplos * 0,101001 (binario) = 0,640625(decimal). Proceso: ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 31 ELECTRONICA DIGITAL UNIDAD 1 2010 1*(2) elevado a (-1)=0,5 0*(2) elevado a (-2)=0 1*(2) elevado a (-3)=0,125 0*(2) elevado a (-4)=0 0*(2) elevado a (-5)=0 1*(2) elevado a (-6)=0,015625 La suma es: 0,640625 * 0.110111 (binario) = 0,859375(decimal). Proceso: 1*(2) elevado a (-1)=0,5 1*(2) elevado a (-2)=0,25 0*(2) elevado a (-3)=0 1*(2) elevado a (-4)=0,0625 1*(2) elevado a (-5)=0,03125 1*(2) elevado a (-6)=0,015625 La suma es: 0,859375 Conversión entre binario y octal Binario a octal Para realizar la conversión de binario a octal, realice lo siguiente: 1) Agrupe la cantidad binaria en grupos de 3 en 3 iniciando por el lado derecho. Si al terminar de agrupar no completa 3 dígitos, entonces agregue ceros a la izquierda. 2) Posteriormente vea el valor que corresponde de acuerdo a la tabla: Número en binario 000 001 010 011 100 101 110 111 Número en octal 1 2 3 4 5 6 7 0 3) La cantidad correspondiente en octal se agrupa de izquierda a derecha. Ejemplos * 110111 (binario) = 67 (octal). Proceso: 111 = 7 110 = 6 Agrupe de izquierda a derecha: 67 * 11001111 (binario) = 317 (octal). Proceso: 111 = 7 001 = 1 11 entonces agregue un cero, con lo que se obtiene 011 = 3 Agrupe de izquierda a derecha: 317 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 32 ELECTRONICA DIGITAL UNIDAD 1 2010 * 1000011 (binario) = 103 (octal). Proceso: 011 = 3 000 = 0 1 entonces agregue 001 = 1 Agrupe de izquierda a derecha: 103 Octal a binario Cada dígito octal se lo convierte en su binario equivalente de 3 bits y se juntan en el mismo orden. Ejemplo 247 (octal) = 010100111 (binario). El 2 en binario es 10, pero en binario de 3 bits es Oc(2) = B(010); el Oc(4) = B(100) y el Oc(7) = (111), luego el número en binario será 010100111. Conversión entre binario y hexadecimal Binario a hexadecimal Para realizar la conversión de binario a hexadecimal, realice lo siguiente: 1) Agrupe la cantidad binaria en grupos de 4 en 4 iniciando por el lado derecho. Si al terminar de agrupar no completa 4 dígitos, entonces agregue ceros a la izquierda. 2) Posteriormente vea el valor que corresponde de acuerdo a la tabla: Número en binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Número en hexadecimal 0 9 A B C 1 D 2 E 3 F 4 5 6 7 8 3) La cantidad correspondiente en hexadecimal se agrupa de derecha a izquierda. Ejemplos * 110111010 (binario) = 1BA (hexadecimal). Proceso: 1010 = A 1011 = B 1 entonces agregue 0001 = 1 Agrupe de derecha a izquierda: 1BA * 11011110101 (binario) = 6F5 (hexadecimal). Proceso: 0101 = 5 ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 33 ELECTRONICA DIGITAL UNIDAD 1 2010 1111 = F 110 entonces agregue 0110 = 6 Agrupe de derecha a izquierda: 6F5 Hexadecimal a binario Ídem que para pasar de octal a binario, sólo que se remplaza por el equivalente de 4 bits, como de octal a binario. Tabla de conversión entre decimal, binario, hexadecimal, octal, BCD, Exceso 3 y Código Gray o Reflejado ELABORADO POR: JUAN DE LA CRUZ MARTINEZ 34