DEFINICIÓN
En computación, la unidad aritmético lógica, también conocida como ALU (siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos o mas números.
Código para el modulo de VHDL
-- ALU DE 4 BITS
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU is
Port ( A,B : in STD_LOGIC_VECTOR (4 downto 0);
C : out STD_LOGIC_VECTOR (4 downto 0);
OPERACION : in STD_LOGIC_VECTOR (2 downto 0));
end ALU;
architecture Behavioral of ALU is
begin
PROCESS(OPERACION)
BEGIN
CASE OPERACION IS
WHEN "000" =>
C <= A + B;
WHEN "001" =>
C <= A - B;
WHEN "010" =>
C <= A + 1;
WHEN "011" =>
C <= B + 1;
WHEN "100" =>
C <= A AND B;
C(4) <= '0';
WHEN "101" =>
C <= A OR B;
C(4) <= '0';
WHEN "110" =>
C <= A XOR B;
C(4) <= '0';
WHEN OTHERS =>
C <= NOT (A OR B);
C(4) <= '0';
END CASE;
END PROCESS;
end Behavioral;
Código para el modulo UCF
NET "A[0]" LOC = P11;
NET "A[1]" LOC = L3;
NET "A[2]" LOC = K3;
NET "A[3]" LOC = B4;
NET "A[4]" LOC = C12; # IGNORAR
NET "B[0]" LOC = G3;
NET "B[1]" LOC = F3;
NET "B[2]" LOC = E2;
NET "B[3]" LOC = N3;
NET "B[4]" LOC = A13; #IGNORAR
NET "C[0]" LOC = M5;
NET "C[1]" LOC = M11;
NET "C[2]" LOC = P7;
NET "C[3]" LOC = P6;
NET "C[4]" LOC = N5;
NET "OPERACION[0]" LOC = G12;
NET "OPERACION[1]" LOC = C11;
NET "OPERACION[2]" LOC = M4;
En computación, la unidad aritmético lógica, también conocida como ALU (siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos o mas números.
Código para el modulo de VHDL
-- ALU DE 4 BITS
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ALU is
Port ( A,B : in STD_LOGIC_VECTOR (4 downto 0);
C : out STD_LOGIC_VECTOR (4 downto 0);
OPERACION : in STD_LOGIC_VECTOR (2 downto 0));
end ALU;
architecture Behavioral of ALU is
begin
PROCESS(OPERACION)
BEGIN
CASE OPERACION IS
WHEN "000" =>
C <= A + B;
WHEN "001" =>
C <= A - B;
WHEN "010" =>
C <= A + 1;
WHEN "011" =>
C <= B + 1;
WHEN "100" =>
C <= A AND B;
C(4) <= '0';
WHEN "101" =>
C <= A OR B;
C(4) <= '0';
WHEN "110" =>
C <= A XOR B;
C(4) <= '0';
WHEN OTHERS =>
C <= NOT (A OR B);
C(4) <= '0';
END CASE;
END PROCESS;
end Behavioral;
Código para el modulo UCF
NET "A[0]" LOC = P11;
NET "A[1]" LOC = L3;
NET "A[2]" LOC = K3;
NET "A[3]" LOC = B4;
NET "A[4]" LOC = C12; # IGNORAR
NET "B[0]" LOC = G3;
NET "B[1]" LOC = F3;
NET "B[2]" LOC = E2;
NET "B[3]" LOC = N3;
NET "B[4]" LOC = A13; #IGNORAR
NET "C[0]" LOC = M5;
NET "C[1]" LOC = M11;
NET "C[2]" LOC = P7;
NET "C[3]" LOC = P6;
NET "C[4]" LOC = N5;
NET "OPERACION[0]" LOC = G12;
NET "OPERACION[1]" LOC = C11;
NET "OPERACION[2]" LOC = M4;