library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity counter is
	port (
		clk       : in std_logic;
		reset     : in std_logic;
		enable    : in std_logic;
		direction : in std_logic;

		count_out : out std_logic_vector(7 downto 0)
	);
end counter;

architecture behaviour of counter is
	signal count : unsigned(7 downto 0) := (others => '0');
begin
	proc: process(clk)
	begin
		if reset then
			count <= (others => '0');
		elsif rising_edge(clk) and enable = '1' then
			if direction = '1' then
				count <= count + 1;
			else
				count <= count - 1;
			end if;
		end if;
	end process;

	count_out <= std_logic_vector(count);
end behaviour;
