Diagrama Alu
INICIO
INICIO
DIAGRAMA DE FLUJO DE LA ALU
FIN
FIN
¿OTRA OPERACION?
¿OTRA OPERACION?
MOSTRAR RESULTADO
MOSTRAR RESULTADO
¿DER?¿DER?
¿iZQ?
¿iZQ?
¿X =Y?
¿X =Y?
¿X <Y?
¿X <Y?
¿X > Y?
¿X > Y?
COCIENTE DE X, Y = R
COCIENTE DE X, Y = R
PRODUCTO DE X, Y = R
PRODUCTO DE X, Y = R
RESTA DE X, Y = R
RESTA DE X, Y= R
SUMA DE X, Y = R
SUMA DE X, Y = R
¿COMP?
¿COMP?
¿DESPL?
¿DESPL?
¿DIV?
¿DIV?
¿X?
¿X?
¿-?
¿-?
¿+?
¿+?
INGRESAR # BINARIO “Y”
INGRESAR # BINARIO “Y”
INGRESAR # BINARIO “X”
INGRESAR# BINARIO “X”
ALU en VHDL
El software que se utilizo para el desarrollo den esta ALU fue ModelSim ALTERA, cuya operación es muy sencilla.
A continuación se muestra la ALU en VHDL:
libraryIEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU_VHDL is
port( Carry_Out: out std_logic;
Flag: out std_logic;
Nibble1: instd_logic_vector(3 downto 0);
Nibble2: in std_logic_vector(3 downto 0);
Operation: in std_logic_vector(2 downto 0);
result: out std_logic_vector(3 downto 0));
end ALU_VHDL;
architectureBehavioral of ALU_VHDL is
signal temp: std_logic_vector(4 downto 0);
begin
process(Nibble1,Nibble2,Operation,temp)
begin
Flag <= '0';
case Operation is
when "000"=>
temp <= conv_std_logic_vector((conv_integer(Nibble1) + conv_integer(Nibble2)),5);
result <= temp(3 downto 0);
Carry_Out <= temp(4);
when "001" =>if Nibble1 >= Nibble2 then
result <= Nibble1 - Nibble2;
Flag <= '0';
else
result <= Nibble2 - Nibble1;
Flag <= '1';end if;
when "010" =>
result <= Nibble1 and Nibble2;
when "011" =>
result <= Nibble1 or Nibble2;
when "100" =>
result <= Nibble1 xor Nibble2;...
Regístrate para leer el documento completo.