LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
PACKAGE packexp IS --定义程序包
FUNCTION max( a,b :IN STD_LOGIC_VECTOR) --定义函数首
RETURN STD_LOGIC_VECTOR ;
FUNCTION max( a,b :IN BIT_VECTOR) --定义函数首
RETURN BIT_VECTOR ;
FUNCTION max( a,b :IN INTEGER ) --定义函数首
RETURN INTEGER ;
END;
PACKAGE BODY packexp IS
FUNCTION max( a,b :IN STD_LOGIC_VECTOR) --定义函数体
RETURN STD_LOGIC_VECTOR IS
BEGIN
IF a > b THEN RETURN a;
ELSE RETURN b; END IF;
END FUNCTION max; --结束FUNCTION语句
FUNCTION max( a,b :IN INTEGER) --定义函数体
RETURN INTEGER IS
BEGIN
IF a > b THEN RETURN a;
ELSE RETURN b; END IF;
END FUNCTION max; --结束FUNCTION语句
FUNCTION max( a,b :IN BIT_VECTOR) --定义函数体
RETURN BIT_VECTOR IS
BEGIN
IF a > b THEN RETURN a;
ELSE RETURN b; END IF;
END FUNCTION max; --结束FUNCTION语句
END; --结束PACKAGE BODY语句
-- 以下是调用重载函数max的程序:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE WORK.packexp.ALL;
ENTITY axamp IS
PORT(a1,b1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
a2,b2 : IN BIT_VECTOR(4 DOWNTO 0);
a3,b3 : IN INTEGER RANGE 0 TO 15;
c1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
c2 : OUT BIT_VECTOR(4 DOWNTO 0);
c3 : OUT INTEGER RANGE 0 TO 15);
END;