Hardware Reference
In-Depth Information
wenn er nicht explizit angegeben ist, »constant« und für Ausgabe- sowie für
Ein- und Ausgabeparameter »variable«. Prozeduren können im Gegensatz zu
Funktionen mehrere Ergebnisse zurückgeben. Die Prozedur
procedure IncDec(a, b: inout integer; c: out boolean) is
begin
a := a+ 1 ; b := b- 1 ; c := (a=b);
end procedure ;
zählt z.B. eine Variable hoch, verringert den Wert einer anderen Variablen und
gibt in einer dritten Variablen bei Übereinstimmung true und sonst false
zurück.
Eine Prozedur ist immer »unrein«, d.h., sie kann lesend und schreibend
auf Datenobjekte der Beschreibungsumgebung, in der sie definiert ist, zugrei-
fen. Das kann auch versehentlich passieren und führt zu schwer lokalisierbaren
Fehlern. Auch aus diesem Grund ist es zu empfehlen, Prozeduren in Packages
zu vereinbaren. Denn in einem Package gibt es in der Regel keine sichtba-
ren Datenobjekte, die die Prozedur versehentlich auswerten oder verändern
könnte
5
.
Prozeduren mit Ein- und Ausgabesignalen
Bei der Vereinbarung eines Schnittstellenparameters mit dem Objekttyp »si-
gnal« wird nicht der Wert, sondern ein Zeiger auf das Signal übergeben, über
den bei der Übergaberichtung »in« Signalwerte und Attribute gelesen, bei
der Übergaberichtung »out« Änderungen zugewiesen und bei der Übergabe-
richtung »inout« sowohl Werte und Attribute gelesen als auch Änderungen
zugewiesen werden können. Der gelesene Signalwert ist immer der aktuelle Si-
gnalwert, der sich bei Abarbeitung einer Warteanweisung auch ändern kann.
Die Prozedur im nachfolgenden Beispiel hat einen Takt T als Eingabesignal
und ein bitorientiertes Ausgabesignal y. Nach jedem Aufruf wartet sie auf
die nächste aktive Taktflanke, setzt das Ausgabesignal auf »1«, wartet für
weitere fünf aktive Taktflanken, setzt das Ausgabesignal auf »0« und gibt den
Kontrollfluss ab:
procedure W5T( signal T:std_logic; signal y: out std_logic) is
begin
wait until rising_edge(T);
y <= '1' ;
for idx in 1 to 5 loop
wait until rising_edge(T);
end loop ;
y <= '0' ;
end procedure ;
)
WEB-Projekt:P3.1/W5T_pack.vhdl
5 Die Ausnahme sind die globalen (shared) Variablen (vgl. Abschnitt 3.1.5).
 
Search WWH ::




Custom Search