Saltar la navegación

2.4. Circuitos Combinacionales

Los circuitos lógicos se pueden clasificar en dos grupos generales: circuitos combinacionales y circuitos secuenciales. Los circuitos combinacionales son aquéllos cuya salida, en un determinado instante, depende exclusivamente del valor de las entradas en ese mismo instante. Todos los circuitos lógicos vistos con anterioridad son de este tipo, es decir, son circuitos lógicos combinacionales.
Como veremos más adelante, en los circuitos secuenciales la salida obtenida en cada momento depende del valor de las entradas y también del valor de esa misma salida en el momento anterior; es decir, son circuitos con capacidad para almacenar información binaria. Estos circuitos digitales, combinacionales y secuenciales son la base del diseño de sistemas digitales más complejos, como pueden ser los microprocesadores, por lo que el conocimiento de los mismos es fundamental si queremos abordar el estudio de cualquier sistema digital de mayor complejidad.
La utilización de estos circuitos MSI en el diseño de sistemas digitales supone una reducción en el número de elementos utilizados y, consecuentemente, una disminución de tiempo de diseño. En el diseño, los circuitos combinacionales MSI los representaremos como bloques funcionales, como el de la figura.

En esta apartado se describen los circuitos combinacionales MSI de mayor uso: su funcionamiento, sus entradas y salidas y sus principales aplicaciones en el diseño de sistemas digitales.

2.4.1. Codificadores

Los codificadores son circuitos combinacionales con "m" entradas y "n" salidas (siendo m < 2n), en las que aparecerá la combinación binaria correspondiente a la entrada activa. Dicho de otra manera, convierten un número decimal (indicado mediante la entrada activa) en un código binario (el valor de las salidas). Cada una de las entradas representa un número decimal y por las salidas se obtiene, codificado en binario, el valor decimal de la entrada activa.
Los codificadores se nombran, de forma general, como codificadores "m a n", siendo m y n el número de entradas y salidas, respectivamente. Ejemplos de codificadores son: codificador 8 a 3, 16 a 4 , 32 a 5....

Los codificadores pueden ser sin prioridad o con prioridad:

  • Codificadores sin prioridad: son codificadores en los que no puede activarse más que una entrada; si se activan más de una, a la salida aparecerá una
    combinación binaria errónea. 
  • Codificadores con prioridad: son codificadores que permiten que se activen más de una entrada, obteniéndose a la salida la combinación binaria correspondiente a una sola de las entradas activas, normalmente la combinación de la entrada de mayor valor decimal (prioridad a la de mayor valor decimal).

Codificadores sin prioridad

Un ejemplo de codificador sin prioridad es el codificador 8 a3 sin prioridad (8 entradas y 3 salidas) representado en la figura.

La tabla de verdad de este codificador es:

De la tabla de verdad del codificador podemos extraer la siguiente información:

  • En todas las combinaciones de entrada hay una única entrada a 1, que consideramos que es la entrada activa; es decir, las entradas se consideran que están activas cuando están a nivel alto (lógica positiva de entrada).
  • Dada una entrada activa, en la salida aparece el valor, en binario natural, de dicha entrada. Así, cuando está activa la entrada E3, en la salida aparece la combinación "011". La salida también trabaja con lógica positiva.

Codificadores con prioridad

Como ejemplo de codificador con prioridad presentamos el circuito integrado 74148, codificador 8 a 3 con prioridad y lógica negativa de entrada y de salida.

La tabla de verdad de este codificador es:

A la vista de la tabla de este codificador, podemos decir que:

  • Dada una entrada activa (a nivel bajo), todas las demás entradas de valor decimal superior a la activa están desactivas (a nivel alto); el estado del resto de las entradas, de valor decimal inferior a la activa, no importa (en la tabla tal estado aparece indeterminado a través del símbolo "x"). De todo esto se deduce que en este codificador tiene prioridad la entrada activa de mayor valor decimal.
  • Dada una entrada activa, en la salida aparece negado (ya que trabaja con lógica negativa de salida) el valor en binario natural de dicha entrada. Así, cuando se activa la entrada E5, en la salida aparece la combinación "010", es decir, el valor negado de 5 (101).
  • La forma de indicar la lógica negativa es a través de un pequeño círculo (lógicamente, sin círculo indicará lógica positiva). En el diagrama de bloques del codificador la forma de indicar que el circuito trabaja con lógica negativa es a través del citado círculo. En la tabla de verdad se podría indicar la lógica negativa presentando las correspondientes variables negadas; para las salidas sería así:

 

De todas formas, aún trabajando con lógica negativa, es habitual encontrar las variables sin negar.

Este codificador incluye, además de las 8 entradas de datos incluidas en la tabla de verdad, otras dos entradas que permiten resolver situaciones como cuando no hay ninguna entrada activa (en cuyo caso el valor de salida es 111, valor que también se produce cuando se activa la entrada E0).
Como aplicación típica de los codificadores veremos, en el siguiente punto, la de conversores de código, mediante la utilización conjunta con un decodificador.

2.4.2. Decodificadores

Un decodificador es un circuito combinacional que admite a la entrada una información codificada en binario con bits, y tiene tantas salidas como posibles configuraciones binarias distintas de entrada, es decir, 2n. Para cada configuración binaria de entrada se activa una sola de las salidas, la correspondiente a dicha combinación binaria. Podríamos decir que los decodificadores realizan la función inversa de los codificadores, es decir, la salida activa es el valor decodificado del código binario de entrada. Los decodificadores se clasifican en función del numero de entradas y, por lo tanto, se nombran como decodificadores de n a 2n. Veamos los ejemplos más representativos, 

Decodificador 2 a 4

El decodificador 2 a 4 tiene dos entradas de código y cuatro salidas activándose en cada momento la correspondiente a la combinación binaria de entrada. Además, suele incorporar una entrada de Inhibición (I) tal que, cuando se activa, pone todas las salidas a 1 (salidas desactivadas), dado que trabaja con lógica negativa de salida.

Normalmente, los decodificadores se construyen con puertas NAND, de más fácil y barata integración en TTL, resultando así decodificadores con lógica negativa de salida como el mostrado en la figura anterior.

La tabla de verdad para este decodificador es la siguiente:

De la tabla de verdad del decodificador 2 a 4 precisaremos lo siguiente:

  • Inhibir significa deshabilitar, desactivar. Si la entrada de inhibición está activa (I a 1), el circuito estará deshabilitado; si la inhibición está desactivada (I a 0), el circuito estará habilitado.
  • Cuando inhibimos el circuito, independientemente del valor de las entradas (xx), las salidas están desactivadas (1111).

Otros ejemplos de decodificadores, análogos al anterior,
son:

  • Decodificador 3 a 8: este decodificador tiene 3 entradas y 8 salidas, además de la entrada de inhibición.
  • Decodificador hexadecimal: con 4 líneas de entrada y 16 de salida (decodificador 4 a 16), está pensado para decodificar números en binario natural de cuatro bits. Además, suele ser base de construcción de decodificadores superiores como el 5 a 32 y el 6 a 64.

Existen otros decodificadores que no siguen la regla general de ser decodificadores de n a 2". Entre ellos está el decodificador decimal que veremos a continuación.

Decodificador decimal

Es un decodificador pensado para realizar la decodificación del código BCD-Natural, y, por lo tanto, posee 4 entradas de código y 10 salidas decodificadas. En el mercado se encuentran decodificadores decimales con lógica positiva y con lógica negativa, con entrada de inhibición y sin ella. Por ejemplo, el circuito integrado 7442 es un decodificador decimal con lógica positiva de salida y sin entrada de inhibición

Las aplicaciones más comunes de los decodificadores
son las siguientes:

  • Generadores de código: obtención de funciones o multifunciones de n variables conectando a su salida un circuito de puertas lógicas OR o NAND, Veremos un ejemplo más adelante.
  • Convertidores de código: el uso conjunto de un decodificador y un codificador se utiliza para obtener, de forma muy sencilla, circuitos convertidores de código. También veremos un ejemplo.
  • Representación de las cifras decimales: utilizando un decodificador BCD de 7 segmentos como elemento excitador de un display de 7 segmentos, se pueden visualizar las cifras decimales. Dedicaremos a este decodificador el siguiente apartado.

Veamos las dos primeras aplicaciones mediante sendos ejemplos.

Ejemplo
Obtener la siguiente función lógica utilizando un decodificador y puertas OR:

f (cba) =Σ3(1,3,5,7)

Solución:
Al ser una función con tres variables de entrada, utilizaremos un decodificador 3 a 8. Las salidas que se han de activar a 1 (utilizaremos un decodificador con lógica positiva de salida) son las correspondientes a las combinaciones de entrada 1, 3, 5 y 7; tomaremos esas salidas y las llevaremos a una puerta OR.

Ejemplo

Diseñar un circuito que convierta un número en BCD Natural a BCD Aiken. 

Solución:
Como a la entrada del circuito se presentará un número en BCD Natural de4 bits, utilizaremos un decodificador decimal (4 entradas y 10 salidas). Se puede observar en la tabla que el código BCD Aiken coincide con el BCD Natural en las primeras 5 combinaciones (del O al 4) y las 5 últimas coincide con las de los números 11, 12, 13, 14 y 15, representados en binario natural. De ahí que tengamos que utilizar un codificador, con prioridad, con 4 salidas y, consecuentemente, 16 entradas, para codificar hasta el 15.

El circuito conversor anterior funciona de la siguiente manera:

  • Cuando a la entrada del conversor se presente el número 3 (0011), en el decodificador decimal se activará con un 1 la salida S3, (todas las demás salidas estarán a 0). Esto supondrá que el codificador tendrá como única entrada activa la E3, que se codificará a la salida como 0011 (código Aiken del 3).
  • Si a la entrada se presenta el número 7 (0111), se activará la salida S7 y, consecuentemente, en la entrada E7 habrá un 1, con lo que a la salida del codificador aparecerá el código 1101, es decir, la representación del 7 en BCD Aiken.
  • Las entradas del codificador que no se utilizan se ponen a 0 (en la práctica será a masa). De esta manera, cuando el número presente a la entrada del decodificador sea menor que 5, en el codificador nunca habrá una entrada activa de mayor valor decimal.

2.4.3. Decodificador BCD de 7 segmentos

Este decodificador no responde a la definición dada ya que, dado un código de entrada, en la salida se activa más de un línea. Podríamos decir que este decodificador es un cambiador de código ya que permite obtener, a partir de un código BCD de 4 bits, el código necesario para actuar sobre un display de 7 segmentos que representará dicho código. Este codificador pertenece a la categoría de decodificadores excitadores, es decir, decodificadores que suministran a su salida la intensidad de corriente necesaria para encender un diodo LED (Light Emitting Diode).

Los displays de 7 segmentos son elementos visualizadores para cifras numéricas, compuestos por 7 segmentos f luminosos, bien a base de diodos LED o bien mediante cristales líquidos. Los primeros pueden ser excitados fácilmente e mediante tensiones continuas de tipo TTL, y los hay de dos tipos: de ánodo común y de cátodo común. En los de ánodo común los ánodos de todos los diodos están conectados a un mismo punto eléctrico que a su vez ha de estar conectado a alimentación. Cada cátodo independiente ha de ser excitado con una tensión a nivel de masa para que el correspondiente segmento se ilumine, funcionando, por lo tanto, con lógica negativa de entrada. En un display de cátodo común los 7 cátodos están unidos y se han de conectar a masa, para que cada ánodo independiente sea excitado con una tensión positiva que hará lucir el segmento. Funciona, por tanto, con lógica positiva de entrada.



Comercialmente existen decodificadores BCD a 7 segmentos con lógica positiva de salida (para cátodo común) y con lógica negativa de salida (para cátodo
común) y con lógica negativa de salida (para ánodo común). La tabla muestra la tabla de verdad de un decodificador BCD de 7 segmentos, con lógica negativa de salida.

El siguiente montaje utiliza un decodificador BCD (como el 7447) que trabaja con lógica negativa de salida, conectado a un display de ánodo común.

2.4.4. Multiplexores

Un multiplexor es un circuito que tiene "N" entradas de datos (información), llamadas canales, una sola salida y un mecanismo de selección formado por "n" entradas digitales (llamadas de selección o control), que determina cuál de las entradas de datos es la que transfiere su información a la única salida (para lo cual ha de cumplir que N<2n), Un multiplexor se comporta como un conmutador de entrada múltiple y salida única, pero cuyo control no es mecánico sino electrónico.

Los circuitos multiplexores digitales TTL más utilizados en la práctica son los de 2, 4, 8 y 16 canales de información.

Multiplexor de 2 canales

El multiplexor de 2 canales consta de dos entradas de datos, una única salida y una sola entrada de selección (con un único bit se indica cual de las 2 entradas pasa a la salida). También puede tener una entrada de inhibición para desactivar la salida. La tabla de verdad y el diagrama de bloques del circuito (sin entrada de inhibición) están representados en la figura

De la tabla de verdad del multiplexor indicaremos lo siguiente:

  • Cuando está seleccionado el canal 0 (C = 0), a la salida se presentará el dato de la entrada E0 y no importa el dato del canal 1. Cuando se selecciona el canal 1 (C=1), la información que pasa a la salida es la de la entrada E1
  • En este multiplexor, los canales de entrada son de un solo bit y, por lo tanto, la salida también es de un solo bit, es decir, formada por una única línea de salida.

En la práctica estos multiplexores de 2 canales se encuentran en grupos de 4 integrados en un solo chip (como el 74153) con las entradas de selección e inhibición comunes y formando un bloque llamado cuádruple multiplexor de 2 canales.

La utilidad de este multiplexor es la de seleccionar hacia la salida (una única salida de 4 bits), una de las dos posibles entradas (de 4 bits cada una). A este grupo de líneas que forman cada uno de los canales también se le denomina bus. La operación de llevar a la salida uno de los dos canales se llama multiplexar.

Multiplexores de 4, 8 y 16 canales

El multiplexor de 4 canales tiene 4 entradas de datos, 2 de selección de canal (con 2 bits se controlan 2n entradas) y una salida. El circuito de selección es un decodificador 2 a 4. 
El multiplexor de 8 canales dispone de 8 entradas de información, 3 de selección de canal y una salida. También en este multiplexor se utiliza un decodificador, en este caso de 3 a 8, para seleccionar los canales de entrada. Este multiplexor lo podemos encontrar en el chip 74151, de la familia TTL, con una entrada de habilitación denominada strobe. El multiplexor de 16 canales, integrado en el chip 74150, dispone de 16 canales de información, 4 bits de selección de canal, una salida y la correspondiente señal de inhibición.

El multiplexor como generador de funciones

Una de las aplicaciones que podemos realizar utilizando multiplexores es la de generador de funciones lógicas. Para generar una función lógica con "n" variables podemos proceder de dos maneras:

  • Utilizando un multiplexor con "n" entradas de selección y, consecuentemente 2n entradas (ver ejemplo a continuación). Es la manera más fácil. 
  • Utilizando un multiplexor con "n-1" entradas de selección. La implementación resulta un poco más complicada pero se utiliza un multiplexor con un menor número de entradas. En la Solución 2 del siguiente ejemplo estableceremos un posible procedimiento a seguir para generar funciones lógicas de esta manera.

Ejemplo
Diseñar un circuito combinacional, mediante un multiplexor, que genere la siguiente función lógica: 

Solución 1:
Al ser una función de 3 variables utilizaremos un multiplexor con 3 entradas de selección y, consecuentemente, 8 canales de información. La solución es inmediata ya que sólo hay que fijar el valor de cada canal con el valor de la función correspondiente a la combinación dada (por ejemplo, el valor del canal 3 ha de ser el que toma la función para la combinación 3):

De la tabla de verdad y del multiplexor observamos que la combinación de entrada selecciona el canal que pasa a la salida. El valor fijo del canal seleccionado es el valor que toma la función para esa combinación.


Solución 2:
Veamos un posible procedimiento para la obtención del circuito:
1. Obtener el multiplexor. Al ser una función de 3 (n) variables, utilizaremos un multiplexor de 2 (n-1) entradas de selección y, consecuentemente, 4 canales de información.
2. Obtener la tabla de verdad de la función. La tabla es la obtenida en la Solución 1. A veces una simple modificación  de la función, como tomar factor común, o simplificando algebraicamente, facilita la obtención de la tabla. En la función del ejemplo basta con sacar factor común.
3. Las n-1 primeras variables de la función (empezando por la menos significativa) configuran los bits de selección del multiplexor y la que falta ha de aparecer en las entradas de datos. En nuestro caso las variables de selección son la a y la b, y la variable c se ha de tener en cuenta en las entradas de datos.
4. El valor de las entradas se deduce en la tabla, teniendo en cuenta los bits de selección. Aquí habrá que echar mano del ingenio y comprobar los valores que toma la función para la misma combinación de bits de selección, recordando que a la salida pasa el valor de la entrada seleccionada mediante esos bits:

  • Para la combinación 00, el valor de la función coincide con el valor de la variable c en las dos combinaciones. El valor de la entrada E0, será, por tanto, el valor de la variable c. 
  • Para la combinación 01, el valor de la función es siempre 1. La entrada E1, tendrá, pues, el valor 1. » Para la combinación 10, el valor de la función es 0 y, por lo tanto, el valor de la entrada E2, será 0.
  • Para la combinación 1 1, el valor de la función también es 0, por lo cual el valor de la entrada E3, también será 0.

El generador de funciones queda así:

2.4.5. Demultiplexores

Los demultiplexores realizan la función inversa a la de los multiplexores, es decir, se comportan como conmutadores de entrada única y salida múltiple. En general, los demultiplexores tendrán una entrada de información (que puede ser tanto analógica como digital), 2n salidas y "n" entradas digitales de control que determinarán por cuál de las salidas aparecerá el valor de la única entrada.

Los demultiplexores también pueden ser analógicos y digitales, aunque en la práctica no existen demultiplexores digitales, sino que se fabrican decodificadores-demultiplexores, como ocurre en la familia TTL (en la que los demultiplexores integrados son también decodificadores). Los demultiplexores digitales los podríamos calificar, de esta manera, como decodificadores con una entrada especial de inhibición por la que se introduce la información a demultiplexar. Veamos, como ejemplo de lo que acabamos de decir, un demultiplexor de 4 salidas con entrada de inhibición.

Demultiplexor de 4 salidas

El demultiplexor de 4 salidas tiene 2 entradas de control (C1C0) en las que se indicará por cual de las salidas aparecerá la información de la única entrada (E). En este demultiplexor el decodificador posee una entrada de inhibición Í (que es la entrada del demultiplexor) activa a nivel alto. Si la entrada de inhibición está activa (I a 1), no se deja pasar ninguna información a las salidas permaneciendo éstas a 0. Si la entrada de Inhibición está desactivada (I a 0), el 1 saldrá por la salida seleccionada

La tabla siguiente muestra la tabla de verdad del demultiplexor de 4 salidas.

De la tabla de verdad del multiplexor observamos que es idéntica a la de un decodificador 2 a 4 con lógica positiva de salida, utilizando su entrada de inhibición como entrada de datos y sus entradas de información como entradas de selección del demultiplexor.

2.4.6. Comparadores

Un comparador de n bits es un circuito combinacional que tiene por entradas dos números binarios (A y B) de "n" bits cada uno y tres salidas en las que se determina si uno de los números es mayor, menor o igual que el otro. Las tres salidas típicas de un comparador se suelen denominar A>B, A<B y A=B.

La tabla de verdad y el diagrama de bloques de un comparador de dos números de un solo bit están representados en la figura de arriba. En tecnología TTL podemos encontrar comparadores de 4 bits, como el 7485, a partir de los cuales se pueden construir comparadores de un número mayor de bits. Estos comparadores se fabrican con tres entradas adicionales (A>Bin A<Bin  y A=Bin) que permiten la conexión en cascada de varios comparadores con el objeto de conseguir comparadores de 8, 16 y más bits.

2.4.7. Representación de número enteros

Como ya se comentó con anterioridad, los circuitos digitales realizan tanto operaciones lógicas (como lo es la de comparación de dos números) como aritméticas. Entre esta últimas tenemos la suma y resta de números que, naturalmente, pueden dar como resultado un número negativo. A continuación estudiaremos la representación de números enteros, negativos y positivos, con objeto de poder realizar correctamente la operación de resta aritmética. Los dos métodos más comunes utilizados por los circuitos digitales para representar números enteros son: valor absoluto y signo y complemento a 2.

Valor absoluto y signo (VAS)

La representación de un número entero en valor absoluto y signo (VAS), también llamado módulo y signo, añade al valor absoluto del número (en binario natural) un bit para expresar el signo del número; este bit, llamado bit de signo, se sitúa a la izquierda del bit de mayor peso del número binario. El bit de signo para los números positivos es el 0 y para los números negativos es el 1. Resumiendo, un número binario representado en VAS contiene un bit de signo (el primer bit comenzando por la izquierda) y, a su derecha, el módulo o valor absoluto de dicho número en binario natural.

Ejemplos (bit de signo subrayado):

Para aumentar los bits de un número dado en VAS se añade a la izquierda del bit de mayor peso (del valor absoluto) tantos ceros como sean necesarios, dejando el bit de signo como está. Por ejemplo, el 1000101 sigue siendo el —5 y el 00001101, el +13, ambos en VAS. El opuesto de un número dado en VAS se obtiene cambiando el bit de signo y manteniendo el valor absoluto del número. En los ejemplos anteriores se puede comprobar que en lo único en que difieren el +5 y el 5 o entre el +13 y el -13 es en el bit de signo.

El inconveniente de este sistema de representación es, como veremos más adelante, que no sirve para sumar números negativos. La ventaja es que, conociendo el sistema binario, identificamos fácilmente el número.

Complemento a 2 (C-2)

Este sistema utiliza los mismos bits de signo que el sistema VAS y la representación de los números se obtiene de la siguiente manera:

  • Los números positivos se representan igual que en VAS: 0 como bit de signo y, a continuación, el valor del número en binario natural.
  • Los números negativos se obtienen, partiendo de su representación en VAS, cambiando ceros por unos y unos por ceros (proceso denominado complementar a 1 o, simplemente, complementar) el valor absoluto del número, dejando el bit de signo como está, y sumando 1. Al proceso de complementar a 1 y sumar 1 se le denomina complementar a 2.

Aunque hasta ahora no hemos definido la suma aritmética (se verá más adelante), se explica este procedimiento de complementar y sumar dado que es así como lo hacen los circuitos digitales. En cambio, si la complementación a 2 la tenemos que hacer a mano, lo más cómodo es utilizar la regla práctica que se enuncia más adelante. Respecto a la suma aritmética, para los dos ejemplos que se citan, es suficiente con recordar la suma en base decimal. Veamos los dos ejemplos anteriores:

Resumiendo:

Hay una regla práctica para la representación de números negativos en C-2, partiendo de su equivalente en VAS, que podemos enunciar de la siguiente manera:

Comenzando por la derecha del número, se dejan como están todos los 0 hasta el primer 1, incluido éste, y a partir de aquí se complementa el resto del número dejando el bit de signo igual.

Veamos dos ejemplos::

Esta regla práctica también sirve para obtener la representación de números negativos en VAS a partir de su equivalente en C-2. Para incrementar el número de bits de un número representado en C-2, sin que éste cambie, se ha de repetir, a la derecha del bit de signo el bit de signo tantas veces como sea necesario.

Por ejemplo, el 18:

En el caso de números positivos la comprobación es evidente: los ceros que se añaden a la izquierda del valor absoluto del número no cambia éste (lo mismo ocurre en el sistema decimal); en el caso de los números negativos, basta con pasar el número en C-2 a su equivalente en VAS, aplicando la regla práctica. En el caso del -18 (111101110) tendríamos: 100010010, es decir, el -18.
En C-2 se define el opuesto de un número dado como el que se obtiene complementando a 2 todo el número, incluido el bit de signo. Para complementar a 2 el número se utiliza la regla práctica. Se puede comprobar esta regla aplicándola al +5, +13 y al +18, para convertirlos en -5, -13 y -18, en los ejemplos expuestos anteriormente.
La definición del opuesto en C-2 nos servirá para definir la resta binaria, como veremos en el siguiente apartado.

ARITMÉTICA BINARIA

Las operaciones aritméticas fundamentales (suma, resta, multiplicación y división) se pueden realizar con códigos binarios mediante circuitos lógicos combinacionales, construidos a partir de su correspondiente tabla de verdad. 

En este apartado trataremos únicamente de la suma y de la resta y sólo para el caso de números enteros.

Suma aritmética

Consideraremos inicialmente la suma de dos números de un solo bit cada uno:

Como se puede observar, cuando sumamos 1+1 el resultado es 0 y nos llevamos 1 (en decimal la suma se representaría como 2 y es lo que, en realidad, representamos con 10). Cuando se produzca una suma en la que nos llevamos algo, decimos que se produce acarreo, y al bit correspondiente le llamamos bit de acarreo (como el 1 de la suma 1+1). Veamos algunos ejemplos de sumas:

Semisumador
A continuación diseñaremos el circuito que realiza la suma de dos números de un bit cada uno, partiendo de su tabla de verdad. El circuito tiene dos entradas (a y b) y dos salidas: una obtiene la suma (S) y la otra el acarreo (C). Tabla y circuito se muestran en la figura:

Las funciones lógicas suma y acarreo se obtienen directamente de la tabla de verdad:

El circuito que realiza la suma de dos números de un solo bit se denomina semisumador.

Sumador completo

Para sumar números de más de un bit, como los utilizados en los ejemplos anteriores, se utiliza un sumador denominado sumador completo o total (ver figura). Este sumador tiene en cuenta el posible acarreo inicial (que se sumaría a la suma de los dos bits de menor peso), lo que supone contar con una entrada más). La tabla de verdad del se muestran en la tabla siguiente:

El bloque sumador completo de la figura presenta las siguientes entradas y salidas:

  • Dos entradas, una para cada bit (a y b), para los dos números que queremos sumar.
  • Una entrada de acarreo inicial (C0) por la que se introducirá el acarreo producido en una suma anterior.
  • Dos salidas: el resultado de la suma de los dos bits (S) y el posible acarreo producido en esa suma (C1).

El bloque sumador completo quedaría como sigue:

Sumadores de n bits

La conexión en cascada de varios sumadores completos permite la suma de dos números binarios de varios bits cada uno. Un ejemplo de ello es el sumador de 4 bits, como el integrado en el chip 7483:

En bloque funcional sería así:

Del sumador de 4 bits podemos indicar:

  • Puede sumar dos números binarios de cuatro bits cada uno: A (A3,A2,A1,A0)  y B (B3,B2,B1,B0,).
  • El acarreo inicial del sumador (C0), para una suma de dos números de 4 bits cada uno, es 0.
  • Genera un acarreo de salida (C4) que permite utilizar este sumador como un solo bloque que se puede, a su vez, conectar en cascada con otro bloque idéntico para formar un sumador binario de 8 bits, y así sucesivamente, uno de 16, 32 y más bits.

Resta binaria

La resta binaria se realiza de forma similar a la suma binaria:

Los circuitos digitales realizan la resta binaria de dos números sumando el primer número con el opuesto del segundo. Esta suma se realiza bit a bit, incluyendo el bit de signo y despreciando el acarreo final (el bit superior al bit de signo). Los circuitos digitales que realizan esta operación son los ya conocidos sumadores de n bits.
Como ya se ha comentado, para esta operación de resta binaria los números no pueden estar representados en VAS ya que, como se ve en los dos siguientes ejemplos, el resultado es erróneo:

La resta de dos números se realiza en C-2, y, lógicamente, el resultado queda también en C-2. Hay que recordar cómo se obtiene el opuesto de un número dado en C-2: se complementa a 2 todo el número, incluido el bit de signo (utilizando la regla práctica). Repetimos las dos restas anteriores, representando ahora los números en C-2:

Sobre estas dos últimas restas hacemos las siguientes consideraciones:

  • En la primera (5 — 2 = 3) se produce un acarreo final que no se debe tener en cuenta. Lo mismo ocurre en la operación 9 — 13 de los números dados en VAS.
  • En la segunda resta (9 — 13 = -4) el resultado es negativo y viene dado en C-2. Para comprobar que es correcto deberemos pasarlo a VAS dado que en este sistema reconocemos mejor los números. Para ello, no hay más hacer el complemento a 2 del número excluido el bit de signo (ya que no estamos hallando el opuesto, sino convirtiendo de un sistema a otro):
    11100C-2> 10100(4).

El acarreo que se produce en la suma de números representados en C-2 se debe interpretar de la siguiente forma:

  • Si los signos de los números que se suman son diferentes, el acarreo obtenido es falso y no se debe tener en cuenta, como en el ejemplo de 5 + (-2).
  • Si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit de signo. Si no se produce acarreo se considera que éste es 0 y el resultado es positivo. Veamos dos ejemplos:

En realidad, el acarreo se produce cuando el resultado requiere más bits que los que se están usando en la operación. En la suma de 6 y 7, ambos representados con 3 bits más el de signo, el resultado (13) necesita 4 bits más el de signo. Lo mismo ocurre en la otras suma de números negativos.
La solución más práctica para evitar el acarreo es utilizar un bit más que los estrictamente necesarios y despreciar siempre el acarreo final. Veamos nuevamente las operaciones anteriores: 

Creado con eXeLearning (Ventana nueva)