Multiplicador 4 bits VHDL
1. Componer un Multiplicador para dos números binarios sin signo de 4 bits. Abajo a la izquierda se encuentra una figura con el multiplicador a modelar y a la derecha la máquina de estados que la controla. Puede utilizar los diseños desarrollados en los ejercicios de los Trabajos Prácticos 2 a 8
Definimos el multiplicador con un modelo estructural el cual instancia a la entidad controller, quien se encarga de administrar otros diseños utilizados en trabajos prácticos anteriores, tales como fulladder, latch y shiftN. Utilizando señales locales a la arquitectura para relacionar las entidades, modelamos el multiplicador de la figura.
La entidad está compuesta por los puertos de entrada “a” y “b” de 4 bits …ver más…
Esta señal, en cada interacción de dos loops anidados se compara con la multiplicación de los índices de dichos loops, los cuales a su vez se asignan a las entradas de la entidad de contiene al multiplicador. El reloj es controlado por la función “clock” también definida en el paquete Utils. A continuación se muestran diferentes pasajes de las formas de onda de las señales obtenidas, donde se ven los diferentes valores que van tomando dichas señales y como cada vez que done es uno, la salida del dispositivo es igual al valor de la multiplicación realizada, mostrada en hexadecimal en “result” y en decimal en “resultado”.
3. Desarrollar una interfaz amigable para el Multiplicador usando la entrada y la salida standard, de modo tal que se pida ingresar los valores A y B por teclado y Result se muestre en área de interfaz del simulador.
Testbench con interfaz desarrollado para la prueba del multiplicador:
use work.Utils.all; use std.textio.all;
entity Test_multi4 is end; architecture Driver of Test_multi4 is component multiplicador port (a, b: in Bit_Vector(3 downto 0); stb, reset, clk: in bit; done: out bit; result: out bit_vector(7 downto 0)); end component; signal a, b: Bit_Vector(3 downto 0); signal clk, stb, reset, done: bit; signal result: Bit_vector(7 downto 0); begin UUT: multiplicador port map (a, b, stb, reset, clk, done, result); reloj: Clock (clk, 10 ns, 10 ns);