Diseñar ALU con 2 líneas seleccionadas, 2 entradas (n bits)

3

Quiero diseñar ALU con 2 líneas de selección, 2 entradas (n bits) que hacen lo siguiente:

esta es una tarea y quiero saber qué hacer, escríbame los pasos para diseñarla.
Lo primero que pensé hacer es construir una tabla con S0, S1, C, luego tengo 8 filas y la salida será F. ¿está bien? ahora que debo hacer?
gracias!
EDIT

S0 S1 C  |  operation
0  0  0  |  S = A+B
0  0  1  |  S = A+B+1
0  1  0  |  S = A transfer?
0  1  1  |  S = A+1(inc)
1  0  0  |  S = B'
1  0  1  |  S = B'+1
1  1  0  |  s = A+B'(negate)
1  1  1  |  S = A+B'+1
    
pregunta Ofir Attia

3 respuestas

4

¿Has oído hablar de un multiplexor de n bits? Calcule todas las funciones de forma independiente en paralelo (con lógica combinatoria), y pase las salidas a través de un multiplexor con la salida elegida por las líneas de selección. Los multiplexores son una herramienta conveniente para la "superposición lógica" (no tengo idea si ese es un término real, simplemente lo inventé).

La manera de encontrar una solución optimizada es construir primero una ruta de datos que pueda generar y combinar de manera eficiente todos los valores intermedios que identifica la declaración del problema. Luego realice una reducción lógica para generar las diversas señales de control a esa ruta de datos en función de sus entradas de control de alto nivel (S1, S0).

    
respondido por el vicatcu
2

Pocas observaciones que puedas hacer:

  1. Solo necesita 1 resultado para el conjunto de entrada de control
  2. TODAS las operaciones que ALU necesita realizar son posibles a través de un bloque Adder que tiene entradas de 2 n bits junto con 1 entrada de acarreo.
  3. El rango de entradas que necesita ingresar es (A, B, B ', 0) y (0, 1) para llevar entradas. Por ejemplo, para s1s0 = 01 y C = 0, puede alimentar A y 0 como entrada al sumador y establecer el acarreo en 0. Para C = 1, puede configurar el acarreo en 1.

Todo lo que se traduce a es multiplexor en la entrada seguido de un sumador.

Incluso si esto es solo tarea, es una técnica de diseño buena e importante para aprender a identificar redundancias en las especificaciones y reducir la lógica.

    
respondido por el mj6174
0

Estas son solo ideas para ayudar, no es necesario votar.

  • S0 siempre parece invertir B: usa una puerta exclusiva para esto; segundo va a una entrada y S0 a la otra.
  • C siempre agrega un uno a la respuesta intermedia, así que usa esto para puerta algo.
  • Cuando S0 es cero, A siempre se incluye en la respuesta
respondido por el Andy aka

Lea otras preguntas en las etiquetas