VHDL Kompakt - CES
VHDL Kompakt - CES
VHDL Kompakt - CES
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.3 Untertypen und Alias<br />
variable HEAD, TMP : LINK; Zeiger auf CELL<br />
...<br />
TEMP := new CELL’(0, null); neues Element, mit Initialisierung<br />
for I in 1 to 5 loop<br />
HEAD := new CELL; weitere Elemente<br />
HEAD.VALUE := I; Zugriff auf record<br />
HEAD.NEXTP := TEMP;<br />
TEMP := HEAD;<br />
end loop;<br />
...<br />
Speicherfreigabe<br />
deallocate(TEMP);<br />
Speicheranforderung<br />
... := new CELL; neues Element<br />
... := new CELL’(I, TEMP); . . . mit Initialisierung<br />
. . . mit notwendiger Bereichsbeschränkung<br />
... := new bit_vector (15 downto 0); durch Index<br />
... := new bit_vector’("001101110"); durch Initialisierung<br />
2.3 Untertypen und Alias<br />
Untertypen Zu vordefinierten, bzw. zu eigenen Typen lassen sich Untertypen bilden, dies<br />
geschieht durch Einschränkung der Wertebereiche und/oder bei Array-Typen Begrenzung<br />
der Indexbereiche.<br />
Bereichseinschränkungen lassen sich zwar auch bei Objektdeklarationen angeben, Untertypen<br />
bieten aber den Vorteil, dass solche Begrenzungen zentral vorgenommen werden<br />
können.<br />
Syntax<br />
subtype 〈sub typeId〉 is 〈base typeId〉 [range 〈range〉 ] ; Wert begrenzt<br />
subtype 〈sub typeId〉 is 〈base typeId〉 Index begrenzt<br />
(〈range〉 | 〈typeId〉{, 〈range〉 | 〈typeId〉});<br />
〈range〉 ::= 〈low expr〉 to 〈high expr〉 |<br />
〈high expr〉 downto 〈low expr〉<br />
Beispiel<br />
subtype DIGIT is integer range 0 to 9; Untertyp zu integer<br />
...<br />
variable MSD, LSD: DIGIT;<br />
— ist äquivalent zu —<br />
variable MSD, LSD: integer range 0 to 9;<br />
19