(Ich lerne das Design digitaler Schaltungen. Entschuldigen Sie, wenn dies eine naive Frage ist.)
Aus der Wikipedia habe ich das folgende Diagramm zum SIPO-Schieberegister gefunden:
Soweit ich weiß, besteht dieses Schieberegister aus DFF (D Flip-Flop). DFF wird an der ansteigenden Flanke der Taktperiode getriggert. Bei jeder ansteigenden Flanke des Clock
Signals werden die Daten von also Data In
durch eine Stufe des DFF geleitet.
Meine Frage ist, da das Clock
von allen DFFs geteilt wird, müssen sich alle 4 DFFs im getriggerten/transparenten Zustand befinden, wenn die steigende Flanke eintrifft. Was stellt also sicher, dass sich die Daten durch die only 1
DFF-Stufe und nicht durch zwei oder mehr Stufen ausbreiten?
Sagen wir:
Td
ist die interne Verzögerung für 1 DFF-Stufe, um Daten von D nach Q zu laden.Tr
ist die Dauer der steigenden Flanke der Uhr. Siehe Bild unten.Ich denke, um die Ausbreitung auf 1 Stufe zu beschränken, muss es sein:
Td < Tr < Td*2
Hab ich recht?
Aber im Link oben steht:
In dieser Konfiguration wird jedes Flipflop flankengetriggert. Das anfängliche Flip-Flop arbeitet mit der gegebenen Taktfrequenz. Jedes nachfolgende Flip-Flop halbiert die Frequenz seines Vorgängers, was sein Tastverhältnis verdoppelt . Infolgedessen dauert es doppelt so lange, bis die steigende/fallende Flanke jedes nachfolgende Flip-Flop auslöst; Dadurch wird die serielle Eingabe im Zeitbereich versetzt, was zu einer parallelen Ausgabe führt.
Es verwirrt mich über einige Dinge.
halves the frequency
bedeutet?Wie Neil_UK in seiner Antwort unten sagte, ist das obige Wiki-Zitat einfach falsch. Und er hat die Wiki-Seite repariert.
Wie EM Fields in seiner Antwort unten sagte,
... bis zur nächsten steigenden Taktflanke kann nichts mehr passieren, da die Taktflanke, die die Arbeit erledigt hat, bereits gestorben ist ...
Genau genommen gibt es keine ideal senkrecht ansteigende Flanke. Es sollten einige vorhanden sein, Tr
wie in der obigen Abbildung gezeigt. Ich denke, um die Ausbreitung des Signals durch die DFF-Stufen zu begrenzen, muss die ansteigende Flanke lange genug dauern, damit sich das Signal durch eine Stufe ausbreitet, und kurz genug , damit sich das Signal nicht zur nächsten Stufe ausbreitet.
Ich denke nur, dass diese Art der Steuerung zu knifflig/empfindlich ist, um wahr zu sein. Aber wenn es wahr ist, wie wird es erreicht? (Ich habe gerade ein Kopfgeld für diese Frage ausgesetzt.)
Meine Frage ist, da die Uhr von allen DFFs geteilt wird, müssen sich alle 4 DFFs im getriggerten/transparenten Zustand befinden, wenn die steigende Flanke eintrifft. Was stellt also sicher, dass sich die Daten durch nur eine Stufe des DFF statt durch zwei oder mehr Stufen ausbreiten?
Betrachten Sie die Timing-Anforderungen eines typischen D-Flip-Flops .
Wie Sie sehen können, gibt es eine Reihe von Parametern; Am wichtigsten sind hier Setup-Zeit, Haltezeit und Laufzeitverzögerung .
Der Eingang (bei D) muss über den angezeigten Zeitraum stabil sein (von zu ).
Für diesen speziellen Teil beträgt die erforderliche Mindesthaltezeit 3 ns. Dies ist die Mindestzeit, die der Eingang hinter der Uhr stabil sein muss, um eine garantierte Leistung zu erzielen (dh D wird an Q übertragen).
Jeder Übergang des Eingangs danach wird vom Gerät effektiv ignoriert . Vorausgesetzt, die Taktperiode ist größer als + es wird ordnungsgemäß funktionieren.
Schauen wir uns nun die Ausbreitungsverzögerungen an ( und )
Aus dem Datenblatt sind dies typischerweise 14 ns:
Da dieses Ereignis über die erforderliche Haltezeit hinaus auftritt, hat dieser Übergang am nächsten D-Eingang keine Auswirkung, da der Eingang nun effektiv durch den internen Rückkopplungsmechanismus gesperrt ist.
Beachten Sie, dass die maximale Rate, die ein Schieberegister erreichen kann, ist da der D-Eingang mindestens für die Setup-Zeit stabil sein muss, nachdem der vorherige Q-Ausgang stabil geworden ist.
Sofern die Laufzeitverzögerung größer als die Haltezeit ist, kann sie für die maximale Taktrate vernachlässigt werden.
Das Fazit ist also, dass ein einzelnes Taktereignis sich nicht über mehr als ein Flipflop ausbreiten kann, vorausgesetzt, die Ausbreitungsverzögerung von D nach Q ist größer als die erforderliche Haltezeit.
Mit Ihrem Diagramm passiert die Uhr irgendwann . Die Ausgabe nach der Ausbreitungsverzögerung des ersten Flip-Flops ändern wird, aber da dies nach der Eingangsaufbauzeit am zweiten Flip-Flop sein wird, vorausgesetzt, die Ausbreitungsverzögerung des ersten Flip-Flops ist größer als die Eingangshaltezeit des zweiten Flip-Flops (meiner Erfahrung nach immer), dann hat der Übergang bei Q1 (D des zweiten Flip-Flops) keine Auswirkung auf dieses Taktereignis .
Dieser Wikipedia-Link hatte eine falsche Beschreibung, er war für einen kaskadierten Division-durch-2-Zähler. Ich habe den Wikipedia-Eintrag jetzt so angepasst, dass er ein Schieberegister beschreibt. Es ist vielleicht nicht die beste Beschreibung (erledigt in einer Minute), aber zumindest ist es nicht einfach falsch!
Damit die Timings richtig funktionieren, muss die Haltezeit am D-Eingang kleiner sein als die Ausbreitungsverzögerung des Flipflops minus der Taktunsicherheit. Solange diese Bedingung wahr ist, ändern sich die neuen Daten vom vorherigen Flipflop nicht, bis die nächste Stufe die Daten zwischengespeichert hat.
Für einen NXP 74HC74 sehen wir aus dem Datenblatt, dass die Haltezeit im schlimmsten Fall 3 ns beträgt und die Ausbreitungsverzögerung typischerweise 14 ns beträgt, sodass ein Taktversatz von bis zu 11 ns bei diesen Timings kein Problem darstellt (bei 5 V). Beachten Sie jedoch, dass die Ausbreitungsverzögerung in der Regel nicht minimal ist, sodass die Ränder an einem bestimmten Teil viel enger sein können. Aus ziemlich offensichtlichen Gründen sind die meisten D-Flipflops jedoch so konzipiert, dass so etwas in Bezug auf das Timing funktioniert, da es wahrscheinlich auch sein wird, ein besonders schnelles zu bekommen haben kürzere Haltezeitanforderungen.
DFFs sind nicht transparent, sie arbeiten an der Flanke des Taktsignals. Die Taktflanke muss schnell genug sein, damit die Schaltungen richtig funktionieren.
Ein Beispiel ist unten gezeigt:
Die erste Stufe ist während der Low-Phase des Takts aktiv. Wenn der Takt ansteigt, speichern die ersten Back-to-Back-verbundenen Inverter (Latch) den aktuellen Zustand und der Eingang wird durch das Übertragungsgatter links zum Knoten X getrennt. Gleichzeitig wird der zweite TG transparent und steuert den zweiten Latch an. Sobald die Uhr wieder auf Low geht, behält der zweite Latch den Wert.
In der Wikipedia-Schaltung bilden die Flip-Flops ein Schieberegister, sie arbeiten alle mit der gleichen Frequenz. Sie könnten als Zähler oder Taktteiler verwendet werden, jedoch würde hierfür eine andere Konfiguration verwendet werden.
Einfach gesagt, der von Ihnen beschriebenen Situation steht nichts außer dem eigenen Wissen des Designers beim Bau entgegen. Denken Sie daran, dass es eine endliche Verzögerung zwischen dem Auslösen der Taktflanke und dem Wechsel des Ausgangs gibt, die normalerweise als clk-to-q oder clk-to-out bezeichnet wird.
Mit einem gewöhnlichen DFF im Transmission-Gate-Stil (heute am häufigsten in CPUs verwendet) in der heutigen Technologie würden Sie höchstwahrscheinlich auf die von Ihnen beschriebene Situation stoßen. Dies wird als Halteverletzung bezeichnet.
Tatsächlich sind Hold-Verletzungen die tödlichsten für digitale Chips. Wenn eine Setup-Verletzung vorliegt, können Sie die Uhr einfach verlangsamen, bis der langsame Pfad nicht mehr fehlschlägt. Bei einer Hold-Verletzung ist jedoch normalerweise nichts zu tun (es sei denn, Sie setzen ausfallsichere Maßnahmen wie bewegliche Clock-Flanken pro Register). Weil sie so tödlich sind, ist es normal, heftig zu paddeln, um Verletzungen des Griffs zu verhindern. Wenn Sie also einen Zykluspfad haben (sagen wir 400 ps bei 2,5 GHz), ist das nur Flop-> Flop; Es gibt keinen Grund, nicht einige Puffer einzubauen. Dies wird sogar gefördert.
Andere erklärten auch, dass DFFs nicht transparent seien. Dies hängt sicherlich vom DFF ab , die meisten VLSI-FFs haben heute eine Transparenz von ein paar Pikosekunden. Andere werden absichtlich so modifiziert, dass sie länger transparent bleiben (Time-Borrowing-Flip-Flop – wodurch zusätzliche Zeit für die Einrichtung gewährt wird und Sie auch gezwungen werden, die gültigen Daten länger zu halten), indem die Master-Uhr relativ zum Slave verzögert wird.
Wenn das Signal das Flip-Flop überspringen würde, würde es als 0-Zyklus-Pfad betrachtet werden. Dies wird normalerweise als „Hold-Verletzung“ angesehen, was bedeutet, dass die Daten nicht lange genug aufbewahrt wurden.
Die Setup- und Haltezeiten jedes Flip-Flops sind unterschiedlich. Wenn sie für die Verwendung in einem Schieberegister entwickelt wurden, kann ich Ihnen fast garantieren, dass sie eine negative Haltezeit haben (verzögern Sie die Uhr zum Slave-Latch relativ zum Master-Latch, was dazu führt, dass der Master-Latch früher schließt und irgendwann nicht transparent wird bevor das Slave-Latch transparent wird). Entweder das, oder das clk->out dieser Flip-Flops kann viel länger als die Haltezeit sein. Oder sie haben eine Verzögerung zwischen den Stufen eingefügt; entweder auf dem Datenpfad oder dem Taktpfad (umgekehrt).
Es ist sehr einfach, dieses Problem zu beheben. Tatsächlich gibt es viele, viele, viele Möglichkeiten, das Problem zu beheben. Zwei einfache: Fügen Sie einfach eine geeignete Verzögerung zwischen jeder Flip-Flop-Stufe ein. Oder setzen Sie eine Verzögerung zwischen dem Takt zu jedem Flip-Flop im Schieberegister; beginnend mit dem letzten in der Kette. Dadurch wird sichergestellt, dass jedes Flip-Flop die stabilen Daten des vorherigen Flip-Flops übernimmt.
Dieses Schema zeigt die Logik der Übertragungsgatter und invertierenden Übertragungsgatter unmittelbar nach der aktiven ansteigenden Flanke des Takts, der die Reihe von Schaltern mit gerade genug Speicherkapazität steuert, damit ein Rückkopplungsschalter diesen Logikpegel isoliert vom Eingang aktiv halten kann.
Drei (3) Stufen von D-Flip-Flops sind unten als Teil eines Schieberegisters dargestellt, das Serial In Parallel Out (SIPO) oder Serial In Serial Out (SISO) sein könnte.
Obwohl der Takt zur bipolaren Ansteuerung von Transmission-Gates invertiert ist, ist er zum vereinfachten Verständnis symbolisch wie eine Relaissteuerung dargestellt.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Das ist eigentlich eine sehr gute Frage! Wie DFF funktioniert, erfahren Sie hier , für Taktzeiten und Übergänge finden Sie hier eine Antwort , die Folgendes besagt
Die Schmitt-Trigger-Aktion im Takteingang macht die Schaltung sehr tolerant gegenüber langsameren Taktanstiegs- und -abfallzeiten.
Das Implementieren dieser Schmitt-Aktion entfernt die Metastabilität während des Taktübergangs maximal. Somit steigt die Uhr logischerweise nur einmal, wodurch der Trigger seinen Zustand nur einmal überprüft. Für die Taktfrequenz haben DFFs normalerweise Min- und Max-Werte in ihren Datenblättern, um eine synchrone Signalausbreitung innerhalb ihrer logischen Elemente sicherzustellen.
In der SIPO-Konfiguration besteht Ihre Aufgabe darin, sicherzustellen, dass die Ausbreitungsverzögerung durch das DFF kleiner als die Taktperiode plus etwas Schlupf ist, um sicherzustellen, dass das Signal in dem mit dem D-Eingang des nächsten DFF verbundenen Kabel stabil ist.
Wenn der Takteingang eines Flipflops vom "D"-Typ hoch geht, wird der Zustand des D-Eingangs - zu diesem Zeitpunkt - zum Q-Ausgang übertragen und Q bleibt in diesem Zustand, unabhängig von Änderungen in D bis zum nächsten hochlaufende Kante der Uhr.
Andererseits arbeitet ein transparenter Latch, indem Q D folgt, während der Takt hoch ist, und dann den Zustand von D in Q in dem Moment verriegelt, in dem der Takt niedrig wird.
In der Schaltung, die Sie zeigen, ist die Uhr parallel zu allen dflops, so dass, sobald die hochgehende Taktflanke erscheint und der Inhalt von D nach Q übertragen wird - und damit nach D der folgenden Stufe - bis nichts mehr passieren kann die nächste ansteigende Taktflanke, da die Taktflanke, die die Arbeit erledigt hat, bereits gestorben ist.
Im Folgenden wird Ihre Schaltung mit einigen Treibern zum Leben erweckt und ihre Reaktion mit einem Zeitdiagramm veranschaulicht.
Beachten Sie, dass die Ausgangszustände der vorherigen Stufen nur einmal für jede ansteigende Taktflanke durch die folgenden Stufen weitergegeben werden.
Tr
in meiner Frage zeigt. Ich denke also, dass die ansteigende Flanke lange genug dauern muss, damit sich das Signal durch eine Stufe ausbreitet, und kurz genug , damit sich das Signal nicht zur nächsten Stufe ausbreitet. Ich denke nur, dass diese Art der Steuerung zu knifflig/empfindlich ist, um wahr zu sein. Aber wenn es wahr ist, wie wird es erreicht?Es funktioniert so, dass jeder DFF für einen sehr kurzen Zeitraum aktiviert wird. Um ein Latch in ein Flip-Flop zu verwandeln, verwenden Sie so etwas wie die folgende Schaltung auf seinem Freigabesignal. Als Eingang ist die Uhr angeschlossen. Bei steigender Flanke wird nur ein sehr kurzer Impuls erzeugt. Angenommen, der Takt ist anfangs auf 0. Die Ausgänge der NICHT-Gatter in das UND-Gatter sind hoch. Wenn Sie die ansteigende Flanke des Takts erhalten, sind beide Eingänge des UND-Gatters hoch und erzeugen Ihr hohes Aktivierungssignal. Kurz danach breitet sich jedoch der hohe Takt durch die Nicht-Gatter aus und der Ausgang des UND-Gatters wird wieder niedrig.
Sie können dies ziemlich genau zeitlich festlegen, indem Sie die Transistorabmessungen in den NICHT-Gattern auswählen. Der Freigabeimpuls hat genau die richtige Länge, damit sich das Signal in Ihrem Schieberegister einmal ändert und keine Mehrfachausbreitung hat. Dies ist natürlich prozessabhängig und ziemlich schwierig, es richtig zu machen.
Elbeherie
smwikipedia
Tr
, denke ich, dass alle DFFs für die Eingabe transparent sein sollten. Deshalb denke ich, dass es notwendig ist, zu kontrollieren, wie weit sich das Signal ausbreiten kann.Neil_DE