6.2 HDL程序包(续1) 例6.1程序包定义示例。 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; USE IEEE.NUMERIC STD.ALL; PACKAGE my_pkg IS-程序包首声明 TYPE byte IS INTEGER RANGE 0 TO 255; SUBTYPE helf_byte IS byte RANGE 0 TO 15; CONSTANT byte_max:byte:=255; FUNCTION min(left,right:INTEGER)RETURN INTEGER; COMPONENT signed_adder-假定实体和结构体在WORK库中 GENERIC(data width:NATURAL:=8); PORT( IN SIGNED((data_width-1)DOWNTO0); b IN SIGNED((data_width-1)DOWNTO0); result OUT SIGNED((data_width-1)DOWNTO 0)); END COMPONENT; END my_pkg; PACKAGE BODY my pkg IS-程序包体声明 FUNCTION min(left,right:INTEGER)RETURN INTEGER IS BEGIN IF left right THEN RETURN left; ELSE RETURN right; END IF; END min; END my_pkg;
6.2 VHDL程序包(续1) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; PACKAGE my_pkg IS --程序包首声明 TYPE byte IS INTEGER RANGE 0 TO 255; SUBTYPE helf_byte IS byte RANGE 0 TO 15; CONSTANT byte_max: byte:= 255; FUNCTION min (left, right: INTEGER) RETURN INTEGER; COMPONENT signed_adder --假定实体和结构体在WORK库中 GENERIC(data_width : NATURAL := 8); PORT( a : IN SIGNED((data_width-1) DOWNTO 0); b : IN SIGNED((data_width-1) DOWNTO 0); result : OUT SIGNED ((data_width-1) DOWNTO 0)); END COMPONENT; END my_pkg; PACKAGE BODY my_pkg IS --程序包体声明 FUNCTION min (left, right: INTEGER) RETURN INTEGER IS BEGIN IF left < right THEN RETURN left; ELSE RETURN right; END IF; END min; END my_pkg; 例6.1 程序包定义示例
6.2 VHDL程序包(续2) 例6:2在设计实体前定义并立即使用的程序包示例。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE seg7 IS TYPE bcd IS INTEGER RANGE 0 TO 9; SUBTYPE segments IS STD_LOGIC_VECTOR(O TO 6); END seg7; USE WORK.seg7.ALL; ENTITY bcd_to_segments IS PORT( input:IN bcd; drive:OUT segments ) END bcd to_segments;
6.2 VHDL程序包(续2) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE seg7 IS TYPE bcd IS INTEGER RANGE 0 TO 9; SUBTYPE segments IS STD_LOGIC_VECTOR(0 TO 6); END seg7; USE WORK.seg7.ALL; ENTITY bcd_to_segments IS PORT( input: IN bcd; drive: OUT segments ); END bcd_to_segments; 例6.2 在设计实体前定义并立即使用的程序包示例