VHDL contador 00a59

-- 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