Hola soy de colombia lo siento mi ingles. Estoy desarrollando un proyecto simple, un sumador / restador complementario de dos para 4 bits. Me he desarrollado de la siguiente manera, pero en la simulación no me da el resultado esperado y no sé cuál es el problema.TY
library IEEE;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity negado is
port (
Y, signo : in STD_LOGIC;
S, Carry : out STD_LOGIC
);
end negado;
architecture Behavioral of negado is
begin
S <= (((not Y) xor signo) and signo) or ((not signo) and Y);
Carry <= (not Y) and signo;
end behavioral;
USE IEEE.STD_LOGIC_1164.ALL;
entity complemento_2 is
port(
--input
Y1 : in STD_LOGIC_VECTOR (3 downto 0);
Sign : in STD_LOGIC;
--output
Cout : out STD_LOGIC;
Sal : out STD_LOGIC_VECTOR (3 downto 0)
);
end complemento_2;
architecture Behavioral of complemento_2 is --Después de la arquitectura definimos la instanciación correspondiente a cada componente
component negado
port (
Y, signo : in STD_LOGIC;
S, Carry : out STD_LOGIC
);
end component;
signal Caux : STD_LOGIC_VECTOR(3 DOWNTO 0);
begin
ins_negado1: negado port map( Y => Y1(0), signo => sign, S => Sal(0), Carry => Caux(0));
ins_negado2: negado port map( Y => Y1(1), signo => Caux(0), S => Sal(1), Carry => Caux(1));
ins_negado3: negado port map( Y => Y1(2), signo => Caux(1), S => Sal(2), Carry => Caux(2));
ins_negado4: negado port map( Y => Y1(3), signo => Caux(2), S => Sal(3), Carry => Caux(3));
Cout <= Caux(3);
end Behavioral;