martes

bibliografia

  • CUESTA, Luís M. PADILLA G, Antonio. REMIRO D, Fernando. (1993). Electrónica digital. Madrid: McGraw Hill. S/f. p.445.










  • GAJSKI, Daniel D. (1997). Principios de diseñodigital. Madrid: Prentice Hall Iberia. S/f. p.488. "Principles of digital design". Traducido por: Alberto Prieto Espinosa.










  • LLORIS, Antonio. PRIETO, Alberto. (1996). Diseño lógico. Madrid: McGraw Hill. S/f. p.403.










  • MANO, Morris. KIME, Charles. (1998). Fundamentos de diseño lógico y computadoras. México: Prentice Hall. Primera edición en español. P.604. "Logic and computer design fundamentals". Traducido por: Teresa Sanz Falcón.










  • NEAMEN A, Donald. (1999). Análisis y diseño de circuitos electrónicos. Tomo II. México: McGraw Hill. S/f. p.1176. "Electronic circuit analysis and design". Traducido por: Felipe Castro Pérez.










  • NELSON, V. NAGLE, H. CARROLL, B. IRWIN, J. (1996). Análisis y diseño de circuitos lógicos digitales. México: Prentice Hall. Primera edición. p.842. "Digital logic circuit analysis and design". Traducido por: Oscar A. Palmas V.










  • TOCCI, Ronald. (1995). Sistemas digitales principios y aplicaciones. México: Prentice Hall. Quinta edición. p.823. "Digital systems principles and applications". Traducido por: Edmundo G. Urbina M.










  • WARKELY, John F. (1997). Diseño digital principios y prácticas. México: Prentice Hall. S/f. p.743. "Digital design principles and practices". Traducido por: Gutiérrez R. Raymundo
  • sábado

    representacion numerica en complemento a dos

    .
    En el sistema binario, la forma más utilizada para representar los números enteros con signo es la de complemento a dos. Los circuitos microprocesadores poseen internamente unidades de procesamiento aritmético que trabajan bajo éste formato, el cual puede estar constituido por n bits múltiplos de la potencia de base dos. Por ejemplo, para representar los números positivos y negativos se definen datos con tamaño estándar: ocho bits, 16 bits, 32 bits, etc.
    En este formato, el bit más significativo (MSB) del dato se utiliza para indicar el signo y los bits restantes representan la magnitud del número. En la figura 1.2 se puede apreciar la representación del formato utilizado para 16 bits, donde el más significativo (B15) indica que el signo es negativo si vale uno o positivo si vale cero. Las cantidades positivas se encuentran en binario normal mientras que los números negativos están en complemento a dos, esto significa que estos últimos, se deben complementar para poder hallar su verdadero valor.
    El complemento de un número, en éste formato, es igual que cambiar el signo del mismo. Por otra parte, el complemento del complemento da como resultado el mismo número.
    Ejemplo: Determinar el valor de los siguientes números dados en representación con signo de 16 bits (Formato de 16 bits):
    a) 11001010101110002; b) 7FA816; c) 11111100000111002;
    d) 1761028; e) FA816;
    Solución (a): El bit 15 del dato vale uno; esto significa que el número es negativo y está dado en complemento a dos. Primero se debe complementar el dato para hallar su verdadero valor en binario y después se transforma a decimal.

    Solución (b): Se debe transformar hexadecimal a binario y completar con ceros a la izquierda en caso de que el dato no tenga los 16 bits completos. Luego se hace la transformación a decimal.

    Solución (c): El bit 15 del dato vale uno; esto significa que el número es negativo y está dado en complemento a dos. Primero se debe complementar el dato para hallar su verdadero valor en binario y después se transforma a decimal.

    Solución (d): Se debe transformar octal a binario y completar con ceros a la izquierda en caso de que el dato no tenga los 16 bits completos. Luego se hace la transformación a decimal.

    Solución (e): Se debe transformar hexadecimal a binario y completar con ceros a la izquierda en caso de que el dato no tenga los 16 bits completos. Luego se hace la transformación a decimal.



    OPERACIONES ARITMÉTICAS EN COMPLEMENTO A DOS.
    La suma y resta son las operaciones básicas realizadas por los microprocesadores, cualquiera otra operación, es consecuencia recursiva de éstas. A continuación se describen estas dos operaciones aritméticas, realizadas con números binarios en complemento a dos utilizando formato de signo y magnitud de 16 bits.
    SUMA EN COMPLEMENTO A DOS.
    Son cuatro casos que se presentan al sumar dos datos en formato con signo de complemento a dos:
    I) SUMA DE DOS NÚMEROS POSITIVOS. El resultado debe ser positivo, y el bit más significativo de la suma, siempre dará cero.
    Ejemplo: A = 1000111110001002; B = 100101101110112.
    Antes de realizar la suma binaria se debe tener la precaución de sumar en decimal los números. De esta manera se puede chequear el resultado de la suma para tener la certeza de que no exceda el valor +32767 10 y por lo tanto no sobrepasar el formato de 16 bits (Esto se conoce como OVERFLOW). También el 16vo bit en uno señala el sobreflujo de la operación.
    II) SUMA DE UNO NEGATIVO Y OTRO POSITIVO. El resultado debe poseer el signo del que tenga mayor valor absoluto. En este caso el resultado es positivo y el 16vo bit vale cero.
    Ejemplo: A = 11010110010101102; B = 1101101101110112
    III) SUMA DE UNO POSITIVO Y OTRO NEGATIVO.El resultado debe poseer el signo del que tenga mayor valor absoluto. En este caso el resultado es negativo y el 16vo bit vale cero; del mismo modo no se debe tomar en cuenta el acarreo del 17vo bit.
    Ejemplo: A = 110110110101012; B = 10010110111010012
    A = 11110011111100002; B = 1001110111001012
    Con dos números de distintos signos se dan los casos de acarreo en el 17vo bit. Si éste acarreo es cero significa que el resultado es negativo y se debe complementar para hallar su verdadero valor de la otra forma, si el acarreo es uno, entonces el signo del resultado es mayor o igual a cero y se encuentra en verdadero valor.
    IV) SUMA DE DOS NÚMEROS NEGATIVOS. El resultado debe ser negativo, por lo tanto el bit más significativo de la suma siempre dará uno.
    Antes de realizar la suma binaria se debe tener la precaución de sumar en decimal los números. De esta manera se puede chequear el resultado de la suma para tener la certeza de que no exceda el valor -3276710 y por lo tanto no sobrepasar el formato de 16 bits (Esto se conoce como OVERFLOW). También el 16vo y/o 17vo bits en cero señalan el sobreflujo de la operación.

    viernes

    METODO DE PARIDAD

    Tipo de códigos detectores

     Paridad simple (paridad horizontal)
    Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no es así, lo incluiremos con valor = 1.
    Ejemplo de generación de un bit de paridad simple:
    
    Queremos enviar la cadena “1110100”:
    1º Contamos la cantidad de unos que hay: 4 unos
    2º El número de unos es par por tanto añadimos un bit con valor = 0
    3º La cadena enviada es 11101000
    
    El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit) y si coincide, es que no ha habido error.
    Problemas de este método:
    Hay una alta probabilidad de que se cuelen casos en los que ha habido error, y que el error no sea detectado, como ocurre si se cambian dos números en la transmisión en vez de uno.

    [editar] Paridad cruzada (paridad horizontal-vertical)

    Para mejorar un poco el método anterior, se realiza una paridad que afecte tanto a los bits de cada cadena o palabra como a un conjunto de todos ellos. Siempre se utilizan cadenas relativamente cortas para evitar que se cuelen muchos errores.
    Para ver más claro este método, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales por el método anterior, y por último, se hace las misma operación de calcular el número de unos, pero ahora de cada columna.
    La probabilidad de encontrar un solo error es la misma, pero en cambio, la probabilidad de encontrar un número par errores ya no es cero, como en el caso anterior. Aun así, existen todavía una gran cantidad de errores no detectables
    Un ejemplo de paridad cruzada (o de código geométrico)
    
    1º Tenemos este código para transmitir: 1100101111010110010111010110
    2º Agrupamos el código en cada una de las palabras, formando una matriz de N x K:
    
    1100101
    1110101
    1001011
    1010110
    
    3º Añadimos los bits de paridad horizontal:
    
    1100101 0
    1110101 1
    1001011 0
    1010110 0
    
    4º Añadimos los bits de paridad vertical:
    
    1100101 0
    1110101 1
    1001011 0
    1010110 0
    
    0001101 1
    
    
    Una vez creada la matriz, podemos enviar ésta por filas, o por columnas. Enviando las palabras por columnas aumentamos la posibilidad de corregir una palabra que haya sufrido un error de ráfaga (errores que afectan a varios bits consecutivos, debidos a causas generalmente electrónicas, como chispazos, y que harían que se perdiera toda una palabra completa).

    [editar] Códigos de redundancia cíclica también llamados CRC

    Intentando mejorar los códigos que sólo controlan la paridad de bit, aparecen los códigos cíclicos. Estos códigos utilizan la aritmética modular para detectar una mayor cantidad de errores, se usan operaciones en módulo 2 y las sumas y restas se realizan sin acarreo (convirtiéndose en operaciones de tipo Or-Exclusivo o XOR). Además, para facilitar los cálculos se trabaja, aunque sólo teóricamente, con polinomios.
    La finalidad de este método es crear una parte de redundancia la cual se añade al final del código a transmitir (como en los métodos de paridad) que siendo la más pequeña posible, detecte el mayor número de errores que sea posible.
    Pero además de esto, debe ser un método sistemático, es decir, que con un mismo código a transmitir (y un mismo polinomio generador) se genere siempre el mismo código final.
    El polinomio generador: es un polinomio elegido previamente y que tiene como propiedad minimizar la redundancia. Suele tener una longitud de 16 bits, para mensajes de 128 bytes, lo que indica que la eficiencia es buena. Ya que sólo incrementa la longitud en un aproximado 1,6%:
    (16bits / (128bytes * 8bitsporbyte)) * 100 = 1,5625
    
    Un ejemplo de polinomio generador usado normalmente en las redes WAN es: g(x) = x16 + x12 + x5 + 1
    Los cálculos que realiza el equipo transmisor para calcular su CRC son:
    1. Añade tantos ceros por la derecha al mensaje original como el grado del polinomio generador
    2. Divide el mensaje con los ceros incluidos entre el polinomio generador
    3. El resto que se obtiene de la división se suma al mensaje con los ceros incluidos
    4. Se envía el resultado obtenido
    Estas operaciones generalmente son incorporadas en el hardware para que pueda ser calculado con mayor rapidez, pero en la teoría se utilizan los polinomios para facilitar los cálculos.
    Ejemplo de obtención del CRC:
    
    Datos:
    Mensaje codificado en binario: 1101001
    Polinomio generador: x4 + x + 1
    
    Operaciones:
    
    1º Obtener el polinomio equivalente al mensaje: x6 + x5 + x3 + 1
    
    2º Multiplicar el mensaje por x4 (añadir 4 ceros por la derecha): x10 + x9 + x7 + x4
    
    3º Dividir en binario el mensaje por el polinomio generador y sacar el resto: x2 + 1
    
    4º Concatenar el mensaje con el resto (en módulo 2 también): x10 + x9 + x7 + x4 + x2 + 1
    
    5º Transmitir el mensaje
    
    El equipo receptor debe comprobar el código CRC para detectar si se han producido o no errores.
    Ejemplo de los cálculos del receptor:
    
    1º Mediante el protocolo correspondiente acuerdan el polinomio generador
    2º Divide el código recibido entre el polinomio generador
    3º Comprueba el resto de dicha operación
    
     3.1 Si el resto es cero, no se han producido errores
     3.2 Procesar el mensaje
    
     3.1 Si el resto es distinto de cero, significa que se han producido errores
     3.2 Reenviar el mensaje
    
     3.2 Intentar corregir los errores mediante los códigos correctores
    
    En resumen, este método requiere de un polinomio generador que, elegido correctamente, puede llegar a detectar gran cantidad de errores:
    • Errores simples: todos
    • Errores dobles: todos
    • Errores en las posiciones impares de los bits: todos
    • Errores en ráfagas con una longitud menor que el grado del polinomio generador: todos
    • Otras ráfagas: un porcentaje elevado y cercano al 100%

     Suma de comprobación

    Es un método sencillo pero eficiente sólo con cadenas de palabras de una longitud pequeña, es por esto que se suele utilizar en cabeceras de tramas importantes u otras cadenas importantes y en combinación con otros métodos.
    Funcionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una longitud determinada L no muy grande, de por ejemplo 16 bits. Considerando a cada cadena como un número entero numerado según el sistema de numeración 2L − 1. A continuación se suma el valor de todas las palabras en las que se divide el mensaje, y se añade el resultado al mensaje a transmitir, pero cambiado de signo.
    Con esto, el receptor lo único que tiene que hacer es sumar todas las cadenas, y si el resultado es 0 no hay errores.
    Ejemplo:
    
    Mensaje 101001110101
    
    1º Acordar la longitud de cada cadena: 3
    
    2º Acordar el sistema de numeración: 23 − 1 = 7
    
    3º Dividir el mensaje: 101 001 110 101
    
    4º Corresponder a cada cadena con un entero: 5 1 6 5
    
    5º Sumar todos los valores y añadir el número cambiado de signo: -17
    
    6º Enviar 5 1 6 5 -17 codificado en binario
    
    El receptor:
    
    1º Suma todos los valores si = 0 procesa el mensaje si no se ha producido un error.
    
    Este método al ser más sencillo es óptimo para ser implementado en software ya que se puede alcanzar velocidades de cálculo similares a la implementación en hardware

     Distancia de Hamming basada en comprobación

     
    Si queremos detectar d bit erróneos en una palabra de n bits, podemos añadir a cada palabra de n bits d+1 bits predeterminados al final, de forma que quede una palabra de n+d+1 bits con una distancia mínima de Hamming de d+1. De esta manera, si uno recibe una palabra de n+d+1 bits que no encaja con ninguna palabra del código (con una distancia de Hamming x <= d+1 la palabra no pertenece al código) detecta correctamente si es una palabra errónea. Aún más, d o menos errores nunca se convertirán en una palabra válida debido a que la distancia de Hamming entre cada palabra válida es de al menos d+1, y tales errores conducen solamente a las palabras inválidas que se detectan correctamente. Dado un conjunto de m*n bits, podemos detectar x <= d bits errores correctamente usando el mismo método en todas las palabras de n bits. De hecho, podemos detectar un máximo de m*d errores si todas las palabras de n bits son transmitidas con un máximo de d errores.
    Ejemplo
    Palabras a enviar:
    1. 000001
    2. 000001
    3. 000010
     Codificadas con distancia mínima de Hamming = 2
    000001 0000
    000001 0011
    000010 1100
    Si las palabras recibidas tienen una distancia de Hamming < 2, son palabras incorrectas.

    CODIGO HAMMING

    En informática, el código de Hamming es un código detector y corrector de errores que lleva el nombre de su inventor, Richard Hamming. En los datos codificados en Hamming se pueden detectar errores en un bit y corregirlos, sin embargo no se distingue entre errores de dos bits y de un bit (para lo que se usa Hamming extendido). Esto representa una mejora respecto a los códigos con bit de paridad, que pueden detectar errores en sólo un bit, pero no pueden corregirlo.
    Antes de los códigos Hamming se utilizaron ciertos códigos detectores de error,como lo fueron el codigo linteing , pero ninguno llegó a ser tan eficaz como los de Hamming.


                                                                       LA PARIDAD
    La paridad consiste en añadir un bit, denominado bit de paridad, que indique si el número de los bits de valor 1 en los datos precedentes es par o impar. Si un solo bit cambiara por error en la transmisión, el mensaje cambiará de paridad y el error se puede detectar (nótese que el bit donde se produzca el error puede ser el mismo bit de paridad). La convención más común es que un valor de paridad de 1 indica que hay un número impar de unos en los datos, y un valor de paridad de 0 indica que hay un número par de unos en los datos.
    La comprobación de paridad no es muy robusta, dado que si cambia de forma uniforme más de un solo bit, el bit de paridad será válido y el error no será detectado. Por otro lado, la paridad, aunque puede detectar que hay error, no indica en qué bit se cometió. Los datos se deben desechar por entero y volverse a transmitir. En un medio ruidoso, una transmisión correcta podría tardar mucho tiempo o incluso, en el peor de los casos, no darse nunca. El chequeo de paridad, aunque no es muy bueno, usa un único bit, por lo que produce muy poca sobrecarga, y además permite la corrección de ese bit si es conocida su posición


                                                     DOS ENTRE CINCO
    En los años 40, Bell utilizó un código algo más sofisticado conocido como dos-entre-cinco. Este código se basa en que cada bloque de cinco bits (conocido como penta-bit) tuviera exactamente dos unos. De este modo, la computadora podría detectar posibles errores cuando en su entrada no había exactamente dos unos en cada penta-bit.
    Este código seguía únicamente detectando errores por cambio en un solo bit; si en un mismo penta-bit un 0 cambiaba a 1 y un 1 cambiaba a 0, la regla de dos-entre-cinco se seguía cumpliendo y el error quedaba sin descubrir.


                                                             REPETICION


    Otro código utilizado, consistía en repetir cada bit de datos varias veces para asegurarse de que la transmisión era correcta. Por ejemplo, si el bit de datos que se envía fuera un 1, un código de repetición con n=3, enviaría "111". Si los tres bits recibidos no eran idénticos, había un error. En un ambiente sin demasiado ruido, la mayoría de las veces solamente cambiaría un bit en cada paquete de tres bits. Por lo tanto, datos del tipo 001, 010, y 100 se corresponden al bit 0, mientras que 110, 101, y 011 se corresponden con el bit 1. Es como si el bit original se obtuviera por mayoría en una "votación". Un código con esta capacidad de reconstruir el mensaje original en la presencia de errores se conoce como código corrector de errores.
    Sin embargo, este código no puede reparar correctamente todos los errores. En nuestro ejemplo, si el error en la transmisión provocara el cambio simultáneo de dos bits y el receptor recibiera "001", el sistema detectaría el error, pero considerando que el bit original era 0, lo cual es incorrecto. Si se aumenta el número de veces que se repite cada bit a cuatro (n=4), es posible detectar los errores en dos bits pero obviamente no se podrán corregir; con cinco, es posible corregir errores de dos bits, pero no lo podrá hacer en errores de tres bits.
    Por otra parte, el código de la repetición es extremadamente ineficaz, pues reduce la velocidad de transmisión por tres en nuestro ejemplo original y su eficacia cae drásticamente al aumentar el número de veces que cada bit se repite para detectar y corregir más errores. El uso del código de bloques no lineales para detección de errores no es muy implementado por lo tanto emplearemos el código de errores lineales para la corrección de errores.


                                                                  CODIGO HAMMING
    Si se añaden junto al mensaje más bits detectores-correctores de error y si esos bits se pueden ordenar de modo que diferentes bits de error producen diferentes resultados, entonces los bits erróneos podrían ser identificados. En un conjunto de siete bits, hay sólo siete posibles errores de bit, por lo que con tres bits de control de error se podría especificar, además de que ocurrió un error, en qué bit fue.
    Hamming estudió los esquemas de codificación existentes, incluido el de dos entre cinco, y generalizó sus conclusiones. Para empezar, desarrolló una nomenclatura para describir el sistema, incluyendo el número de los bits de datos y el de los bits detectores-correctores de error en un bloque. Por ejemplo, la paridad incluye un solo bit para cualquier palabra de datos, así que las palabras del Código ASCII que son de siete bits, Hamming las describía como un código (8.7), esto es, un total de 8 bits de los cuales 7 son datos. En el ejemplo anterior de la repetición, sería un código (3.1), siguiendo la misma lógica. La relación de la información es el segundo número dividido por el primero, por nuestro ejemplo de la repetición, 1/3.
    Hamming también estudió los problemas que surgían al cambiar dos o más bits a la vez y describió esto como "distancia" (ahora llamada distancia de Hamming en su honor). La paridad tiene una distancia de 2, dado que cualquier error en dos bits no será detectado. La repetición (3.1)tiene una distancia de 3, pues son necesarios el cambio simultáneo de tres bits para obtener otra palabra de código. La repetición (4.1) (cada bit se repite cuatro veces) tiene una distancia de 4, así que el cambio de dos bits en el mismo grupo quedará sin definir.
    Hamming estaba interesado en solucionar simultáneamente dos problemas: aumentar la distancia tanto como sea posible, a la vez que se aumentan al máximo los bits de información. Durante los años 40 desarrolló varios esquemas de codificación que mejoraban notablemente los códigos existentes. La clave de todos sus sistemas era intercalar entre los bits de datos los de paridad.


                                                       CODIGO HAMMING(7.4)


    Hoy, el código de Hamming se refiere al (7.4) que Hamming introdujo en 1950. El código de Hamming agrega tres bits adicionales de comprobación por cada cuatro bits de datos del mensaje.
    El algoritmo de Hamming (7.4) puede corregir cualquier error de un solo bit, pero cuando hay errores en más de un bit, la palabra transmitida se confunde con otra con error en un sólo bit, siendo corregida, pero de forma incorrecta, es decir que la palabra que se corrige es otra distinta a la original, y el mensaje final será incorrecto sin saberlo. Para poder detectar (aunque sin corregirlos) errores de dos bits, se debe añadir un bit más, y el código se llama Hamming extendido. El procedimiento para esto se explica al final.


    El algoritmo es el siguiente:
    1. Todos los bits cuya posición es potencia de dos se utilizan como bits de paridad (posiciones 1, 2, 4, 8, 16, 32, 64, etc.).
    2. Los bits del resto de posiciones son utilizados como bits de datos (posiciones 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, etc.).
    3. Cada bit de paridad se obtiene calculando la paridad de alguno de los bits de datos. La posición del bit de paridad determina la secuencia de los bits que alternativamente comprueba y salta, a partir de éste, tal y como se explica a continuación.
    • Posición 1: salta 0, comprueba 1, salta 1, comprueba 1, etc.
    • Posición 2: salta 1, comprueba 2, salta 2, comprueba 2, etc.
    • Posición 4: salta 3, comprueba 4, salta 4, comprueba 4, etc.
    • Posición 8: salta 7, comprueba 8, salta 8, comprueba 8, etc.
    • Posición 16: salta 15, comprueba 16, salta 16, comprueba 16, etc.
    • Regla general para la posición n es: salta n-1 bits, comprueba n bits, salta n bits, comprueba n bits...
    • Y así sucesivamente.
    En otras palabras, el bit de paridad de la posición 2k comprueba los bits en las posiciones que tengan al bit k en su representación binaria. Dicho a la inversa, el bit 13, por ejemplo, es chequeado por los bits 8, 4 y 1, al ser estos los de su representación binaria: 13=1101(2); 8=1000(2); 4=0100(2); 1=0001(2).
    Así, por ejemplo, para los primeros términos se tiene:
    • En la Posición 1 (2^0 = 1), comprobaríamos los bits: 3, 5, 7, 9, 11, 13...
    • En la Posición 2 (2^1 = 2), los bits: 3, 6, 7, 10, 11, 14, 15...
    • En la Posición 4 (2^2 = 4), los bits: 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23...
    • En la Posición 8 (2^3 = 8) tendríamos: 9, 10, 11, 12, 13, 14, 15, 24-31...
    Siguiendo el algoritmo hasta completar la nueva cad

    mapas de karnaugh

    Los Mapas de Karnaugh son una herramientamuy utilizada para la simplificación de circuitos lógicos.
    Cuando se tiene una función lógica con su tabla de verdad y se desea implementar esa función de la manera más económica posible se utiliza este método.
    Ejemplo: Se tiene la siguiente tabla de verdad para tres variables.
    Se desarrolla la función lógica basada en ella. (primera forma canónica). Ver que en la fórmula se incluyen solamente las variables (A, B, C) cuando F cuando es igual a "1".
    Si A en la tabla de verdad es "0" se pone A, si B = "1" se pone B, Si C = "0" se pone C, etc.
    Ejemplo de tabla de verdad de 3 variables. Mapas de Karnaugt - Electr&oacute;nica Unicrom
    F = A B C + A B C + A BC + A B C + A B C + A B C
    Una vez obtenida la función lógica, se implementa el mapa de Karnaugh
    Mapa de Karnaugh de 3 variables - Electrónica Unicrom
    Este mapa tiene 8 casillas que corresponden a 2n, donde n = 3 (número de variables (A, B, C))
    La primera fila corresponde a A = 0
    La segunda fila corresponde a A = 1
    La primera columna corresponde a BC = 00 (B=0 y C=0)
    La segunda columna corresponde a BC = 01 (B=0 y C=1)
    La tercera columna corresponde a BC = 11 (B=1 y C=1)
    La cuarta columna corresponde a BC = 10 (B=1 y C=0)
    En el mapa de Karnaugh se han puesto "1" en las casillas que corresponden a los valores de F = "1" en la tabla de verdad.
    Tomar en cuenta la numeración de las filas de la tabla de verdad y la numeración de las casillas en el mapa de Karnaugh.
    Para proceder con la simplificación, se crean grupos de "1"s que tengan 1, 2, 4, 8, 16, etc. (sólo potencias de 2).
    Los "1"s deben estar adyacentes (no en diagonal) y mientras más "1"s tenga el grupo, mejor.
    La función mejor simplificada es aquella que tiene el menor número de grupos con el mayor número de "1"s en cada grupo
    Grupos de "1" formados en mapa de karnaugh de 3 variables - Electrónica Unicrom
    Se ve del gráfico que hay dos grupos cada uno de cuatro "1"s, (se permite compartir casillas entre los grupos).
    La nueva expresión de la función boolena simplificada se deduce del mapa de Karnaugh.
    - Para el primer grupo (rojo): la simplificación da B (los "1"s de la tercera y cuarta columna) corresponden a B sin negar)
    - Para el segundo grupo (azul): la simplificación da A (los "1"s están en la fila inferior que corresponde a A sin negar)
    Tabla de verdad para ejemplo de simplificación por mapa de Karnaugh - Electrónica Unicrom
    Entonces el resultado es F = B + A ó F = A + B
    Ejemplo:
    Una tabla de verdad como la de la derecha da la siguiente función booleana:
    F = ABC + AB C + A B C + A B C
    Se ve claramente que la función es un reflejo del contenido de la tabla de verdad cuando F = "1"
    Con esta ecuación se crea el mapa de Karnaugh y se escogen los grupos. Se lograron hacer 3 grupos de dos "1"s cada uno.
    Grupos de "1" formados en ejemplo de mapa de karnaugh de 3 variables - Electrónica UnicromSe puede ver que no es posible hacer grupos de 3, porque 3 no es potencia de 2. Se observa que hay una casilla que es compartida por los tres grupos.
    La función simplificada es:
    F = AB + A C + B C
    Grupo en azul: AB, grupo marrón:AC, grupo verde:BC

    compuertas logicas


    Una compuerta lógica es un circuito lógico cuya operación puede ser definida por una función del álgebra lógica, cuya explicación no es el objeto de esta obra.
    Veamos entonces las compuertas lógicas básicas, para ello definamos el termino “tabla de la verdad”, por utilizarse a menudo en las técnicas digitales.
    Se llama tabla de verdad de una función lógica a una representación de la misma donde se indica el estado lógico “1” o “0” que toma la función lógica para cada una de las combinaciones de las variables de las cuales depende.
    Inversor:
    Un inversor es un circuito lógico que tiene una sola entrada y una sola salida.
    La salida del inversor se encuentra en el estado lógico “1” si y solo si la entrada se encuentra en el estado lógico “0”. Esto significa que la salida toma el estado lógico opuesto al de la entrada.
    Compuerta lógica AND :
    Las puertas lógicas AND (o Y en castellano) son circuitos de varias entradas y una sola salida, caracterizadas porque necesitan disponer de un nivel 1 en todas las primeras para que también la salida adopte ese nivel.
    Basta con que una o varias entradas estén en el nivel 0 para que la salida suministre también dicho nivel. Todas las unidades AND o derivadas del AND, deben tener señal simultanea en todas sus entradas para disponer de señal de salida
    Observando el funcionamiento de la unidad AND se comprende fácilmente que las entradas pueden ser aumentadas indefinidamente. Las compuertas AND pueden tener más de dos entradas y por definición, la salida es 1 si cualquier entrada es 1.
    Compuerta lógica NAND:
    La función NO-Y, llamada mas comúnmente NAND es la negación de la función Y (AND) precedente. Así como en una puerta Y se necesita que exista nivel 1 en todas las entradas para obtener el mismo nivel en la salida, en una NAND el nivel de la salida seria 0 en las mismas condiciones. Por el contrario, cuando hay un nivel 0 en alguna de las entradas de una puerta Y la salida esta a nivel 0, mientras que en iguales circunstancias en una puerta NAND el nivel de salida seria 1. Una designación más adecuada habría sido AND invertido puesto que Es la función AND la que se ha invertido

    Compuerta lógica OR :
    La función reunión, también llamada O, al traducir su nombre ingles OR, es la que solo necesita que exista una de sus entradas a nivel 1 para que la salida obtenga este mismo nivel. La expresión algebraica de esta función, suponiendo que disponga de dos entradas, es la siguiente : s = a + b. Es suficiente que tenga señal en cualquiera de sus entradas para que de señal de salida (OR). Las compuertas OR pueden tener más de dos entradas y por definición la salida es 1 si cualquier entrada es 1.
    Compuerta lógica NOR :
    La función NOR consiste en la negación de la O, o sea, asi como esta suministra nivel 1 a su salida si cualquiera de las entradas que posee esta a nivel 1, una puerta NOR se comporta justamente al revés. En la función NOR es suficiente aplicarle una cualquiera de sus entradas para que niegue su salida. la NOR pueden tener más de dos entradas, y la salida es siempre el complemento de las funciones AND u OR, respectivamente.
    Compuerta lógica EX - OR :
    La función O exclusiva (“exclusive OR” según el idioma ingles) se caracteriza porque su salida esta a nivel 1 siempre y cuando también lo estén un numero impar de sus entradas.
    Para conseguir la función O exclusiva de 3 entradas pueden usarse funciones O exclusiva de dos entradas para acoplarse entre si.
    Compuerta lógica EX - AND :
    La función Y exclusiva (exclusive AND en ingles) se emplea para verificar comparaciones entre sus entradas. En efecto su salida presenta nivel 1 cuando sus entradas se encuentran en el mismo nivel, sin importar que dicho nivel sea 1 o 0
    Compuerta lógica EX - NOR :
    Es la función negada de la compuerta EX - OR y es el contrario de la EX - OR, su salida presenta nivel 1 cuando sus entradas se encuentran en el mismo nivel, sin importar que dicho nivel sea 1 o 0, al igual que las EX - AND
    Compuerta lógica EX - NAND :
    Es la función negada de la compuerta EX - AND y es el contrario de la EX - AND, Para conseguir la función O exclusiva de 3 entradas pueden usarse funciones O exclusiva de dos entradas para acoplarse entre si.

    algebra de boole

    es un sistema matematico deductivo centrado en los valores cero y uno (falso y verdadero). Un operador binario “ º “ definido en éste juego de valores acepta un par de entradas y produce un solo valor booleano, por ejemplo, el operador booleano AND acepta dos entradas booleanas y produce una sola salida booleana.

    Para cualquier sistema algebraico existen una serie de postulados iniciales, de aquí se pueden deducir reglas adicionales, teoremas y otras propiedades del sistema, el álgebra booleana a menudo emplea los siguientes postulados:
    ·Cerrado. El sistema booleano se considera cerrado con respecto a un operador binario si para cada par de valores booleanos se produce un solo resultado booleano.
    ·Conmutativo. Se dice que un operador binario “ º “ es conmutativo si A º B = B º A para todos los posibles valores de A y B.
    ·Asociativo. Se dice que un operador binario “ º “ es asociativo si (A º B) º C = A º (B º C) para todos los valores booleanos A, B, y C.
    ·Distributivo. Dos operadores binarios “ º “ y “ % “ son distributivos si A º (B % C) = (A º B) % (A º C) para todos los valores booleanos A, B, y C.
    ·Identidad. Un valor booleano I se dice que es un elemento de identidad con respecto a un operador binario “ º “ si A º I = A.
    ·Inverso. Un valor booleano I es un elemento inverso con respecto a un operador booleano “ º “ si A º I = B, y B es diferente de A, es decir, B es el valor opuesto de A.
    Para nuestros propósitos basaremos el álgebra booleana en el siguiente juego de operadores y valores:
    - Los dos posibles valores en el sistema booleano son cero y uno, a menudo llamaremos a éstos valores respectivamente como falso y verdadero.
    - El símbolo · representa la operación lógica AND. Cuando se utilicen nombres de variables de una sola letra se eliminará el símbolo ·, por lo tanto AB representa la operación lógica AND entre las variables A y B, a esto también le llamamos el producto entre A y B.
    - El símbolo “+” representa la operación lógica OR, decimos que A+B es la operación lógica OR entre A y B, también llamada la suma de A y B.
    - El complemento lógico, negación ó NOT es un operador unitario, en éste texto utilizaremos el símbolo “ ‘ “ para denotar la negación lógica, por ejemplo, A’ denota la operación lógica NOT de A.
    - Si varios operadores diferentes aparecen en una sola expresión booleana, el resultado de la expresión depende de la procedencia de los operadores, la cual es de mayor a menor, paréntesis, operador lógico NOT, operador lógico AND y operador lógico OR. Tanto el operador lógico AND como el OR son asociativos por la izquierda. Si dos operadores con la misma procedencia están adyacentes, entonces se evalúan de izquierda a derecha. El operador lógico NOT es asociativo por la derecha.
    Utilizaremos además los siguientes postulados:
    ·P1 El álgebra booleana es cerrada bajo las operaciones AND, OR y NOT
    ·P2 El elemento de identidad con respecto a · es uno y con respecto a + es cero. No existe elemento de identidad para el operador NOT
    ·P3 Los operadores · y + son conmutativos.
    ·P4 · y + son distributivos uno con respecto al otro, esto es, A· (B+C) = (A·B)+(A·C) y A+ (B·C) = (A+B) ·(A+C).
    ·P5 Para cada valor A existe un valor A’ tal que A·A’ = 0 y A+A’ = 1. Éste valor es el complemento lógico de A.
    ·P6 · y + son ambos asociativos, ésto es, (AB) C = A (BC) y (A+B)+C = A+ (B+C).
    Es posible probar todos los teoremas del álgebra booleana utilizando éstos postulados, además es buena idea familiarizarse con algunos de los teoremas más importantes de los cuales podemos mencionar los siguientes:
    ·Teorema 1: A + A = A
    ·Teorema 2: A · A = A
    ·Teorema 3: A + 0 = A
    ·Teorema 4: A · 1 = A
    ·Teorema 5: A · 0 = 0
    ·Teorema 6: A + 1 = 1
    ·Teorema 7: (A + B)’ = A’ · B’
    ·Teorema 8: (A · B)’ = A’ + B’
    ·Teorema 9: A + A · B = A
    ·Teorema 10: A · (A + B) = A
    ·Teorema 11: A + A’B = A + B
    ·Teorema 12: A’ · (A + B’) = A’B’
    ·Teorema 13: AB + AB’ = A
    ·Teorema 14: (A’ + B’) · (A’ + B) = A’
    ·Teorema 15: A + A’ = 1
    ·Teorema 16: A · A’ = 0
    Los teoremas siete y ocho son conocidos como Teoremas de De Morgan en honor al matemático que los descubrió

    familias logicas

    familia l.gica se puede definir como la estructura
    En esta estructura estar.n involucrados tanto los componentes que entran en juego, as. como
    sus valores (ya que si cambiamos estos valores, pasaremos a otra familia diferente), ya que los
    par.metros van a depender de .stos.
    Al centrarnos en Electr.nica Digital, no debemos perder de vista que las se.ales s.lo
    pueden tomar dos valores diferentes. Por lo tanto, los elementos principales de estas familias
    l.gicas deben tener como m.nimo dos regiones de operaci.n bien diferenciadas. Esta situaci.n
    nos lleva a la utilizaci.n de dispositivos semiconductores, aunque en los principios se utilizaron
    v.lvulas y conmutadores electr.cos (que presentaban un comportamiento similar).
    Una posible clasiÞcaci.n de estas familias, seg.n los dispositivos semiconductores en los
    que se basan, es:
    ¥ Familias bipolares.- emplean transistores bipolares y diodos, es decir, dispositivos de
    uni.n. Las familias bipolares m.s representativas son las familias TTL y ECL.
    ¥ Familias MOS.- emplean transistores MOSFET, es decir, transistores de efecto
    campo. La familias MOS m.s representativas son las familias NMOS y CMOS.
    Cada una de estas familias van a tener una serie de par.metros cuyos valores van a ser
    m.s o menos Þjos. Los principales par.metros de las familias l.gicas son:
    ¥ Par.metros temporales (Þgura 7.1).
    ¥ Retraso de propagaci.n de bajo a alto, t
    se.al de entrada baja (pasa por el 50%) hasta que la se.al de salida sube (pasa por
    el 50%).
    ¥ Retraso de propagaci.n de alto a bajo, t
    se.al de entrada sube (pasa por el 50%) hasta que la se.al de salida baja (pasa por
    el 50%).
    El hecho de subida y bajada se debe a que las principales familias son negativas, es decir, la
    salida que obtenemos es el valor negado de dicha funci.n.
    ¥ Retraso de propagaci.n.- valor medio de t
    ¥ Tiempo de transici.n de bajo a alto, t
    empieza a subir (pasa por el 10%) hasta que llega a un nivel alto (pasa por el 90%).
    ¥ Tiempo de transici.n de alto a bajo, t
    empieza a bajar (pasa por el 90%) hasta que llega a un nivel bajo (pasa por el 10%).
    Es decir, se considera que una transici.n se ha completado cuando pasamos de los umbrales
    del 10% y el 90%. Este hecho es debido a que la forma de onda a partir de esos valores cambia,
    pudiendo no llegar nunca a los valores del 0% o al 100%.
    PLH.- tiempo transcurrido desde que laPHL.- tiempo transcurrido desde que laPLH y tPHL.TLH.- tiempo transcurrido desde que la se.alTHL.- tiempo transcurrido desde que la se.al

    A la hora de construir las puertas l.gicas, un criterio ampliamente seguido (realmente en
    cualquier disciplina, no s.lo en Electr.nica) es el criterio de uniformidad, es decir, las diferencias
    entre las diferentes puertas l.gicas deben reducirse a las m.nimas. Este criterio es la base
    de la deÞnici.n de familia l.gica,

    Una
    b.sica a partir de la cual se pueden construir las puertas
    l.gicas.
    DETECCIÓN Y CORRECCIÓN DE ERRORES MEDIANTE EL CÓDIGO HAMMING.
    El método de paridad con un solo bit es eficiente en la detección de errores cuando hay confiabilidad en el sistema de comunicación. De hecho, el peso del dato queda determinado con m=n+1 bits, donde n es el número de bits que contiene la información. Este método solamente puede detectar errores de dos datos que difieran en un bit; osea, tengan distancia uno y que cambie, por error del sistema, solamente un bit. Sin embargo, no los corrige y a lo sumo, puede señalizar error y/o solicitar que vuelvan a enviar el byte, dato, palabra, o bloque de información que presentó el problema de comunicación.
    De la misma forma, si hay cambios de distancias pares (2,4, 6,...), el método no detectará error. Sin embargo, en las distancias impares señaliza los errores. Ejemplo de esto se puede ver comparando, en el punto anterior, los casos (D1 - D'1) y (A - A').
    En 1950 R.W. Hamming introdujo un método para detectar y corregir errores de datos en los sistemas de comunicación donde las distancias pueden ser mayores a la unidad. Este código trabaja con una distancia mínima de tres y puede detectar errores con cambios de 1 o 2 bits y corregir, cambios de un solo bit.
    Los bits necesarios para el código Hamming se dividen en dos grupos; m bits de información y k bits de chequeo o paridad, por lo que, el tamaño del dato a transmitir debe ser n=m+k bits. Éste debe cumplir con la siguiente ecuación:
    (Ec.1.9).
    La paridad del código puede ser par o impar, sin embargo, toda la información relacionada está dada en paridad par. Por lo tanto, los ejemplos se realizaran tomando como referencia codificación Hamming de paridad par con el número de bits n igual a siete. En la figura 1.7 se observa la distribución de paridades para los bits de chequeo con formato de siete bits de dato. De esta forma, al aplicar la Ec.1.9 se determina que m=4 y k=3, por lo tanto la información que se puede transmitir va desde 00002 hasta 11112; éstos están distribuidos, en la figura 1.7 como I7, I6, I5, I3 y deben mezclarse con los de chequeo C4, C2, C1. Estos últimos ocupan las posiciones de la potencia en base 2 indicada por los subíndices dos, uno y cero respectivamente.
     Formación del código Hamming de 7 bits.
    El código se forma entrelazando los bits de información (q3 q2 q1 q0) con los bits de control (h2 h1 h0) de forma que los subíndices de h correspondan con la posición decimal del código formado. Los bits (q3 q2 q1 q0) de información se hacen corresponder, en la figura 1.7, con los bits (I7 I6 I5 I3) respectivamente; la finalidad es ubicarlos en la posición decimal del código. Del mismo modo, (h2 h1 h0) es equivalente con las posiciones según en subíndice h2=C22=C4; h1=C21=C2; h0=C20=C1. Finalmente el código de siete bits queda formado de la siguiente manera:
    q3
    q2
    q1
    h2
    q0
    h1
    h0
    I7
    I6
    I5
    C4
    I3
    C2
    C1
    D6
    D5
    D4
    D3
    D2
    D1
    D0

    Al enviar el dato de siete bits, este es recibido como un paquete formado por
    (D6 D5 D4 D3 D2 D1 D0) donde no se reconoce quien es información y/o quien es control. Sin embargo, con el método se realizan tres grupos de detección y corrección formado por cuatro bits cada uno, los cuales siempre deben tener paridad par. Estos grupos están resaltados de gris en la figura 1.7 y forman tres cuartetos agrupados de la siguiente forma: (I7 I5 I3 C1); (I7 I6 I3 C2); (I7 I6 I5 C4). Ellos sirven tanto para generar, detectar y corregir datos con distancia uno y dos respectivamente.

    codigos detectores y correctores de errores

    CÓDIGOS DETECTORES Y CORRECTORES DE ERRORES.
    La transmisión y recepción de datos binarios, desde un dispositivo a otro, están propensas a errores, campos magnéticos, interferencias y ruidos eléctricos pueden ocasionar este problema. El costo agregado que ocasiona añadir circuitos detectores y correctores de error se ve compensado con el avance de la tecnología en el área de las telecomunicaciones. Los sistemas de comunicación digital son la tecnología de punta en el ámbito mundial y, específicamente, las redes de computadoras; ejemplo de esto son las redes locales, Internet, etc.
    Los sistemas deben detectar y/o corregir errores de comunicación en el menor tiempo posible de manera que puedan mantener el intercambio de información digital en línea y en tiempo real. La tarea no parece sencilla; sin embargo, los diseñadores de sistemas digitales deben considerar el costo de estos circuitos adicionales, a la hora de implementar el circuito.
    De hecho, es necesario agregar más bits al dato que se desea transmitir con la finalidad de chequear, en el receptor, los posibles errores durante el proceso de comunicación.
    El método para realizar esto; va desde solicitar que reenvíen el dato, el bloque o hasta la información completa. También hay métodos más seguros que implementan sistemas redundantes de tres o más circuitos de comunicación idénticos que operan en paralelo y por lo tanto disminuyen considerablemente el índice de errores.
    En esta sección se analizaran los métodos de detección de errores por paridad y detección y/o corrección mediante el código Hamming.
    DISTANCIA Y PESO DE LOS DATOS BINARIOS.
    Para chequear un bit de dato, en el receptor, es necesario agregar al sistema de comunicación, por lo menos, otro bit. De esta manera, el código queda formado por dos bits; uno para dato y el otro para chequeo y control. De esta misma forma, se debe establecer un patrón de comunicación ( protocolo de comunicación). Por ejemplo, establecer que el bit de control se genere de la siguiente forma: sea el más significativo y además, la suma de los dos bits sea siempre par.
    Esto se ilustra en la figura 1.5; aquí se puede ver los cuatro cambios posibles de los bits X y b0. El bit b0 tiene dos valores posibles 0 y 1; para enviar un cero se debe agregar en el generador de paridad GP otro cero para mantener la paridad par. Si, por el contrario, el b0 es uno entonces hay que generar en GP un uno para mantener el protocolo de paridad par sin errores.
    El circuito receptor de información detecta la paridad de los dos bits (X b0), chequea las combinaciones posibles; activando la señal de error cuando es recibida la combinación (0 1) o (1 0). Este ejemplo se puede extender para datos que tengan n bits de información ya que, basta un bit adicional, para generar y chequear errores de paridad. Para entender mejor esta última afirmación, se definen a continuación, los términos distancia y peso en los datos binarios.
    La distancia máxima entre dos datos binarios, de igual longitud, es equivalente al número de bits que cambian de estado. Por ejemplo, la distancia entre los datos D1=10010111 y D'1=10110001 es tres. La distancia se puede definir también como el número de bits diferentes entre dos palabras.
    Figura 1.6. Sistema de transmisión y recepción de un bit con generación y detección de error
    UNICODE.
    Es un código universal actualizado de propósito general, sirve para representar todos los símbolos utilizados en los alfabetos internacionales. Es una nueva norma de códigos alfanuméricos de 16 bits. Los símbolos se representan con cuatro dígitos hexadecimales como se muestra en la tabla 1.9. El código ASCII es un subconjunto de éste y está representado desde 0000 16 hasta 007F16. En la figura 1.4 se observa la distribución del código en cuatro zonas que van desde 000016 hasta FFFF16. La zona A comprende los códigos para alfabetos, sílabas, y símbolos. En la zona I están los códigos ideográficos como lo son los alfabetos Chinos y Japoneses. La zona O no es utilizada actualmente, sin embargo, está reservada para futuros ideogramas.
    La zona R es de uso restringido. Se subdivide en Área de uso privado, Área de compatibilidad y Códigos especiales. FFFE y FFFF no son códigos de carácter y se excluyen específicamente del UNICODE. El Área de uso privado está a disposición de quienes necesiten caracteres especiales para sus programas de aplicación; por ejemplo, los iconos empleados en los menús podrían especificarse por medio de códigos de carácter en esta área. La zona de compatibilidad tiene caracteres correlacionados con otras áreas del espacio global de código. La transmisión serial de un carácter UNICODE se realiza con dos bytes (byte 0 y byte 1). Primero se envía la palabra de control FFFE o FEFF indicando cual de los dos bytes es el más significativo; Por ejemplo, al enviar los símbolos FFFE, 4100, 4E00, 4700, 4500, 4C00 indica que se debe cambiar el orden de los bytes, esto es: 0041, 004E, 0047, 0045, 004C que se codifica como 'ANGEL' en la tabla 1.9. Sin embargo, en caso de haber enviado la palabra de control FEFF indicaba que el orden de los bytes era el mismo. Lo que no correspondía con los códigos ASCII del UNICODE.
    Estos ordenamientos en los bytes del UNICODE guardan relación con los formatos de datos para comunicación de computadoras Litle-Endian o Big-Endian.
    Primeros 256 Símbolos UNICODE.
    HEX00000100200300400500600700800900A00B00C00D00E00F
    0CTLCTLSP0@P`PÇÉá_+ðÓ­
    1CTLCTL!1AQaQüæí_-Ðß±
    2CTLCTL"2BRbRéÆó_-ÊÔ_
    3CTLCTL#3CScSâôú¦+ËÒ¾
    4CTLCTL$4DTdTäöñ¦-Èõ
    5CTLCTL%5EUeUàòÑÁ+IÕ§
    6CTLCTL&6FVfVåûªÂÃ͵÷
    7CTLCTL'7GWgWçùºÀÃÎÞ¸
    8CTLCTL(8HXhXêÿ¿©+ÏÞ°
    9CTLCTL)9IYiYëÖ®¦++Ú
    &uml;
    ACTLCTL*:JZjZèܬ¦-+Û·
    BCTLCTL+;K[k{ïø½+-_Ù¹
    CCTLCTL,<L\l|+¦_ݳ
    DCTLCTL-=M]m}ìØ¡¢-¦Ý²
    ECTLCTL.>N^n~Ä׫¥+̯_
    FCTLCTL/?O_oCTLŃ»+CTL_´SP

    jueves

    codigo exceso,codigo aiken, codigo 5421, codigo biquinario,dos de cinco, codigo gray, alfanumericos

    CÓDIGO EXCESO 3.
    Es un código igual al BCD, sin embargo se deben añadir tres unidades a este para transformarlo en exceso 3.
    CÓDIGO AIKEN O 2421.
    La ponderación de este código es diferente al BCD, para hallar su peso se debe tomar también grupos de cuatro bits, considerando los valores 2421, por dígito decimal.
    Este código se conoce como autocomplementado a uno porque sus diez valores, en la tabla 1.6; se pueden formar, complementando, a partir de los primeros cinco dígitos.
    CÓDIGO 5421.
    La ponderación de este código es diferente al BCD, para hallar su peso se debe tomar también grupos de cuatro bits, considerando los valores 5421, por dígito decimal. Este código se forma repitiendo los cinco primeros valores de la tabla 1.6, de modo tal, que cambia solo el bit más significativo de cero a uno.
    CÓDIGO BIQUINARIO.
    Necesita siete bits para formarse; siempre hay dos bits en nivel alto (uno) y los restantes cinco deben estar en nivel bajo (cero). El primer bit del código, en uno, se usa para indicar si el dígito se encuentra comprendido entre 5 y 9; el segundo bit del código, en uno, señala que se encuentra en el rango de 0 a 4. La desventaja de este código es la cantidad de bits que se deben utilizar para transmitir información, siete por cada dígito. Sin embargo, tiene la ventaja de poder realizar fáciles algoritmos para el chequeo de errores de transmisión; solamente se debe detectar que hayan dos bits, en nivel uno, por cada dato. Uno de estos se debe encontrar entre los primeros dos bits y el otro en los cinco restantes que forman el dígito.
    CÓDIGO DOS DE CINCO.
    Este código es similar al Biquinario, pero requiere de cinco bits para el correcto funcionamiento. Dos bits deben estar en nivel alto y los otros tres en cero.
    CÓDIGO GRAY.
    Este código cíclico no posee una relación directa con la ponderación de los dígitos del sistema decimal. Se forma cambiando el bit menos significativo de manera continua y consecutiva. Solamente cambia un bit, y éste, debe ser el menos significativo; de manera que no se repita con alguna combinación anterior. También se puede formar obteniendo las primeras ocho combinaciones con tres bits y luego, desde la 8va combinación hay que repetir simétricamente los valores, cambiando solamente el bit más significativo de cero a uno. Por ejemplo, la 8va posición es 0100 y a continuación viene la 9na 1100; del mismo modo, la 7ma 0101 es simétrica con la 11va 1101. El código Gray tiene aplicaciones en contactos de escobillas de motores, sistemas donde solo se necesite cambiar un bit de estado cíclicamente.
    La ventaja del código Gray radica en que la probabilidad de ocurrir menos errores y problemas de transición aumenta a medida que cambian mas bits de estado simultáneamente. El cambio consecutivo del código BCD desde 0111 a 1000 puede producir transiciones intermedias que originan el 1111 antes de estabilizarse en 1000. Sin embargo, el código Gray pasará desde 0111 a 0101 cambiando solamente un bit y por lo tanto, con menos posibilidad de cometer errores.
    CÓDIGOS ALFANUMÉRICOS.
    Estos códigos son interpretados por el computador como caracteres e indistintamente pueden representar símbolos numéricos, símbolos de control y letras. Las computadoras se comunican mediante estos códigos y los más utilizados son el código ASCII y el UNICODE.
    CÓDIGO ASCII.
    ASCII: American Standard Code Interchange Information. Cada caracter alfanumérico esta formado por una cadena de siete bits. Este código representa 128 símbolos diferentes entre dígitos, letras e instrucciones de control del computador. La tabla 1.xx muestra los símbolos con su respectivo valor hexadecimal.
    Código ASCII.
    B6B5B4
    B3B2B1B0
    BIN
    HEX
    000
    0
    001
    1
    010
    2
    011
    3
    100
    4
    101
    5
    110
    6
    111
    7
    0000
    0
    NUL
    DLE
    SP
    0
    @
    P
    `
    p
    0001
    1
    SOH
    DC1
    !
    1
    A
    Q
    a
    q
    0010
    2
    STX
    DC2
    "
    2
    B
    R
    b
    r
    0011
    3
    ETX
    DC3
    #
    3
    C
    S
    c
    s
    0100
    4
    EOT
    DC4
    $
    4
    D
    T
    d
    t
    0101
    5
    ENQ
    NAK
    %
    5
    E
    U
    e
    u
    0110
    6
    ACK
    SYN
    &
    6
    F
    V
    f
    v
    0111
    7
    BEL
    ETB
    '
    7
    G
    W
    g
    w
    1000
    8
    BS
    CAN
    (
    8
    H
    X
    h
    x
    1001
    9
    HT
    EM
    )
    9
    I
    Y
    i
    y
    1010
    A
    LF
    SUB
    *
    :
    J
    Z
    j
    z
    1011
    B
    VT
    ESC
    +
    ;
    K
    [
    k
    {
    1100
    C
    FF
    FS
    ,
    <
    L
    \
    l
    |
    1101
    D
    CR
    GS
    -
    =
    M
    ]
    m
    }
    1110
    E
    SO
    RS
    .
    >
    N
    ^
    n
    ~
    1111
    F
    SI
    US
    /
    ?
    O
    _
    o
    DEL