-- On specifie que l'on va utiliser des choses declaree dans le package IEEE.Std_Logic; LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_SIGNED.ALL ; USE IEEE.STD_LOGIC_ARITH.ALL ; -- Declaration de la vue externe du package PACKAGE PackProj IS FUNCTION Log2( A : INTEGER) RETURN INTEGER ; FUNCTION CONV_POSITIF( A : Std_Logic_Vector) RETURN INTEGER; END PackProj ; ------------------------------------------------------------ -- Declaration du corps du package -- Les procedures et fonctions sont specifiees PACKAGE BODY PackProj IS FUNCTION Log2(A : INTEGER) RETURN INTEGER IS VARIABLE v : INTEGER := A -1; VARIABLE result : INTEGER := 0; BEGIN IF (A <= 2) THEN result := 1; ELSE WHILE v /= 0 LOOP v := v / 2; result := result + 1; END LOOP; END IF; RETURN result; END Log2; FUNCTION CONV_POSITIF( A : Std_Logic_Vector) RETURN INTEGER IS VARIABLE tmp : Std_Logic_Vector(A'High+1 DOWNTO A'LOW); BEGIN tmp(A'High DOWNTO A'LOW) := A; tmp(A'High + 1) := '0'; RETURN CONV_INTEGER (tmp); END CONV_POSITIF; END PackProj ;