2.7 Diskrete, ereignisbasierte Sprachen
119
Die Weiterleitung von Werten mittels Signalen ermöglicht auch eine einfache
Implementierung des Observer-Musters (siehe Seite 37). Im Vergleich zu SDL ist
bei VHDL die Anzahl der Beobachter variabel und hängt von der Anzahl der Prozesse
ab, die auf die Änderung eines Signals warten.
Wie sieht nun das Kommunikationsmodell hinter VHDL aus? Die Beschreibung
der Semantik von VHDL basiert grundlegend auf einer einzelnen, zentralisierten
Warteschlange für zukünftige Ereignisse, die alle zukünftigen Signalwerte speichert. Der Sinn dieser Warteschlange ist nicht, asynchronen Nachrichtenaustausch
zu implementieren. Vielmehr soll der Simulationskern Einträge sequentiell aus der
Warteschlange auslesen. Versuche, VHDL-Simulation verteilt auszuführen, leiden
i.d.R. an mangelnder Performanz. Alle modellierten Komponenten können auf Werte von Signalen und Variablen zugreifen, die sich in ihrem Bereich befinden, ohne
nachrichtenbasierte Kommunikation zu verwenden. Daher neigen wir dazu, die Implementierung von Kommunikation in VHDL als shared memory-basiert anzusehen.
Auf Basis des VHDL-Simulators ließe sich aber auch FIFO-basierter Nachrichtenaustausch in VHDL implementieren.
IEEE 1164
In VHDL gibt es keine vordefinierte Menge von Signalwerten, bis auf die Basisunterstützung für zweiwertige Logik. Stattdessen kann man die zu verwendende
Wertemenge in VHDL selbst definieren und unterschiedliche VHDL-Modelle können unterschiedliche Signal-Wertemengen verwenden.
Würde diese Fähigkeit von VHDL allerdings in dieser Weise eingesetzt, wären die Übertragbarkeit und Austauschbarkeit von VHDL-Modellen stark eingeschränkt. Um das Austauschen von Modellen zu vereinfachen, wurde eine StandardWertemenge definiert und von der IEEE standardisiert. Dieser Standard heißt IEEE
1164 und wird von vielen Systemen eingesetzt. IEEE 1164 hat neun Werte: {0,
1, L, H, X, W, Z, U, -}. Die ersten sieben Werte entsprechen den sieben Signalwerten von Abschnitt 2.7.2. U steht für einen nicht-initialisierten Wert.
Er wird von Simulatoren für Signale verwendet, die noch nicht explizit definiert
wurden.
- steht für eine beliebige Eingabe (engl. input don’t care). Dieser Wert muss
näher erläutert werden. Hardwarebeschreibungsspachen werden häufig zur Beschreibung Boolescher Funktionen verwendet. Mit Hilfe der VHDL-seeect-Anweisung
ist das bequem möglich. Die seeect-Anweisung entspricht den switch- und caseAnweisungen anderer Programmiersprachen. Die Bedeutung des VHDL-seeect ist
jedoch anders als die Bedeutung der seeect-Anweisung in Ada (siehe Seite 124).
Beispiel 2.36: Angenommen, wir wollen die Boolesche Funktion
f (a, b, c) = ab + bc
Précédent

- 142/485

Suivant