En VHDL, se evalúan las sentencias IF condicionales cuando cambia cualquier en la lista de sensibilidad del proceso, o solo si las señales están en la lista de sensibilidad y aparecen como una declaración IF argumentos?
Quiero saber si contado a continuación se incrementa solo cuando se habilita, cnt_clk_cur, o cnt_clk_cur cambia de estado (asumiendo que la declaración IF se evalúa como verdadera), o cuando cambia alguna señal en la lista de sensibilidad (y La declaración IF se evalúa como verdadera).
Soy nuevo en VHDL, así que sé bueno. Cualquier recomendación del simulador VHDL es bienvenida.
begin
process(clk, aclr, cnt_clk_last, cnt_clk_cur, cnt_clk, enable)
begin
if (aclr = '1') then -- if aclr set all to zero
counted <= (Others => '0'); -- clear counter
cnt_clk_last <= '0';
cnt_clk_cur <= '0';
elsif rising_edge(clk) then -- on an edge increment
cnt_clk_cur <= cnt_clk_last;
cnt_clk_last <= cnt_clk;
if (enable = '1' and cnt_clk_cur = '0' and cnt_clk_last = '1') then
counted <= counted + '1'; -- increment
end if;
end if;
count <= counted;
end process;
end behavioral;