30.10.2013 Aufrufe

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

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!