LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
ENTITY double_counter IS
PORT(clk:IN std_logic;
counter_out:OUT std_logic_vector(3 DOWNTO 0));
END double_counter;
ARCHITECTURE bhv OF double_counter IS
SIGNAL counter:std_logic_vector(3 DOWNTO 0):=(OTHERS => '0');
SIGNAL adder,rising_counter,falling_counter:std_logic_vector(3 downto 0);
BEGIN
PROCESS(counter)
BEGIN
IF counter="1001" THEN adder <= (OTHERS => '0');
ELSE adder <= counter + 1;
END IF;
END PROCESS;
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
rising_counter <= adder;
END IF;
END PROCESS;
PROCESS(clk)
BEGIN
IF falling_edge(clk) THEN
falling_counter <= adder;
END IF;
END PROCESS;
PROCESS(clk,rising_counter,falling_counter)
BEGIN
IF clk='0' THEN
counter <= rising_counter;
ELSE
counter <= falling_counter;
END IF;
END PROCESS;
counter_out <= counter;
END;