LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; ENTITY compteur_max_ena is PORT ( clk : IN STD_LOGIC; rst_n : IN STD_LOGIC; max : IN STD_LOGIC_VECTOR(3 DOWNTO 0); ena : IN STD_LOGIC; valeur : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END compteur_max_ena; ARCHITECTURE archi OF compteur_max_ena is SIGNAL valeur_interne : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (clk, rst_n) begin IF rst_n = '0' THEN valeur_interne <= (OTHERS => '0'); else IF rising_edge(clk) AND ena = '1' THEN IF valeur_interne = max THEN valeur_interne <= (OTHERS => '0'); else valeur_interne <= STD_LOGIC_VECTOR(UNSIGNED(valeur_interne) + 1); END IF; END IF; END IF; END PROCESS; valeur <= valeur_interne; END archi;