10.5 Voreinstell- und Haltezeit

Wir haben für nichtgetaktete Schaltwerke generell gefordert:

(1) Der Eingang x ändert sich nur, wenn das Schaltwerk sich in einem stabilen Zustand befindet.

(2) Der Eingang x ändert sich nur einschrittig.

Wir wollen in diesem Abschnitt die Konsequenzen dieser Einschränkung für Flipflops behandeln. Die Einschränkung bedeutet, dass sich Dateneingang und Takt nicht gleichzeitig ändern dürfen. Mehr noch: wenn sich der Dateneingang geändert hat, darf die nächste Taktflanke erst auftreten, wenn das Flipflop einen stabilen Zustand erreicht hat. Entsprechend gilt: wenn eine Taktflanke aufgetreten ist, darf sich der Dateneingang erst wieder ändern, wenn das Flipfop einen stabilen Zustand erreicht hat. Demnach darf sich das Datensignal in einem Zeitintervall [T - S , T + H] um den Zeitpunkt T der Taktflanke nicht ändern. Wir nennen S die Voreinstellzeit (setup time) und H die Haltezeit (hold time). S und H sind Worst-Case-Werte für die entsprechenden Zeiten zum Erreichen der stabilen Zustände. Im Gegensatz zu unserer Entwurfsforderung, unabhängig von allen individuellen Verzögerungen zu sein, müssen wir uns hier darauf verlassen, dass hergestellte Flipflops die für den jeweiligen Typ angegebenen Zeiten S und H nicht überschreiten.

Nachfolgend geben wir einige Beispiele für das Verhalten von Flipflops bei Dateninputänderung innerhalb des verbotenen Intervalls. Man beachte aber, dass dies das Verhalten eines Modells ist. Das tatsächliche Verhalten ist abhängig von der Technologie.

Taktpegel-gesteuertes Earle-Latch (Kap. 10.2)

drawsigsshearle

Taktpegel-gesteuertes D-Latch (Kap. 10.4)

drawsigsshdlatch

Rückflankengesteuertes D-Flipflop (Kap. 10.4)

drawsigsshdffn

Entsprechende Beispiele für die anderen Flipfloptypen kann der Leser durch eigene Versuche finden.

Die Funktionen drawsigsshearle , drawsigsshdlatch und drawsigsshdffn haben alle als Parameter die Struktur zur Festlegung der Verzögerungen:

 dly  : CellArray der Vektoren der Verzögerungen der logischen Glieder    
        in der Reihenfolge ihres Auftretens beim Traversieren der zu den  
        schaltalgebraischen Ausdrücken der Überführungsfunktion gehörigen 
        Bäume.  Diese Ausdrücke stehen im Titel der mit den Funktionen    
        generierten Bilder.  Die Verzögerungen der Gatter müssen          
        ganzzahlig und auf dem Rückkopplungsweg grösser als 0 sein.       

Im Fall von drawsigsshdlatch sind die Ausdrücke z.B.

 ~(z2&~(C&D))  ;  ~(z1&~(C&~(C&D)))                                       

Der erste Ausdruck hat zwei Gatter, der zweite drei. Die Verzögerungen sind also

 { [ v1_1  v1_2 ] ; [ v2_1  v2_2  v2_3 ] }                           

mit ganzzahligen Werten für die vi_j und v11 > 0 , v21 > 0 .

Ein Versuch ist damit z.B.

drawsigsshdlatch( { [2 1] ; [1 0 2] })