Skip to main content

User defined types (Enum, Array, Record)

Enum#

Has different states with a custom name.

Example#

TYPE EnumType IS (start, running, end); SIGNAL EnumSig : EnumType := start; 
EnumSig <= running;

Array#

Allows to have a group of elements in one variable.

Example#

TYPE PixelType IS ARRAY (0 to 2) OF NATURAL range 0 to 255; TYPE RowType IS ARRAY (0 to 639) OF PixelType; (TYPE RowType IS ARRAY (0 to 639, 0 to 2) OF NATURAL range 0 to 255;) SIGNAL Row : RowType := (others => (others => '0')); 
Row(0)(0) <= 0; Row <= ((0, 1, 2),         (3, 4, 5),          ...         (6, 7, 8));

Record#

Allows different types to be combined in one.

Example#

TYPE RGBType IS RECORD     R : NATURAL range 0 to 255;     G : NATURAL range 0 to 255;     B : NATURAL range 0 to 255; END RECORD RGBType; 
SIGNAL RGBSig : RGBType := (R => 0, G => 0, B => 0); 
RGBSig.R <= 128; RGBSig.G <= 0; RGBSig.B <= 255;