-- Contador de "cero cero" a "cinco nueve" en BCD
-- contador en cascada. Incluye reset y Pausa
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity ContadorBCD_00_59 is
port(Clk_in, Reset : in std_logic;
Unidades_Conteo_de0a9 : out std_logic_vector(3 downto 0);
Decenas_Conteo_de0a5 : out std_logic_vector(3 downto 0);
Pausa : in std_logic
);
end ContadorBCD_00_59;
architecture ar_ContadorBCD_00_59 of ContadorBCD_00_59 is
signal aux_Unidades_Conteo_de0a9 : std_logic_vector(3 downto 0);
signal aux_Decenas_Conteo_de0a5 : std_logic_vector(3 downto 0);
begin
process (Clk_in, Reset, Pausa)
begin
if (Reset='1') then
aux_Unidades_Conteo_de0a9 <= "0000";
aux_Decenas_Conteo_de0a5 <= "0000";
elsif (Pausa = '1') then
aux_Unidades_Conteo_de0a9 <= aux_Unidades_Conteo_de0a9;
aux_Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5;
elsif (rising_edge(Clk_in)) then
if (aux_Unidades_Conteo_de0a9 = "1001") then
aux_Unidades_Conteo_de0a9 <= "0000";
aux_Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5 + 1;
if (aux_Decenas_Conteo_de0a5 = "0101") then
aux_Decenas_Conteo_de0a5 <= "0000";
end if;
else
aux_Unidades_Conteo_de0a9 <= (aux_Unidades_Conteo_de0a9 + 1) ;
end if;
end if;
end process;
Unidades_Conteo_de0a9 <= aux_Unidades_Conteo_de0a9;
Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5;
end ar_ContadorBCD_00_59;
No hay comentarios:
Publicar un comentario