05.07.2013 Aufrufe

VHDL Kompakt - CES

VHDL Kompakt - CES

VHDL Kompakt - CES

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2. Datentypen<br />

behandelt.<br />

Beispiel<br />

type WORD is array (0 to 3) of bit; 4 bit Zeile<br />

type MEMORY is array (0 to 7) of WORD; 8 × 4 bit Array<br />

...<br />

constant ROM: MEMORY := ((’0’,’0’,’0’,’0’),<br />

(’0’,’0’,’0’,’1’),<br />

...<br />

(’0’,’1’,’1’,’1’));<br />

variable DATA : WORD;<br />

variable DATA_BIT : bit;<br />

variable ADDR, INDEX : integer;<br />

...<br />

DATA := ROM(ADDR);<br />

DATA_BIT := ROM(ADDR)(INDEX);<br />

Array Untertypen lassen sich zu bestehenden Arrays, bzw. zu unbegrenzten Arrays<br />

definieren.<br />

Beispiel<br />

subtype BYTE is bit_vector (7 downto 0); unbegrenzter Typ bit_vector<br />

Record Elemente verschiedener Typen (Skalare oder zusammengesetzte Typen) können mit<br />

Hilfe von Records zusammengefasst werden, um abstrakte Datenmodelle zu bilden.<br />

Die einzelnen Felder des Records werden über die Namen dereferenziert.<br />

16<br />

Syntax<br />

type 〈typeId〉 is record<br />

{〈fieldId〉 : 〈typeId〉;}<br />

end record [ 〈typeId〉 ];<br />

Beispiel<br />

type TWO_DIGIT is record Zahlen von −99 bis +99<br />

SIGN : bit;<br />

MSD : integer range 0 to 9;<br />

LSD : integer range 0 to 9;<br />

end record TWO_DIGIT;<br />

...<br />

process ...<br />

variable ACNT, BCNT: TWO_DIGIT;<br />

begin<br />

ACNT.SIGN := ’1’; Zugriff auf Felder<br />

ACNT.MSD := 1;<br />

ACNT.LSD := ACNT.MSD;<br />

...<br />

BCNTR := TWO_DIGIT’(’0’,3,6); Aggregat, Typ-qualifiziert<br />

...

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!