| 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.