Multiplicador 4 bits VHDL

Páginas: 7 (1549 palabras) Publicado: 9 de diciembre de 2015
Trabajo Práctico 9

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 laentidad 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 (números a multiplicar), la señal “stb” que indica cuandorealizar la multiplicación, “reset” para resetear el dispositivo y “clk” que sincroniza las operaciones a realizar. Por otro lado, los puertos de salida están dados por el vector result de 8 bits y la señal “done” que se pone en uno cuando la operación ya se realizó.



entity multiplicador is
port (a,b: in Bit_Vector(1 to 4);
stb, reset, clk: in bit;
done: out bit;
result: out bit_vector(7downto 0));
end;

architecture comportamiento of multiplicador is
signal sr_a, sr_b: BIT_VECTOR(8 downto 1);
signal addout, REGout: Bit_Vector(8 downto 1);
signal OFL,Init, Shift,F, REGclr, Add: bit;

component ShiftN
port (CLK: in Bit; CLR: in Bit; LD: in Bit;
SH: in Bit; DIR: in Bit;
D: in Bit_Vector; Q: out Bit_Vector);
end component;

componentAdder8
port (A, B: in Bit_Vector(7 downto 0); Cin: in Bit; Cout: out Bit; Sum: out Bit_Vector(7 downto 0));
end component;

component Latch8
port (D: in Bit_Vector(7 downto 0); Clk: in Bit; Pre: in Bit; Clr: in Bit; Q: out Bit_Vector(7 downto 0));
end component;

component Controller
port (STB, CLK, LSB, Stop: in Bit; Init, Shift, Add, Done: out Bit);
end component;

beginREGclr <= not(Init or Reset);
SR1: ShiftN port map (CLK, Reset, Init, Shift, '0', A, sr_a);
SR2: ShiftN port map (CLK, Reset, Init, Shift, '1', B, sr_b);
F <= NOT(sr_a(1) OR sr_a(2) OR sr_a(3) OR sr_a(4) OR sr_a(5) OR sr_a(6) OR sr_a(7) OR sr_a(8));
F1: Controller port map (STB, CLK, sr_a(1), F, Init, Shift, Add, Done);
A1: Adder8 port map (sr_b, REGout, '0', OFL, ADDout);
R1: Latch8 port map(ADDout, Add, '1', REGclr, REGout);
Result <= REGout;
end;





2. Desarrollar un testbench que pruebe minuciosamente el Multiplicador.

Testbench

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 downto0));
end component;
signal a, b: Bit_Vector(3 downto 0);
signal clk, stb, reset, done: bit;
signal result: Bit_vector(7 downto 0);
signal resultado:integer;
begin
UUT: multiplicador port map (a, b, stb, reset, clk, done, result);
reloj: Clock (clk, 10 ns, 10 ns);
Stimulus: process

begin
reset<= '1', '0' after 10 ns;
wait for 10 ns;

for i in 0 to 15 loop
for j in 0 to 15loop
a<=convert(i, 4);
b<=convert(j, 4);
stb<= '1', '0' after 20 ns;
wait until done = '1';
wait for 10 ns;
assert ((resultado = i * j)and not(done = '0' and done'EVENT)) report "Multiplicacion erronea" severity warning;
end loop;
end loop;

wait;-- to terminate simulation
end process;
resultado<=convert(result);

end;

El testbenchdesarrollado, prueba el multiplicador en cada una de las operaciones posibles que este puede realizar, en caso de que el resultado devuelto por el dispositivo sea erróneo, cuando la variable de salida “done” se ponga en uno, se reporta un error en la consola del simulador.
Para reportar dicho error hacemos uso de una señal “resultado”, local a la arquitectura , la cual se define integer y en todo...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • contador de 4 bits en VHDL
  • Multiplicador Binario De 4 Bits
  • Comparador 2 bits VHDL
  • Multiplicador De 2 Bits
  • Multiplicador N Bits
  • Multiplicador Vhdl/Quartus
  • sumador de 4 bits
  • Sumador de 4 bits

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS