2.7 Diskrete, ereignisbasierte Sprachen
111
entity full_adder is
-- Entity-Deklaration
port (a, b, carry_in: in BIT;
-- Eingänge
sum, carry_out: out BIT);
-- Ausgänge
end full_adder;
Kommentare werden durch einen doppelten Bindestrich (--) eingeleitet und enden am Zeilenende.
∇
Architekturen bestehen aus Architekturköpfen und Architekturrümpfen. Man
kann verschiedene Stile von Rümpfen unterscheiden, nämlich strukturelle Rümpfe
und Verhaltensrümpfe. Wir zeigen die Unterschiede zwischen diesen beiden Modellierungsarten am Beispiel des Volladdierers. Verhaltensrümpfe enthalten nur die
Informationen, die benötigt werden, um aus Eingabesignalen und internem Zustand
(wenn es einen gibt) die Ausgabesignale und den neuen internen Zustand zu berechnen. Dies beinhaltet auch das zeitliche Verhalten.
Beispiel 2.31: Das folgende Beispiel zeigt einen Verhaltensrumpf:
architecture behavior of full_adder is
-- Architektur
begin
sum
<= (a xor b) xor carry_in after 10 ns;
carry_out <= (a and b) or (a and carry_in) or
(b and carry_in) after 10 ns;
end behavior;
VHDL-basierte Simulatoren können die Ausgabesignale graphisch als Signalverläufe darstellen. Diese ergeben sich, wenn Werte an die Eingabeports des Volladdierers gelegt werden.
Im Gegensatz zu Verhaltensrümpfen beschreiben strukturelle Architekturrümpfe
die Art und Weise, in der Entities aus einfacheren Entities zusammengebaut sind.
Beispielsweise kann der Volladdierer als Entity modelliert werden, die aus drei
Komponenten besteht (siehe Abb. 2.69). Diese Komponenten heißen i1 , i2 und i3
und sind vom Typ half_adder oder or_gate .
Abb. 2.69 Schematische Darstellung des Strukturrumpfes des Volladdierers
In der 1987er-Version von VHDL mussten diese Komponenten in einer sogenannten Component-Deklaration vorgestellt werden. Diese Deklaration ist der ForwardDeklaration anderer Programmiersprachen sehr ähnlich und dient auch genau dem
Précédent

- 134/485

Suivant