VHDL Kompakt - CES
VHDL Kompakt - CES
VHDL Kompakt - CES
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’