Hardware Reference
In-Depth Information
Tabelle 1.1. Signalattribute
Attribut Ergebnistyp Ergebnis
s
'event boolean
true, wenn der Prozess durch eine Änderung
von s geweckt wurde
s'stable(t)
boolean
true, wenn seit einer Zeit t keine
Signaländerung stattgefunden hat
s
'last_event delay_length
Zeit seit der letzten Änderung von s
s
'last_value
tTyp
Wert vor der letzten Änderung von s
s
'delayed(
t
)
tTyp
das um t verzögerte Signal zu s
::: :::
(s - Signal mit dem Datentyp tTyp; t - Variable oder Konstante vom Typ de-
lay_length)
function
falling_edge(
signal
s:std_logic)
return
boolean
is
begin
return
s'event
and
s=
'0'
and
last_value(s)=
'1'
;
end function
;
Bei einer steigenden Flanke ist der Wert des Signals s, das den Prozess geweckt
hat, vor der Änderung »0« und nach der Änderung »1«. Bei einer fallenden
Flanke sind die beiden Werte vertauscht. Ein Prozess, der nur den Takt in
der Weckliste hat, wird bei der Simulation immer genau einmal geweckt, ohne
dass eine Taktflanke aufgetreten ist, und zwar zum Simulationsbeginn. Da-
mit beim Simulationsbeginn keine Datenübernahme simuliert wird, sind die
Flankenbedingungen zusätzlich mit »T'event« UND-verknüpft.
Binäre Fallunterscheidungen im Kontrollfluss werden mit der If-Anweisung
beschrieben:
if b then
Anweisung {Anweisung}
end if
;
Die Bedingung
ist dabei ein Ausdruck oder eine Funktion vom Typ boo-
lean, z.B. der Rückgabewert der Funktion rising_edge(...) für »steigende
Flanke«. Die Kontrolle zugesicherter Bedingungen erfolgt vorzugsweise mit
der Assert-Anweisung
b
[assert b] report m [severity sl]
;
(b - zugesicherte Bedingung; m - Text für die Fehlermeldung; sl - Fehler-
schwere). Die Fehlerschwere klassifiziert die Bildschirmausgabe nach ihrer Be-
deutung für die Simulation und hat den im Package std.standard vordefi-
nierten Typ
type
severity_level
is
(
note,
-- Kontrollausgabe