Declaration | ---- used in ----> | Entity Package Process Architecture Procedure Function |
Syntax |
constant constant_name : type := value; |
Rules and Examples |
constant BUS_WIDTH : integer := 8; constant FOUR_ONES : std_logic_vector(3 downto 0):= "1111"; constant PERIOD : time := 10 ns; constant MAX_SIM_TIME : time:= 50 * PERIOD; |
The values of array constants of types other than stribg, bit_vector
and std_logic_vector, must be set using aggregates.type T_CLOCK_TIME is ARRAY(3 downto 0) of integer range 0 to 9; constant TWELVE_O_CLOCK : T_CLOCK_TIME := (1,2,0,0); |
In a package, a constant may be deferred. This means its
value is defined in the package body. the value may be changed by
re-analysing only the package body.package P is constant C : integer; end P; package body P is constant C : integer := 200; end P; |
Provided they are of the correct type, constants may be used in any
expression. They may be associated with generics of component instances
and passed into procedures.process type T_DATA is array (0 to 3) of bit_vector(7 downto 0); constant DATA : T_DATA := ("00001000", "00010001", "00100010", "01000011"); begin for I in DATA'range loop serialize_byte(DATA(I),DOUT); end loop; end process; |
Synthesis Issues |
Whats New in '93 |
Constants and constant expressions may also be associated with input ports of component instances in VHDL-93. In VHDL-87 this was only possible via an intermediate signal.