Hardware Reference
In-Depth Information
außer dem Wert auch das 'event-Attribut gelesen werden kann, das angibt,
ob sich der Signalwert zum aktuellen Simulationszeitpunkt geändert hat.
function my_rising_edge( signal x:std_logic) return boolean is
begin
return x'event and x= '1' ;
end function ;
Diese Funktion ersetzt praktisch den Ausdruck »
« und muss
x'event and x= '1'
mit einem Signal als Parameter aufgerufen werden.
Optionale Aufrufparameter
In einer Funktionsdefinition können einem Teil der Schnittstellenparameter
- üblicherweise den letzten in der Liste - Standardwerte zugeordnet werden.
Beim Aufruf der Funktion können die Standardwerte überschrieben oder bei-
behalten werden. Zum Überschreiben wird dem Schnittstellenparameter ein
Aufrufparameter und zum Beibehalten das Schlüsselwort »open« zugeordnet.
Die Zuordnung von »open« kann entfallen, wenn die Zuordnung namensba-
siert erfolgt oder wenn die Parameter, deren Standardwerte beibehalten wer-
den, am Ende der Parameterliste stehen. Beispiel sei die Funktion
function str(x:bit_vector, fmt:character:= 'b' )
return string;
aus »Tuc.Ausgabe«. Sie wandelt einen Bitvektor in eine Textdarstellung um.
Der Buchstabe »fmt« legt die Darstellung fest (siehe Anhang A.2.1, Tabelle
A.1). Der Standardwert ist 'b' für Binärdarstellung. Mit
write(str(x), open );
oder vereinfacht
write(str(x));
wird der Formatbuchstabe für die Binärdarstellung beibehalten. Um den Stan-
dardwert z.B. mit dem Formatbuchstaben für die Darstellung des Bitvektors
als vorzeichenfreie Dezimalzahl zu überschreiben, ist im Funktionsaufruf dem
zweiten Parameter der Wert »d« zuzuordnen:
write(str(x, 'd' ));
Überladen von Funktionen
Ein Funktionsaufruf verlangt, dass den Schnittstellenparametern typgleiche
Datenobjekte mit den passenden Objekttypen zugeordnet werden.
Wie lässt sich dann eine Funktion, z.B. »str(...)« schreiben, die mit
unterschiedlichen Datentypen als Argumente aufgerufen werden kann
und eine typspezifische Zeichenkettendarstellung zurückgibt?
Search WWH ::




Custom Search