Autor Tema: Contador vhdl  (Leído 124 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado johnbr

  • PIC10
  • *
  • Mensajes: 14
Contador vhdl
« en: 19 de Marzo de 2020, 13:33:07 »
Hola amigos estoy escribiendo un temporizador usando Quartus II.

Usaré la leds de siete segmentos para mostrar los números, pero también debo poder establecer una hora específica aumentando / disminuyendo y luego, una vez que esté configurada, con otro botón el reloj comenzará a bajar hasta llegar a 0.

la señal "lock" es para evitar que el el conteo aumente a la velocidad del reloj

"manual" es un botón,

Supongo que el conteo está bien, pero el problema es cuando quiero que baje. En la simulación, cuando pongo el "sentido" ALTO, no obtengo nada y no funciona.
Aqui dejo el codigo, gracias de antemano


library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity counter is
   port(   clck, reset : in std_logic;
         limit   : in integer range 0 to 10;
         manual: inout std_logic;
         sentido: in std_logic;
         bitcount : out std_logic_vector(3 downto 0);
         clckout : out std_logic);
end counter;

architecture behavior of counter is
signal Cs : std_logic_vector(3 downto 0):="0000";
signal lock: std_logic;
begin   
   Count : process(clck,reset,manual,lock,sentido)
      begin
            
            if(rising_edge(clck))then
                 if (manual='0' and lock ='0') then
                     Cs<=Cs+1;
                     lock<='1';
             elsif(manual='1' and lock='1' ) then      
                     lock<='1';
             else
                     lock<='0';
                     
                  end if;   
                  end if;
                  
        if sentido = '1' then
                Cs<=Cs-1;
                  end if;
                  
            if (reset = '1') then
                   Cs <="0000";
               end if;
               if (Cs = "1010") then
                     Cs <= "0000";
               end if;
end process Count;
   bitcount <=Cs;

end behavior;