Descripción VHDL de la mef en doble proceso
La mef ahora utiliza dos procesos para definir los estados: un proceso encargado del cálculo del estado futuro, y otro responsable de ejecutar la transición de estados (durante el flanco de reloj)
Ejemplo:
entity mef2process is
port(nreset, ck, e: in bit;
a, b: out bit);end;
architecture f of mef2process is
type estado is (s0, s1); -- Definición de estados
signal actual, proximo: estado; -- Variable tipo estado
begincalculo: process (actual, e) -- Proceso cálculo estado futuro y salidas (pueden definirse aquí)
beginb <= '0';
case actual iswhen s0 =>
a <= '0'; -- a es salida tipo Moore
if e = '1' then proximo <= s1;
else proximo <= s0;
end if;when s1 =>
a <= '1';
if e = '1' then proximo <= s1; b <= '1'; -- b es salida tipo Mealy
else proximo <= s0;
end if;end case;
end process;
transicion: process (nreset, ck) -- Proceso transición de estados
beginif nreset='0' then actual <= s0;
elsif ck'event and ck='1' then actual <= proximo;
end if;end process;
end;
La descripción de la mef mediante dos procesos probablemente sea más clarificadora que en proceso único