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
begin

calculo: process (actual, e) -- Proceso cálculo estado futuro y salidas (pueden definirse aquí)
begin

b <= '0';
case actual is

when 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
begin

if 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

Anterior
Volver a inicio curso
Volver a inicio capítulo
Siguiente


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: máquinas de estado finito