Estoy implementando un sumador simple que se realiza en VHDL en una placa BASYS2.
Este es el siguiente código:
entity adder is
port (
a, b : in std_logic_vector(3 downto 0);
sum : out std_logic_vector(3 downto 0);
cout : out std_logic;
kopce : in std_logic;
ledica : buffer std_logic
);
end adder;
architecture sobirac of adder is
signal tmp : signed(4 downto 0);
begin
process(kopce)
begin
if(rising_edge(kopce)) then
ledica <= (not ledica);
tmp <= signed(("0" & a)) + signed(("0" & b));
--sum <= std_logic_vector(tmp(3 downto 0));
sum(3) <= std_logic(tmp(3));
sum(2) <= std_logic(tmp(2));
sum(1) <= std_logic(tmp(1));
sum(0) <= std_logic(tmp(0));
cout <= tmp(4);
end if;
end process;
end sobirac;
El "problema" es que necesito presionar el botón dos veces para que genere una salida que muestro en los indicadores LED integrados, ¿por qué se comporta así? Si elimino la declaración de proceso y la hago concurrente, funciona en el instante en que le doy una entrada (conmutadores 2x4).
Saludos, Aleks