10.6 Spezielle Flipflops

Getaktete Zeitglieder in getakteten Schaltwerken sollten flankengesteuert sein, weil sie bei Pegelsteuerung nur eine Verzögerung darstellen, solange der Takt C = 1 ist, wodurch das getaktete Schaltwerk für die Taktphasen zu einen nichtgetakteten Schaltwerk würde. Andererseits gibt es auch gute Gründe für die Benutzung von Flipflops, die ein der Flankensteuerung entsprechendes Verhalten haben, sich aber auch umschalten lassen in eine Verzögerung. Eine häufige Anwendung für solche Flipflops findet sich an den Ein- und Ausgängen von Schaltnetzen in komplexen Systemen, die im Normalbetrieb als Fliessbänder getaktet arbeiten. Beim Test der Schaltnetze stören die Flipflops aber, weil sie das Zeitverhalten des Schaltnetzes verbergen. Zum Test schaltet man daher die Flipflops transparent. Sehr häufig wird eine weitere Funktion hinzugefügt, nämlich die Möglichkeit, alle oder ausgewählte Flipflops als Schieberegister zu schalten. Diese letzte Möglichkeit wollen wir erst im Kapitel 12 behandeln.

Eine technisch gute Methode, Transparenz mit Zweiflankensteuerung zu verbinden ist die Serienschaltung zweier pegelgesteuerter D-Flipflops, die mit zwei getrennten Takten versorgt werden:

drawtwolatch

Die fallende Flanke des ersten Taktes übernimmt das Eingangsdatum in das erste Latch, die steigende Flanke des zweiten Flipflops übernimmt den Inhalt des ersten Flipflops in das zweite und gibt damit diesen Wert auf Q aus.

Während C1 = 1 (C2 = 1) ist das erste (zweite) Latch transparent. Im Normalbetrieb dürfen also C1 und C2 nicht beide zugleich 1 sein. Mit C1 = C2 = 1 kann man jedoch gezielt beide Flipflops transparent schalten.

Das Zustandsdiagramm dieser Anordnung hat 4 Zustände:

 utab = [1 1 1 1 1 1 2 2; 2 3 1 4 2 3 2 3; 3 3 4 4 3 3 3 3; 4 1 4 1 4 1 3 3]; 
 xnam = {'000';'001';'010';'011';'100';'101';'110';'111'};                  
 znam = {'00';'10';'11';'01'};                                              

demofsm(...
   [1 1 1 1 1 1 2 2; 2 3 1 4 2 3 2 3; 3 3 4 4 3 3 3 3; 4 1 4 1 4 1 3 3],...
   {'00';'10';'11';'01'},...
   1,...
   1,...
   {'000';'001';'010';'011';'100';'101';'110';'111'},...
   'D,C_1,C_2'...
       )

Hier sollte man z.B. durch Mausklicke in die Input-Indexzeile der Flusstafel typische Sequenzen durchspielen, z.B. Speichern 1 und 0 und Transparenz durch: 000, 100, 110, 100, 101, 100, 000, 010, 000, 001, 000, 011, 111, 011, ...

Das folgende Signalspiel zeigt der Reihe nach von links nach rechts das Speichern einer 0 , einer 1 , einer 0 und schliesslich das Schalten beider Flipflops auf Transparenz:

drawsigstwolatch

Das folgende Skript tut das vorige zwanzig mal (Parameter) mit zufälligen Verzögerungen und zeigt anschliessend das Ergebnis in schneller Folge:

Das rechnet eine Weile! Die Animation wird durch Mausklick in eines der Bilder gestoppt.

drawsigstwolatchrand(20)