Supongamos que tengo dos procesos en VHDL: un proceso se activa en el borde ascendente del reloj y es una máquina de estados que establece una bandera en uno de sus estados. El segundo proceso también se activa en el flanco ascendente del reloj y tiene una declaración de condición que lee este indicador para ver si es '1'. ¿Cuándo será "verdadera" la condición en el segundo proceso? ¿En el mismo reloj que está configurada la bandera, o en el siguiente reloj?
Aquí hay un ejemplo:
-- state machine
process (clk)
begin
if rising_edge (clk) then
case StateMachine is
when '0' =>
flagA <= '0';
StateMachine <= '1';
when '1' =>
flagA <= '1';
StateMachine <= '1'; -- loop forever
end case;
end if;
end process;
-- condition
process (clk)
begin
if rising_edge (clk) then
if (flagA = '1') then
flagB <= '1';
else
flagB <= '0';
end if;
end if;
end process;
En este ejemplo, ¿se convertirá flagB en '1' en el mismo reloj que flagA se convirtió en '1'? ¿O será flagB convertido en '1' en el siguiente reloj?