En los circuitos digitales , un sumador-restador es un circuito que es capaz de sumar o restar números (en particular, binarios ). A continuación se muestra un circuito que suma o resta según una señal de control. También es posible construir un circuito que realice sumas y restas al mismo tiempo.
Construcción
Tener un n sumador bits para A y B , entonces S = A + B . Luego, suponga que los números están en complemento a dos . Luego, para realizar B - A , la teoría del complemento a dos dice invertir cada bit de A con una puerta NOT y luego agregar uno. Esto produce S = B + A + 1 , que es fácil de hacer con un sumador ligeramente modificado.
Anteponiendo cada bit de entrada A en el sumador con un multiplexor 2 a 1 donde:
- La entrada 0 ( I 0 ) es A
- La entrada 1 ( I 1 ) es A
que tiene la entrada de control D que también está conectada al acarreo inicial, entonces el sumador modificado realiza
- suma cuando D = 0 , o
- resta cuando D = 1 .
Esto funciona porque cuando D = 1 la A de entrada al sumador es realmente A y el arrastre en es 1. Adición de B a A y 1 rendimientos de la resta deseada de B - A .
Una forma de marcar el número A como positivo o negativo sin usar un multiplexor en cada bit es usar una puerta XOR para preceder a cada bit.
- La primera entrada a la puerta XOR es el bit de entrada real
- La segunda entrada a la puerta XOR para cada uno es la entrada de control D
Esto produce la misma tabla de verdad para el bit que llega al sumador que la solución del multiplexor, ya que la salida de la puerta XOR será la que sea el bit de entrada cuando D = 0 y el bit de entrada invertido cuando D = 1 .
Papel en la unidad lógica aritmética
Los sumadores son parte del núcleo de una unidad lógica aritmética (ALU). La unidad de control decide qué operaciones debe realizar una ALU (según el código de operación que se está ejecutando) y establece la operación de la ALU. La entrada D al sumador-restador anterior sería una de esas líneas de control desde la unidad de control.
El sumador-restador anterior podría extenderse fácilmente para incluir más funciones. Por ejemplo, se podría introducir un multiplexor 2 a 1 en cada B i que cambiaría entre cero y B i ; esto podría usarse (junto con D = 1 ) para producir el complemento a dos de A ya que - A = A + 1 .
Un paso adicional sería cambiar el múltiplex 2 a 1 en A a un 4 a 1 con la tercera entrada siendo cero, luego replicar esto en B i dando así las siguientes funciones de salida:
- 0 (con las entradas A i y B i configuradas en cero y D = 0 )
- 1 (con las entradas A i y B i configuradas en cero y D = 1 )
- A (con la entrada B i ajustada a cero)
- B (con la entrada A i ajustada a cero)
- A + 1 (con laentrada B i ajustada a cero y D = 1 )
- B + 1 (con laentrada A i establecida en cero y D = 1 )
- A + B
- A - B
- B - A
- A (con A i configurado para invertir; B i configurado a cero; y D = 0 )
- - A (con A i configurado para invertir; B i configurado a cero; y D = 1 )
- B (con B i configurado para invertir; A i configurado en cero; y D = 0 )
- - B (con B i configurado para invertir; A i configurado en cero; y D = 1 )
Al agregar más lógica delante del sumador, un solo sumador se puede convertir en mucho más que un simple sumador: una ALU.