vhdl_reference_93:constant_declarations

Constant declarations

constant identifier_list : subtype_indication [ := expression ] ;
  • entity_declarative_part
  • architecture_declarative_part
  • package
  • package_body
  • block_declarative_part
  • function_declarative_part
  • procedure_declarative_part
  • process_declarative_part

[ resolution_function_ name ] type_mark [ constraint ]

  • relation { and relation }
  • relation { or relation }
  • relation { xor relation }
  • relation [ nand relation ]
  • relation [ nor relation ]
  • relation { xnor relation }

The constant cte is of the type integer and has the value 5. The constants Vdd and Vcc are of the type bit and have the value '1'. The constant minimum_setup-_time is of the physical type time and has the value 5 ns.

CONSTANT cte : integer := 5 ;
CONSTANT Vdd, Vcc : bit := '1' ;
CONSTANT minimum_setup_time :
      time := 5 ns ;

  • The constant name contains the string “ Dupond ”.
  • The bit vector address has the constant value “00110110”.
  • The constant mask is declared as a subtype of bit_vector with the value “0101”.
  • The constant bittab is declared as a subtype of bit_vector with the value “000111Z1Z”.
  • The constant tab is declared as a subtype of table_type with the individual elements being assigned the constant values 2, 3, 4, -2 and 0.
CONSTANT name : string := "Dupond" ;
 
CONSTANT address : bit_vector := "00110110" ;
 
CONSTANT mask : bit_vector( 1 TO 3 ) := "0101" ;
 
CONSTANT bittab : bit_vector( 1 TO 9 ) :=
      ( 1 TO 3 => '0', 7 | 9 => 'Z', OTHERS => '1' ) ;
 
CONSTANT tab : table_type( 0 TO 4 ) :=
      ( 2, 3, 4, -2, 0 ) ;

An incomplete declaration of a constant, such as that of deferred shown here, may only be contained in the package declaration. The complete declaration of the constant has to be contained in the package body. If the constant`s value is changed only the PACKAGE BODY has to be newly translated and none of the design units which are constructed upon the package are affected.

PACKAGE P IS
   CONSTANT deferred : integer ;
END P;
 
PACKAGE BODY P IS
   CONSTANT deferred : integer := 200 ;
END P ;