Sumador-restador
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 dependiendo de una señal de control. También es posible construir un circuito que realice sumas y restas al mismo tiempo.
Construcción
Teniendo un sumador n-bit 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 que invierta cada bit de A con una puerta NOT y luego agregue una. Esto produce S = B + A + 1, que es fácil de hacer con un sumador ligeramente modificado.
Precediendo cada bit de entrada A en el sumador con un multiplexor 2 a 1 donde:
- Entrada 0I0) es A
- Producto 1I1) es A
que tiene una entrada de control D que también está conectada al acarreo inicial, luego el sumador modificado realiza
- adición D = 0, o
- sutracción D = 1.
Esto funciona porque cuando D = 1 la entrada A al sumador es realmente A y el carry in es 1. Agregar B a A y 1 produce 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 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á 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 de la unidad de control.
El sumador-restador anterior podría ampliarse fácilmente para incluir más funciones. Por ejemplo, se podría introducir un multiplexor 2 a 1 en cada Bi que cambiaría entre cero y Bi; esto podría usarse (junto con D = 1) para producir el complemento a dos de A ya que −A = A + 1.
Un paso más sería cambiar el múltiplex 2 a 1 en A a 4 a 1 con la tercera entrada siendo cero, luego replicar esto en Bi produciendo así las siguientes funciones de salida:
- 0 (con ambos Ai y Bi entradas fijadas a cero y D = 0)
- 1 (con ambos Ai y Bi entradas fijadas a cero y D = 1)
- A (con Bi punto de entrada a cero)
- B (con Ai punto de entrada a cero)
- A + 1 (con Bi conjunto de entrada a cero y D = 1)
- B + 1 (con Ai conjunto de entrada a cero y D = 1)
- A + B
- A − B
- B − A
- A (con Ai establecido para invertir; Bi establecido a cero; y D = 0)
- −A (con Ai establecido para invertir; Bi establecido a cero; y D = 1)
- B (con Bi establecido para invertir; Ai establecido a cero; y D = 0)
- −B (con Bi establecido para invertir; Ai establecido a 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.
Contenido relacionado
Lander (nave espacial)
Archie (motor de búsqueda)
Craig venter