Contador de 0 A 99

 


library IEEE;

use IEEE.STD_LOGIC_1164.ALL;


entity CONTADOR_0_99 is

    Port ( CLK : in  STD_LOGIC;

           INI : in  STD_LOGIC;

           RESET : in  STD_LOGIC;

           DISPLAY : out  STD_LOGIC_VECTOR (6 DOWNTO 0);

  TRANSISTOR : out STD_LOGIC_VECTOR (1 DOWNTO 0)

  );



end CONTADOR_0_99;


architecture Behavioral of CONTADOR_0_99 is


TYPE MAQUINA IS (UNIDADES, DECENAS);

SIGNAL EDO_PP,EDO_F : MAQUINA:= UNIDADES;


CONSTANT CONTA_RETRASO_FIN; INTEGER := 49_999_999;

CONSTANT CONTA_SW_FIN ; INTEGER :499_999;


SIGNAL CONTA_UNIDADES, CONTA_DECIMAS: INTEGER RANGE 0 TO 9 :=0;

SIGNAL CONTA_RETRASO: INTEGER RANGE 0 TO CONTA_RETRASO_FIN :=0;

SIGNAL CONTA_SWITCH : INTEGER RANGE 0 TO CONTA_SW_FIN:=;

SIGNAL CONTADOR_PRINCIPAL : INTEGER RANGE 0 TO 9 := 0;

 


begin


PROCESS (CLK)

BEGIN

   IF RISING_EDGE (CLK) THEN

   IF RESET = '1' THEN

         CONTA_UNIDADES<= 0;

         CONTA_DECENAS<= 0;

CONTA_RETRASO <= 0;

       ELSE 

          IF INI = '1' THEN

             CONTA_RETRASO <= CONTA_RETRASO +1;

             IF CONTA_RETRASO = CONTA_RETRASO_FIN THEN

                CONTA_RETRASO <= 0;

                CONTA_UNIDADES <= CONTA_UNIDADES +1;

                   IF CONTA_UNIDADES = 9 THEN 

    CONTA_UNIDADES <= 0;

CONTA_DECENAS <= CONTA_DECENAS +1;

     IF CONTA_DECENAS = 9 THEN

     CONTA_DECENAS <= 0;

  END IF;

  END IF;

  END IF;

     END IF;   

        END IF;                   

     END IF;

END PROCESS;



PROCESS (EDO_P)

BEGIN 

    CASE EDO_P IS

    WHEN UNIDADES =>

    EDO_F <= DECENAS;

TRANSISTOR <= "01";

WHEN DECENAS =>

    EDO_F <= UNIDADES;

TRNASISTOR <= "10";

WHEN OTHERS => NULL;

END CASE;

END PROCESS;

 

PROCESS (CLK)

BEGIN

    IF RISING_EDGE (CLK) THEN

       CONTA_SWITCH <= CONTA_SWITCH +1;

       IF CONTA_SWITCH = CONTA_SW_FIN THEN

          CONTA_SWITCH <= 0;

          EDO_P <= EDO_F;

       END IF;

    END IF;

END PROCESS;


CONTADOR_PRINCIPAL <= CONTA_UNIDADES WHEN EDO_P = UNIDADES ELSE

                      CONTA_DECENAS;


   --ABCDEFG

DISPLAY <= "1111110" WHEN CONTADOR_PRINCIPAL = 0 ELSE

        "0110000" WHEN CONTADOR_PRINCIPAL = 1 ELSE

  "1101101" WHEN CONTADOR_PRINCIPAL = 2 ELSE

  "1111001" WHEN CONTADOR_PRINCIPAL = 3 ELSE

  "0110011" WHEN CONTADOR_PRINCIPAL = 4 ELSE

  "1011011" WHEN CONTADOR_PRINCIPAL = 5 ELSE

  "1011111" WHEN CONTADOR_PRINCIPAL = 6 ELSE

  "1110000" WHEN CONTADOR_PRINCIPAL = 7 ELSE

  "1111111" WHEN CONTADOR_PRINCIPAL = 8 ELSE

  "1111011";

end Behavioral;

Comentarios

Entradas populares de este blog

Sumador completo

Sumador de 4 bits