Diseñar una ALU de 4 bits para calcular varias funciones

4

He estado trabajando en el diseño de una ALU que calcula varias funciones pero realmente no sé cómo separar cada función de la otra. Las entradas son números de 4 bits A y B. Tengo un decodificador que selecciona qué función usar, pero no sé cómo implementar las funciones del decodificador. La ALU necesita realizar operaciones aritméticas y también operaciones lógicas. Si alguien sabe cómo estructurar una ALU que tiene 2 entradas de 4 bits y 1 salida de 4 bits, se agradecería cualquier orientación. Gracias.

    
pregunta Trevor Arjeski

5 respuestas

9

En términos de "separar" las funciones, eso no es realmente cómo funciona la lógica digital. La lógica digital es "siempre haciendo todo". Necesitas un mux (multiplexor) allí. El multiplexor se utiliza para seleccionar la salida correcta de todos los generados.

Suponga las entradas A y B, salida Q. Suponga que la ALU hace dos cosas diferentes: Q = A + B, o Q = A & B.

La ALU tendrá un sumador. También tendrá una gran puerta AND.

Tanto A como B van hacia el sumador y la puerta AND. Siempre. Cada momento de cada día, el sumador agrega A y B, y la puerta es ANDing A y B.

El mux se usa para seleccionar cuál de las salidas queremos pasar a Q. Si las señales de control a la ALU dicen "agregar", entonces el mux seleccionará la salida del sumador y la pasará a Q; La salida de la compuerta AND no está en uso. Si el control dice "y", el mux seleccionará la salida de la puerta AND y la pasará a Q en su lugar, mientras que la salida del sumador no se utiliza.

Imagina A = 0b0001 y B = 0b0010 en las entradas de la ALU. El sumador siempre produce 0b0011 y la compuerta AND siempre produce 0b0000. Si proporciona la señal de control "agregar", el 0b0011 pasa a Q. Puede dejar A y B solos, y cambiar la señal de control a "y", luego 0b0000 se pasa a Q.

    
respondido por el ajs410
2

Para un ancho de palabra de 4 bits, una ROM paralela (EEPROM, Flash) es la forma más fácil de implementarla. Utilice ambas palabras de entrada, combinadas con la operación (probablemente también de 4 o 5 bits) como la dirección de la ROM, y generará el resultado para esa combinación. Si las operaciones incluyen la multiplicación, la salida debe tener ocho bits de ancho, lo que manejará cualquier ROM paralela actual. Si tiene como máximo 32 operaciones, solo necesitará una ROM de 8K bytes (\ $ 2 ^ {2 \ veces 4 + 5} = 8192 \ $)
La tarea más difícil (e incluso eso no es tan difícil) es escribir un programa para crear el contenido de la ROM.

    
respondido por el stevenvh
1

Aquí es un ejemplo de una ALU de 2 bits. Como puede ver XOR, y, o son computadora por las primeras 3 puertas lógicas. Luego se usan dos compuertas XOR para determinar el valor de la suma. Luego se utilizan dos AND y una compuerta OR para determinar el valor de mantenimiento. Puedes elaborar la tabla de verdad y ver que funcione. El acarreo se alimenta luego a la lógica del segundo bit que funciona de la misma manera. El decodificador selecciona la operación. Solo tienes que continuar con el mismo patrón y extenderlo a 4 bits.

Para agregar tres bits (C es el arrastre), la tabla de verdad es:

A B C  (A+B) Carry
0 0 0    0     0
0 0 1    1     0
0 1 0    1     0
0 1 1    0     1
1 0 0    1     0
1 0 1    0     1
1 1 0    0     1
1 1 1    1     1

Puede descubrir cómo implementar estas dos funciones lógicas utilizando un mapa de Karnaugh

    
respondido por el ergodicsum
1

Aquí es una ALU de 4 bits en VHDL. Si se requiere hardware real, el código podría implementarse en un CPLD adecuado.

    
respondido por el Leon Heller
1
Los

artículos de diseño de ALU perfectos están aquí: enlace

    
respondido por el BarsMonster

Lea otras preguntas en las etiquetas

Comentarios Recientes

en un procesador x86 de 3.9 GHz little endian ejerce una gran presión sobre la arquitectura del procesador, y las aplicaciones de multiplexación de tareas a menudo lo necesitan. Esta filtración nos permite operar con el conocimiento de que algunos nodos gráficos saldrán como un poco diferente de 0x11 a 0x11E como una matriz de 0x4 bits en 64 bits, donde cada elemento corresponde a un elemento. Lo que es una buena noticia es que todos los 3.9 Los núcleos de procesamiento de GHz a la vuelta de la esquina en las... Lees verder