====== Scalar types ======
===== Definitions =====
==== scalar_type_definition ====
* [[.:bnf#enumeration_type_definition]]
* [[.:bnf#integer_type_definition]]
* [[.:bnf#floating_type_definition]]
* [[.:bnf#physical_type_definition]]
===== Examples =====
Different types are declared.
* Types //Bit// and //switch_level// are declared as enumeration types through characters and can only have the values ' //0//' or ' //1//' and '//X// '. One has to distinguish between these values '//0// ' and '//1//' and the integer values //0// and //1// . Both characters are [[.:use-statements#overloading_resolution|overloaded]].
* Types //states// and //colours// are declared as enumeration types by self-explanatory element names.
TYPE Bit IS ( '0', '1' ) ;
TYPE switch_level IS ( '0', '1', 'X' ) ;
TYPE states IS (out, sleeping, working);
TYPE colors IS ( red, green, blue );
----
* Integer types are generated by stating integral numbers in the range declaration (RANGE).
* The range can be declared rising (TO) or falling (DOWNTO).
* Real types are created through realistic range declarations.
* Subtypes can be declared by stating the base type and the selected range.
TYPE byte_length_integer IS
RANGE 0 TO 255 ;
TYPE word_index IS RANGE 31 DOWNTO 0 ;
TYPE my_real IS RANGE 0.0 TO 9.99 ;
SUBTYPE high_bit_low IS byte_length_integer
RANGE 0 TO 127 ;
----
With physical types a real-type is defined first. Afterwards the basic unit and its derivative units are declared.
As examples the definitions of the units of length (//distance//) and the units of time (//time//) are shown here.
The physical unit //time// is a predefined type.
TYPE distance IS RANGE 0 TO 1E16
UNITS
-- Basiseinheit :
A -- Angström
-- Metrische Einheiten :
nm = 10 A ; -- Nanometer
um = 1000 nm ; -- Mikrometer
mm = 1000 um ; -- Millimeter
cm = 10 mm ; -- Centimeter
m = 1000 mm ; -- Meter
km = 1000 m ; -- Kilometer
END UNITS ;
TYPE time IS RANGE -1E18 TO 1E18
UNITS
fs ; --Femtosekunde
ps = 1000 fs ; -- Picosecond
ns = 1000 ps ; -- Nanosecond
us = 1000 ns ; -- Microsecond
ms = 1000 us ; -- Millisecond
sec = 1000 ms ; -- Second
min = 60 sec ; -- Minute
END UNITS