05.07.2013 Aufrufe

VHDL Kompakt - CES

VHDL Kompakt - CES

VHDL Kompakt - CES

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!