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
Publicar un comentario