LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_SIGNED.ALL ; USE IEEE.STD_LOGIC_ARITH.ALL ; ENTITY Compteur IS GENERIC ( Tcompteur : TIME ; NbBits : INTEGER ); PORT ( clock : IN Std_Logic ; reset : IN Std_Logic ; up : IN Std_Logic ; down : IN Std_Logic ; Q : OUT Std_Logic_Vector(NbBits-1 DOWNTO 0) ); END Compteur ; ARCHITECTURE comportementale OF Compteur IS BEGIN ProcessCompteur : PROCESS (reset, clock) VARIABLE etat : INTEGER ; BEGIN IF reset = '1' THEN etat := 0 ; ELSE IF up = '1' AND up'event THEN etat := etat + 1 ; IF etat = 2**NbBits THEN etat := 0 ; END IF ; END IF ; IF down = '1' AND down'event THEN etat := etat - 1 ; IF etat < 0 THEN etat := 2**NbBits ; END IF ; END IF ; END IF ; Q <= CONV_STD_LOGIC_VECTOR (etat, NbBits) AFTER Tcompteur ; END PROCESS ProcessCompteur ; END comportementale ;