Files
lt16lab/soc/peripheral/simple_timer.vhd

44 lines
928 B
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity simple_timer is
generic(
timer_start : std_logic_vector (31 downto 0)
);
port(
clk : in std_logic;
rst : in std_logic;
timer_overflow : out std_logic
);
end entity simple_timer;
architecture Behavioral of simple_timer is
signal counter : integer range 1 to to_integer(unsigned(timer_start));
signal overflow : std_logic;
begin
process(clk)
begin
if clk'event and clk='1' then
if rst = '1' then
counter <= to_integer(unsigned(timer_start));
else
overflow <= '0';
if counter = 1 then
counter <= to_integer(unsigned(timer_start));
overflow <= '1';
else
counter <= counter - 1;
end if;
end if;
end if;
end process;
timer_overflow <= overflow;
end Behavioral;