118
2 Spezifikation und Modellierung
entity RS_FFipffop is
port (R: in
BIT;
-- Rücksetz-Eingang
S: in
BIT;
-- Setz-Eingang
Q: inout BIT;
-- Ausgang
nQ:inout BIT;);
-- invertierter Ausgang
end RS_FFipffop;
architecture one of RS_FFipffop is
begin
process: (R,S,Q,nQ)
begin
Q <= R nor nQ; nQ <= S nor Q;
end process;
end one;
Die Ports Q und nQ müssen vom Typ inout sein, da sie auch intern gelesen
werden, was mit Ports vom Typ out nicht möglich ist. Tabelle 2.5 zeigt die Simulationszeitpunkte, an denen die Signale dieses Modells aktualisiert werden.
Tabelle 2.5 δ-Zyklen
für ein RS-Flipflop
<0ns 0ns 0ns+δ 0ns+2 ∗ δ 0ns+3 ∗ δ
R 0 1 1
1
1
S 0 0 0
0
0
Q 1 1 0
0
0
nQ 0 0 0
1
1
In jedem Zyklus werden Aktualisierungen durch eines der Gatter geleitet. Die
Simulation endet nach drei δ-Zyklen. Dabei ändert der letzte Zyklus nichts mehr, da
Q bereits den Wert 0 hat.
∇
δ-Zyklen entsprechen einer infinitesimal kleinen Zeiteinheit, die in Wirklichkeit
immer vorhanden ist. δ-Zyklen stellen sicher, dass die Simulation die Kausalität
erhält.
Die Ergebnisse hängen nicht von der Reihenfolge ab, in der Teile eines Modells
während der Simulation ausgewertet werden. Dies wird durch die Trennung der
Berechnung neuer Werte für Signale und deren eigentlicher Zuweisung erreicht. In
einem Modell, das die folgenden Zeilen enthält,
a <= b;
b <= a;
werden die Signale a und b stets vertauscht. Wenn die Zuweisungen sofort ausgeführt
würden, so würde das Ergebnis von der Reihenfolge abhängen, in der die beiden
Wertzuweisungen ausgeführt werden (siehe dazu auch Seite 63). VHDL-Modelle
sind daher deterministisch. Dies erwarten wir auch von der Simulation einer echten
Schaltung mit festem Verhalten.
Es kann unbeschränkt viele δ-Zyklen geben, bevor die Zeit T c fortschreitet. Die
Möglichkeit unbegrenzter Schleifen kann verwirrend sein. Eine Option zur Vermeidung dieser Schleifen wäre es, Verzögerungen von Null, wie wir sie in unserem
Modell benutzt haben, zu vermeiden.
2 Spezifikation und Modellierung
entity RS_FFipffop is
port (R: in
BIT;
-- Rücksetz-Eingang
S: in
BIT;
-- Setz-Eingang
Q: inout BIT;
-- Ausgang
nQ:inout BIT;);
-- invertierter Ausgang
end RS_FFipffop;
architecture one of RS_FFipffop is
begin
process: (R,S,Q,nQ)
begin
Q <= R nor nQ; nQ <= S nor Q;
end process;
end one;
Die Ports Q und nQ müssen vom Typ inout sein, da sie auch intern gelesen
werden, was mit Ports vom Typ out nicht möglich ist. Tabelle 2.5 zeigt die Simulationszeitpunkte, an denen die Signale dieses Modells aktualisiert werden.
Tabelle 2.5 δ-Zyklen
für ein RS-Flipflop
<0ns 0ns 0ns+δ 0ns+2 ∗ δ 0ns+3 ∗ δ
R 0 1 1
1
1
S 0 0 0
0
0
Q 1 1 0
0
0
nQ 0 0 0
1
1
In jedem Zyklus werden Aktualisierungen durch eines der Gatter geleitet. Die
Simulation endet nach drei δ-Zyklen. Dabei ändert der letzte Zyklus nichts mehr, da
Q bereits den Wert 0 hat.
∇
δ-Zyklen entsprechen einer infinitesimal kleinen Zeiteinheit, die in Wirklichkeit
immer vorhanden ist. δ-Zyklen stellen sicher, dass die Simulation die Kausalität
erhält.
Die Ergebnisse hängen nicht von der Reihenfolge ab, in der Teile eines Modells
während der Simulation ausgewertet werden. Dies wird durch die Trennung der
Berechnung neuer Werte für Signale und deren eigentlicher Zuweisung erreicht. In
einem Modell, das die folgenden Zeilen enthält,
a <= b;
b <= a;
werden die Signale a und b stets vertauscht. Wenn die Zuweisungen sofort ausgeführt
würden, so würde das Ergebnis von der Reihenfolge abhängen, in der die beiden
Wertzuweisungen ausgeführt werden (siehe dazu auch Seite 63). VHDL-Modelle
sind daher deterministisch. Dies erwarten wir auch von der Simulation einer echten
Schaltung mit festem Verhalten.
Es kann unbeschränkt viele δ-Zyklen geben, bevor die Zeit T c fortschreitet. Die
Möglichkeit unbegrenzter Schleifen kann verwirrend sein. Eine Option zur Vermeidung dieser Schleifen wäre es, Verzögerungen von Null, wie wir sie in unserem
Modell benutzt haben, zu vermeiden.
