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 />

14<br />

Index-Typen Neben den üblichen Integer-Indices können auch eigene Aufzählungstypen<br />

(-untertypen) benutzt werden.<br />

Beispiel<br />

type INSTRUCTION is (ADD, SUB, LDA, LDB, STA, STB, OUTA);<br />

subtype FLAGS is integer range (0 to 7);<br />

...<br />

type INSTR_FLAG is array (INSTRUCTION) of FLAGS; Array von Flag-Werten<br />

Benutzung als Laufindex Indices können innerhalb von Schleifen über Variablen inkrementiert/dekrementiert<br />

werden.<br />

Beispiel<br />

...<br />

process ...<br />

variable INFO : bit_vector (0 to 49);<br />

variable START : integer;<br />

variable OUTBYTE : bit_vector (0 to 7);<br />

begin<br />

for I in 0 to 7 loop<br />

OUTBYTE(I) := INFO(I + START);<br />

end loop;<br />

end process;<br />

Unbegrenzte Indices Oft werden Indices über den gesamten Wertebereich eines Typs<br />

deklariert und dann später bei der Deklaration von Objekten werden erst die Bereichseinschränkungen<br />

vorgenommen.<br />

Beispiel<br />

type bit_vector is array (natural range ) of bit;<br />

... Deklaration aus standard<br />

variable BYTE: bit_vector (0 to 7);<br />

Index-Bereiche Bei der Angabe ganzer Bereiche – meist durch Integer-Bereiche – ist<br />

die Laufrichtung des Index’ wichtig.<br />

Beispiel<br />

type AVEC is array (0 to 3) of bit;<br />

type BVEC is array (3 downto 0) of bit;<br />

...<br />

variable AV: AVEC;<br />

variable BV: BVEC;<br />

...<br />

AV := "0101"; ⇒ AV(0)=’0’ AV(1)=’1’ AV(2)=’0’ AV(3)=’1’<br />

BV := "0101"; ⇒ BV(0)=’1’ BV(1)=’0’ BV(2)=’1’ BV(3)=’0’

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!