Confundido sobre cómo implementar ALU usando VHDL estructurado

2

Soy nuevo en VHDL, trabajando en la asignación para mi clase de arquitectura de computadora:

implemente la ALU de 32 bits usando VHDL, que realiza solo ciertas operaciones: and , shift left , shift right , complementing one of the input , el resto de las operaciones hará simple addition . El truco es que el código debe estar estructurado, ya que el instructor proporciona bitshifter y sumador.

He buscado en Google para ejemplos, pero todos ellos usan código directo (como result <= a + b ). ¿Cuál sería una buena manera de implementar ALU utilizando los requisitos anteriores? Gracias!

    
pregunta newprint

3 respuestas

4

Si los bitshifter y el sumador ya están provistos para usted, parece que todo lo que le queda por hacer es conectarlos juntos. Construya un módulo que dirija las entradas apropiadas dada una señal de control. Si tiene seis operaciones posibles, necesitará al menos tres bits para una señal de control, ¿verdad? Es posible que desee elegir las distintas operaciones para tener un bit similar en común, y puede usar ese bit para mezclar las salidas de cada bloque de componentes a la salida del bloque que está creando. Usaré un pseudo código porque, primero, esta es tu tarea y, segundo, no he escrito VHDL en años.

  case control_signal is
    when 1 =>   -- Control=1 means add inputs
      adder_input_A <= top_level_input_A;  -- Move inputs of top lever to the adder
      adder_input_B <= top_level_input_B;
    when 2 =>   -- Control=2 means shift the bits left
      bit_shift_input <= top_level_input_A;  -- Move input to bitshift block
      bit_shift_value <= top_level_shift;    -- This one can more likely be always connected
    when 3 =>
      do another one, like shift right
    when others =>
      null;
  end case;

Entonces, básicamente estás creando un mux que cambia las entradas dependiendo de la operación que se está realizando. Obviamente, no tengo idea de cómo se ven sus bloques actuales y cómo se implementan, pero creo que el concepto general todavía debería aplicarse.

    
respondido por el Samuel
1

Es necesario desarrollar las diversas operaciones a partir de la suma y otras operaciones de nivel inferior. Por ejemplo, en la escuela primaria aprendimos cómo multiplicar números de varios dígitos de números de un solo dígito. En la multiplicación binaria es 1 o 0, que es tomar la entrada como está o generar un cero. Repita esto para el LSB de un multiplicando, luego cambie y repita.

    
respondido por el Brian Carlton
1

Envíe las entradas a los núcleos que se le han proporcionado. Es posible que también necesite algunas señales de control adicionales (su desplazador de bits puede tener una cantidad de desplazamiento de complemento de 2 s, o "número de bits" y señales de dirección separadas, por ejemplo).

Elija (es decir, use un mux para seleccionar) cuál de sus núcleos enviará a la señal de salida.

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas