Eine Einführung in die Schaltungsent- wicklung mit VHDL
Eine Einführung in die Schaltungsent- wicklung mit VHDL
Eine Einführung in die Schaltungsent- wicklung mit VHDL
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
INTERSTAATLICHE HOCHSCHULE<br />
FÜR TECHNIK BUCHS NTB<br />
<strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>VHDL</strong><br />
Bei den Aufzählungstypen müssen alle e<strong>in</strong>zelnen zulässigen<br />
Elemente <strong>die</strong>ses Typs explizit aufführt werden<br />
Für <strong>die</strong> Modellierung digitaler Hardware genügt der<br />
Typ BIT nicht. BIT kann für abstrakte Modelle verwendet<br />
werden, wo <strong>die</strong> elektrischen Details ke<strong>in</strong>e Rolle<br />
spielen.<br />
Im Package std_logic_1164, das sich <strong>in</strong> der<br />
Bibliothek IEEE bef<strong>in</strong>det, wird e<strong>in</strong> Typ<br />
std_logic def<strong>in</strong>iert. Er hat <strong>die</strong> folgenden 9 def<strong>in</strong>ierten<br />
Zustände:<br />
0 logische 0<br />
1 logische 1<br />
L<br />
schwach auf 0 gehalten<br />
H<br />
schwach auf 1 gehalten<br />
U<br />
nicht <strong>in</strong>itialisiert<br />
W<br />
schwach, zu unbestimmt<br />
X<br />
nicht bestimmbar<br />
Z<br />
hochohmig<br />
- don’t care<br />
std_logic_vector ist entsprechend e<strong>in</strong> Vektor<br />
aus e<strong>in</strong>zelnen Bits, wobei jedes <strong>die</strong>ser Bits jeden<br />
beliebigen für std_logic def<strong>in</strong>ierten Zustand annehmen<br />
kann.<br />
Zum Beispiel könnte e<strong>in</strong> Steuersignal für e<strong>in</strong>e ALU<br />
<strong>die</strong> Werte add, sub, mul und div annehmen.<br />
TYPE alu_function IS (add, sub,<br />
mul, div);<br />
LIBRARY IEEE;<br />
USE IEEE.std_logic_1164.ALL;<br />
ENTITY test IS<br />
PORT(<br />
a, b : IN std_logic;<br />
bus : OUT std_logic_vector<br />
(7 DOWNTO 0)<br />
);<br />
END ENTITY test;<br />
4.2 Komplexe Typen (composite)<br />
Komplexe Datentypen bestehen aus Werten, <strong>die</strong> mehrere<br />
Elemente be<strong>in</strong>halten. Es gibt Arrays und Records.<br />
4.2.1 Arrays<br />
Arrays s<strong>in</strong>d e<strong>in</strong>e Sammlung von durchnummerierten<br />
Elemente des gleichen Typs<br />
Zu den skalaren Typen s<strong>in</strong>d bereits e<strong>in</strong>ige Arraytypen<br />
vordef<strong>in</strong>iert, <strong>in</strong>sbesondere zu den Typen BIT und<br />
STD_LOGIC. Sie tragen den Zusatz _VECTOR<br />
Benötigt man z.B. e<strong>in</strong>en 4 Bit breiten Datenbus zur<br />
Verknüpfung logischer Komponenten, so könnte man<br />
e<strong>in</strong>en entsprechenden Typ wie folgt deklarieren:<br />
TYPE bus IS ARRAY (0 TO 3) OF BIT;<br />
TYPE bus IS BIT_VECTOR (0 TO 3);<br />
TYPE next_bus IS STD_LOGIC_VECTOR (0 TO 3);<br />
Bei der Angabe ganzer Bereiche ist <strong>die</strong> Laufrichtung<br />
der Index’ wichtig. Bereiche können aufwärts <strong>mit</strong> TO<br />
und abwärts <strong>mit</strong> DOWNTO angegeben werden.<br />
Bei den Array-Zuweisungen gibt es sehr viele Möglichkeiten.<br />
- 4-bit Str<strong>in</strong>g-Zuweisung c