Det som utmärker sekvenskretsar och sekvensnät är att utsignalerna beror både av kretsens/nätets tillstånd och av eventuella insignaler.
Sekvensfunktioner är av två huvudtyper:
Moore-maskiner - nätets utsignaler beror bara av nuvarande tillstånd
Mealy-maskiner - nätets utsignaler beror både av nätets insignaler och av nuvarande tillstånd.
ENTITY cnt_moore IS PORT(
i :IN bit;
clk :IN bit;
ut :OUT bit_vector(1 DOWNTO 0)
);
END;
ARCHITECTURE beh_cnt_moore 0F cnt_moore IS
TYPE tillst IS (s0,s1,s2,s3);
SIGNAL nuv_tillst, nst_tillst :tillst;
BEGIN
P0: PROCESS(nuv_tillst,i)
BEGIN
CASE nuv_tillst IS
WHEN s0 =>
IF i='0' THEN nst_tillst <= s1;
ELSE nst_tillst <= s3;
END IF;
WHEN s1 =>
IF i='0' THEN nst_tillst <= s2;
ELSE nst_tillst <= s0;
END IF;
WHEN s2 =>
IF i='0' THEN nst_tillst <= s3;
ELSE nst_tillst <= s1;
END IF;
WHEN s3 =>
IF i='0' THEN nst_tillst <= s0;
ELSE nst_tillst <= s2;
END IF;
END CASE;
END PROCESS;
P1: PROCESS(clk)
BEGIN
IF (clk'event AND clk='1') THEN nuv_tillst<=nst_tillst;
END IF;
END PROCESS;
P2: PROCESS(nuv_tillst)
BEGIN
CASE nuv_tillst IS
WHEN s0 => ut <= "00";
WHEN s1 => ut <= "01";
WHEN s2 => ut <= "10";
WHEN s3 => ut <= "11";
END CASE;
END PROCESS;
END;
|