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;