You are on page 1of 6

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_unsigned.ALL;

Entity contador_2 IS PORT(

entra,sai :IN STD_LOGIC;

clk: IN STD_LOGIC;

vagas2: OUT STD_LOGIC);

END contador_2;

architecture funcionamento OF contador_2 IS

TYPE estados_2 IS (A,B,C,D,E,F,G,H);

SIGNAL est: estados_2;

BEGIN

PROCESS(clk)

BEGIN

IF (clk'EVENT and clk='1') THEN

CASE est IS

WHEN A=>

IF entra='1' AND sai='0' THEN

est <=B;

vagas2 <= '1';

ELSIF sai='1' AND entra='0' THEN

est <=A;
vagas2 <= '1';

ELSE

est <=A;

vagas2 <= '1';

END IF;

WHEN B=>

IF entra='1' AND sai='0' THEN

est <=C;

vagas2 <= '1';

ELSIF sai='1' AND entra='0' THEN

est <=A;

vagas2 <= '1';

ELSE

est <=B;

vagas2 <= '1';

END IF;

WHEN C=>
IF entra='1' AND sai='0' THEN

est <=D;

vagas2 <= '1';

ELSIF sai='1' AND entra='0' THEN

est <=B;

vagas2 <= '1';

ELSE

est <=C;

vagas2 <= '1';

END IF;

WHEN D=>

IF entra='1' AND sai='0' THEN

est <=E;

vagas2 <= '1';

ELSIF sai='1' AND entra='0' THEN

est <=C;

vagas2 <= '1';

ELSE

est <=D;

vagas2 <= '1';


END IF;

WHEN E=>

IF entra='1' AND sai='0' THEN

est <=F;

vagas2 <= '1';

ELSIF sai='1' AND entra='0' THEN

est <=D;

vagas2 <= '1';

ELSE

est <=E;

vagas2 <= '1';

END IF;

WHEN F=>

IF entra='1' AND sai='0' THEN

est <=G;

vagas2 <= '0';

ELSIF sai='1' AND entra='0' THEN

est <=E;

vagas2 <= '1';

ELSE
est <=F;

vagas2 <= '1';

END IF;

WHEN G=>

IF entra='1' AND sai='0' THEN

est <=H;

vagas2 <= '0';

ELSIF sai='1' AND entra='0' THEN

est <=F;

vagas2 <= '1';

ELSE

est <=G;

vagas2 <= '0';

END IF;

WHEN H=>

IF entra='1' AND sai='0' THEN

est <=H;

vagas2 <= '0';

ELSIF sai='1' AND entra='0' THEN

est <=G;
vagas2 <= '0';

ELSE

est <=H;

vagas2 <= '0';

END IF;

END CASE;

END IF;

END PROCESS;

END funcionamento;

You might also like