Verstehen Sie den Zeitpunkt des Schieberegisters


8

(Ich lerne das Design digitaler Schaltungen. Entschuldigen Sie, wenn dies eine naive Frage ist.)

Aus der Wikipedia habe ich folgendes Diagramm zum SIPO-Schieberegister gefunden:

Geben Sie hier die Bildbeschreibung ein

Soweit ich weiß, besteht dieses Schieberegister aus DFF (D Flip-Flop). DFF wird bei der ansteigenden Flanke der Taktperiode ausgelöst. Für jede ansteigende Flanke des ClockSignals Data Inbreiten sich die Daten aus dem Signal durch eine Stufe des DFF aus.

Meine Frage ist, da das Clockvon allen DFFs geteilt wird, müssen alle 4 DFFs im ausgelösten / transparenten Zustand sein, wenn die ansteigende Flanke eintrifft. Was stellt also sicher, dass sich die Daten über die only 1DFF-Stufe und nicht über zwei oder mehr Stufen ausbreiten ?

Sagen wir:

  • Td ist die interne Verzögerung für 1 DFF-Stufe zum Laden von Daten von D nach Q.
  • Trist die dauerhafte Zeit der ansteigenden Flanke der Uhr. Siehe Bild unten.

Geben Sie hier die Bildbeschreibung ein

Ich denke, um die Ausbreitung auf eine Stufe zu beschränken, muss es sein:

Td < Tr < Td*2

Hab ich recht?

Aber im obigen Link heißt es:

In dieser Konfiguration wird jedes Flip-Flop flankengetriggert. Das anfängliche Flip-Flop arbeitet mit der gegebenen Taktfrequenz. Jedes nachfolgende Flip-Flop halbiert die Frequenz seines Vorgängers, wodurch sich sein Arbeitszyklus 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 ein paar Dinge.

  • Was heißt halves the frequencydas
  • Wie kann ein DFF mit einer Frequenz charakterisiert werden?
  • Funktioniert ein DFF nicht nur an der ansteigenden Flanke der Uhr und ist es im Allgemeinen egal, auf welcher Frequenz die Uhr steht?
  • Und wie könnte die Frequenz mit dem Arbeitszyklus zusammenhängen? Die Frequenz bezieht sich auf die Periode, während der Arbeitszyklus nur den Prozentsatz einer Periode bedeutet, in der ein Signal oder System aktiv ist . Ich sehe keinen Zusammenhang zwischen Frequenz und Arbeitszyklus.

ADD 1

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 Flanke der Uhr kann nichts mehr passieren, da die Flanke, die die Arbeit ausgeführt hat, bereits gestorben ist ...

Genau genommen gibt es keine idealerweise vertikale Anstiegsflanke. Es sollte einige geben, Trwie in der obigen Abbildung gezeigt. Ich denke, um die Signalausbreitung durch 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 Kontrolle zu knifflig / heikel ist, um wahr zu sein. Aber wenn es wahr ist, wie wird es erreicht? (Ich habe gerade ein Kopfgeld für diese Frage gesetzt.)


Was genau meinst du mit "Tr ist die dauerhafte Zeit der ansteigenden Flanke der Uhr"?
Elbehery

1
@ Elbehery Danke für die Antwort. Ich habe eine Illustration hinzugefügt. Da die Uhr von allen DFF-Stufen gemeinsam genutzt wird Tr, sollten meiner Meinung nach alle DFFs während der Eingabe transparent sein. Aus diesem Grund muss meiner Meinung nach gesteuert werden, wie weit sich das Signal ausbreiten kann.
Smwikipedia

2
Sie wurden durch einen Dud-Wikipedia-Eintrag verwirrt. Siehe meine Antwort und die aktualisierte Wikipedia-Seite (möglicherweise müssen Sie Ihren Browser-Cache
leeren

Antworten:


5

Meine Frage ist, da die Uhr von allen DFFs geteilt wird, müssen sich alle 4 DFFs im ausgelösten / transparenten Zustand befinden, wenn die ansteigende Flanke eintrifft. Was stellt also sicher, dass sich die Daten nur über eine Stufe des DFF und nicht über zwei oder mehr Stufen ausbreiten?

Berücksichtigen Sie die Timing-Anforderungen eines typischen D-Flip-Flops .

D Flip-Flop-Timing

Wie Sie sehen können, gibt es eine Reihe von Parametern. Von größter Bedeutung sind hier die Rüstzeit, die Haltezeit und die Laufzeit .

Der Eingang (bei D) muss über den gezeigten Zeitraum stabil sein (von bis ).tsuth

Für diesen bestimmten 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 gewährleisten (dh D wird an Q übertragen).

Rüst- und Haltezeiten

Jeder Übergang der Eingabe danach wird vom Gerät effektiv ignoriert . Vorausgesetzt, die Taktperiode ist größer als + , funktioniert sie ordnungsgemäß.tsuth

Betrachten nun die Ausbreitungsverzögerungen ( und ).tplhtphl

Aus dem Datenblatt sind dies normalerweise 14 ns:

Ausbreitungsverzögerung

Da dieses Ereignis über die Haltezeitanforderung hinaus auftritt, hat dieser Übergang am nächsten D-Eingang keine Auswirkung, da der Eingang jetzt durch den internen Rückkopplungsmechanismus effektiv gesperrt wird.

Beachten Sie, dass die maximale Rate, die ein Schieberegister erreichen kann, da der D-Eingang mindestens für die Einrichtungszeit nach dem vorherigen stabil sein muss Der Q-Ausgang ist stabil geworden.1tsu(michn) +tprÖp(meinx)

Vorausgesetzt, die Laufzeit ist größer als die Haltezeit, kann sie für die maximale Taktrate ignoriert werden.

Unter dem Strich kann sich ein einzelnes Taktereignis nicht über mehr als ein Flip-Flop ausbreiten, vorausgesetzt, die Ausbreitungsverzögerung von D nach Q ist größer als die erforderliche Haltezeit.

Unter Verwendung Ihres Diagramms tritt die Uhr zu einem bestimmten Zeitpunkt . Der Ausgang ändert sich nach der Ausbreitungsverzögerung des ersten Flipflops, aber wie dies nach der Eingangseinrichtungszeit beim zweiten Flipflop sein wird, vorausgesetzt, die Ausbreitungsverzögerung des ersten Flipflops ist größer als die Eingangshaltezeit des zweites Flip-Flop (meiner Erfahrung nach immer), dann hat der Übergang bei Q1 (D des zweiten Flip-Flops) keine Auswirkung auf dieses Taktereignis .t0Q.1


5

Dieser Wikipedia-Link hatte eine falsche Beschreibung, er war für eine kaskadierte Division durch 2 Zähler. Ich habe jetzt den Wikipedia-Eintrag so korrigiert, dass er ein Schieberegister beschreibt. Es ist vielleicht nicht die beste Beschreibung (in einer Minute erledigt), aber zumindest ist es nicht einfach falsch!


2

Damit die Timings korrekt funktionieren, muss die Haltezeit am D-Eingang kleiner sein als die Laufzeit des Flipflops abzüglich der Taktunsicherheit. Solange diese Bedingung erfüllt ist, ändern sich die neuen Daten aus dem vorherigen Flipflop erst, nachdem die Daten in der nächsten Stufe zwischengespeichert wurden.

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 (bei 5 V) darstellt. Beachten Sie jedoch, dass die Ausbreitungsverzögerung in der Regel nicht minimal ist, so dass die Ränder eines bestimmten Teils möglicherweise viel enger sind. Aus ziemlich offensichtlichen Gründen sind die meisten D-Flipflops jedoch so konzipiert, dass diese Art von Dingen zeitlich funktioniert, da es auch wahrscheinlich ist, dass sie besonders schnell sind kürzere Haltezeitanforderungen haben.


1

DFFs sind nicht transparent, sie arbeiten an der Flanke des Taktsignals. Die Taktflanke muss schnell genug sein, damit die Schaltkreise ordnungsgemäß funktionieren.

Ein Beispiel ist unten gezeigt:Geben Sie hier die Bildbeschreibung ein

Die erste Stufe ist während der niedrigen Phase der Uhr aktiv. Wenn der Takt steigt, speichern die ersten hintereinander verbundenen Wechselrichter (Latch) den aktuellen Zustand und der Eingang wird durch das zum Knoten X verbleibende Übertragungsgatter getrennt. Gleichzeitig wird der zweite TG transparent und steuert den zweiten Latch an. Sobald der Takt wieder niedrig wird, behält der zweite Latch den Wert bei.

In der Schaltung aus Wikipedia 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.


Aber wie erreichen Sie 100% symmetrisches phi und phi_bar? Wahrscheinlich würden Sie einen Wechselrichter verwenden, der mindestens eine Gate-Verzögerung zwischen den beiden führt. Jetzt kann Ihr erstes Übertragungsgatter aufgrund ungleichmäßiger Uhren eine '0' etwas länger als eine '1' passieren, und das zweite Übertragungsgatter kann eine '1' etwas länger als eine '0' passieren. Ähnliche Effekte treten bei den Tristate-Feedback-Geräten auf. Es gibt auch eine Metallführung zwischen den Taktpunkten. Nichts ist genau. Diese ideale Analyse verbirgt also nur Probleme, die im wirklichen Leben existieren. Imo.
jbord39

@ jbord39 - Natürlich muss das Timing überprüft werden. Es ist nicht so schwierig, phi und phi_bar symmetrisch zu machen. Wenn eine Fehlerquote erforderlich war, konnte eine Verzögerung zwischen den beiden TGs eingeführt werden. Das Routing ist nur lokal und sehr kurz. Verzögerungen werden normalerweise nach der parasitären Extraktion bestimmt und können ebenfalls überprüft werden. Natürlich gibt es robustere Designs, aber ich habe dieses bereits in Standardzellbibliotheken gesehen.
Mario

Ja, es ist die ganze Zeit in Standardzellbibliotheken, es ist das grundlegendste DFF. Aber die Uhren sind selten symmetrisch. 10ps / Wechselrichterverzögerung ist "gut genug". Die Charakterisierungs-Engine erkennt Anstiegs- / Abfallunterschiede und stellt sie trotzdem in Tabellen dar. Mein Punkt ist, dass das OP eine völlig logische Frage aufwirft, die echte Designfehler verursacht hat. Das Abblasen als "an der steigenden Flanke erfasst es sofort" ist eine große Vereinfachung, aber keine sehr gute, wenn es um die Nuance des Timings geht.
jbord39

@ jbord39 - Mein Punkt ist, dass dieses Design so robust wie nötig gemacht werden kann. Wenn dies zu einem Fehler im Entwurf führt, muss der Entwurfsablauf behoben werden. Abgesehen davon denke ich, dass Sie zu viel in die Frage lesen. Ich verstehe jedoch Ihren Standpunkt.
Mario

1

Einfach gesagt, es gibt nichts, was die von Ihnen beschriebene Situation verhindern könnte, außer dem Wissen der Designer beim Erstellen. Beachten Sie, dass zwischen dem Auslösen der Taktflanke und dem Ändern des Ausgangs eine endliche Verzögerung besteht, die normalerweise als clk-to-q oder clk-to-out bezeichnet wird.

Mit einem in der heutigen Technologie üblichen DFF im Transmission-Gate-Stil (der heute am häufigsten in CPUs verwendet wird) würden Sie höchstwahrscheinlich auf die von Ihnen beschriebene Situation stoßen. Es ist als Halteverletzung bekannt.

In der Tat sind Hold-Verstöße für digitale Chips am tödlichsten. Wenn ein Setup-Verstoß vorliegt, können Sie die Uhr einfach verlangsamen, bis der langsame Pfad nicht mehr fehlschlägt. Wenn jedoch eine Halteverletzung vorliegt, ist normalerweise nichts zu tun (es sei denn, Sie setzen ausfallsichere Maßnahmen wie bewegliche Taktflanken pro Register ein). Weil sie so tödlich sind, ist es normal, wütend zu polstern, um Verstöße gegen das Halten zu verhindern. Wenn Sie also einen Radweg haben (sagen wir 400ps bei 2,5 GHz), der nur Flop-> Flop ist; Es gibt keinen Grund, nicht einige Puffer einzubringen. Dies wird in der Tat gefördert.

Andere gaben auch an, dass DFFs nicht transparent sind. Dies hängt sicherlich vom DFF ab . Die meisten VLSI-FFs haben heute eine Transparenz von einigen Pikosekunden. Andere wurden absichtlich so geändert, dass sie länger transparent bleiben (Flip-Flop zum Ausleihen von Zeit - zusätzliche Zeit für das Einrichten gewähren und Sie dazu zwingen, die gültigen Daten länger zu halten), indem die Hauptuhr relativ zum Slave verzögert wird.

Wenn das Signal das Flip-Flop überspringen würde, würde es als 0-Zyklus-Pfad betrachtet. Dies wird normalerweise als "Halteverletzung" angesehen, was bedeutet, dass die Daten nicht lange genug gehalten wurden.

Die Setup- und Haltezeiten jedes Flip-Flops sind unterschiedlich. Wenn sie für die Verwendung in einem Schieberegister ausgelegt sind, kann ich Ihnen fast garantieren, dass sie eine negative Haltezeit haben (verzögern Sie den Takt zum Slave-Latch relativ zum Master-Latch, wodurch der Master-Latch früher geschlossen wird und einige Zeit nicht transparent wird bevor die Slave-Verriegelung transparent wird). Entweder das oder das Clk-> out dieser Flip-Flops kann viel länger sein als die Haltezeit. 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 den Takt zu jedem Flip-Flop in das Schieberegister; ab dem letzten in der Kette. Dadurch wird sichergestellt, dass jedes Flip-Flop die stabilen Daten des vorherigen Flip-Flops erfasst.


1

Dieses Schema zeigt die Logik der Übertragungsgatter und der invertierenden Übertragungsgatter unmittelbar nach der aktiven ansteigenden Flanke des Takts, die die Reihe von Schaltern mit gerade genug Speicherkapazität steuert, damit ein Rückkopplungsschalter diesen Logikpegel aktiv vom Eingang isoliert halten kann.

Drei (3) Stufen von D-Flip-Flops sind unten als Teil oder als Schieberegister gezeigt, das Serial In Parallel Out (SIPO) oder Serial In Serial Out (SISO) sein kann.

Obwohl der Takt für die bipolare Ansteuerung von Übertragungsgattern invertiert ist, wird er zum einfacheren Verständnis symbolisch wie eine Relaissteuerung dargestellt.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab


1

Das ist eigentlich eine sehr gute Frage! Denn wie DFF Werke gehen hier , für Takt - Timing und Übergang finden Sie Antwort finden hier was sagt der folgende

Durch die Schmitt-Trigger-Aktion im Takteingang ist die Schaltung sehr tolerant gegenüber langsameren Anstiegs- und Abfallzeiten des Takts.

Durch die Implementierung dieser Schmitt-Aktion wird die Metastabilität während des Taktübergangs maximal entfernt. Somit steigt die Uhr logischerweise nur einmal an, wodurch der Trigger seinen Zustand nur einmal überprüft. Für die Frequenz des Takts 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 Laufzeitverzögerung durch DFF kürzer als die Taktperiode ist, zuzüglich eines gewissen Durchhangs, um sicherzustellen, dass das Signal in dem mit dem D-Eingang des nächsten DFF verbundenen Kabel stabil ist.


0

Wenn der Takteingang eines Flip-Flops vom Typ "D" hoch geht, wird der Zustand des D-Eingangs - zu diesem Zeitpunkt - an den Q-Ausgang übertragen und Q bleibt in diesem Zustand, unabhängig von Änderungen in D bis zum nächsten hohe Flanke der Uhr.

Ein transparenter Latch arbeitet andererseits so, dass Q D folgt, während der Takt hoch ist, und dann den Zustand von D in Q in dem Moment zwischenspeichert, in dem der Takt niedrig wird.

In der Schaltung, die Sie zeigen, ist der Takt parallel zu allen dflops. Sobald also die hochtaktige Taktflanke erscheint und der Inhalt von D auf Q - und damit auf D der folgenden Stufe übertragen wird - kann nichts mehr passieren, bis die nächste ansteigende Flanke der Uhr, da die Flanke, die die Arbeit ausgeführt hat, bereits gestorben ist.

Im Folgenden wird Ihre Schaltung mit einigen Treibern zum Leben erweckt und ihre Reaktion anhand eines Zeitdiagramms veranschaulicht.

Es ist zu beachten, dass die Ausgangszustände der vorherigen Stufen nur einmal für jede ansteigende Taktflanke durch die folgenden Stufen weitergegeben werden.

Geben Sie hier die Bildbeschreibung ein


Danke für die Antwort. Wie Sie sagten, ... kann bis zur nächsten steigenden Flanke der Uhr nichts mehr passieren, da die Flanke der Uhr, die die Arbeit ausgeführt hat, bereits gestorben ist . Genau genommen gibt es keine ideale vertikale Anstiegsflanke, wie Trin meiner Frage angegeben. Ich denke also, die ansteigende Flanke muss 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 Kontrolle zu knifflig / heikel ist, um wahr zu sein. Aber wenn es wahr ist, wie wird es erreicht?
smwikipedia

0

Es funktioniert so, dass jeder DFF für einen sehr kurzen Zeitraum aktiviert ist. Um einen Latch in ein Flip-Flop zu verwandeln, verwenden Sie etwa die folgende Schaltung für das Freigabesignal. Taktflanke Die Uhr ist als Eingang angeschlossen. Wenn Sie die ansteigende Flanke erhalten, wird nur ein sehr kurzer Impuls erzeugt. Angenommen, der Takt liegt anfangs bei 0. Die Ausgänge der NOT-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 Hochfreigabesignal. Bald danach breitet sich der hohe Takt jedoch 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 NOT-Gattern auswählen. Der Freigabeimpuls hat genau die richtige Länge, damit sich das Signal einmal in Ihrem Schieberegister ändert und keine Mehrfachausbreitung aufweist. Dies ist natürlich prozessabhängig und es ist ziemlich schwierig, es richtig zu machen.


1
In diesem Punkt muss ich Ihnen nicht zustimmen. Das Hinzufügen dieser Schaltung zu einem Latch macht es nur zu einem "Impuls-Latch": eetimes.com/document.asp?doc_id=1271447 Um einen Latch in ein Flip-Flop (echtes FF) umzuwandeln, nehmen Sie zwei Latches, setzen Sie sie hintereinander und Geben Sie ihnen entgegengesetzte Phasentakte als Freigabe. Sie können dies mit jeder Art von Verriegelung tun. JK, D, SR usw.; es spielt keine Rolle - der grundlegende Unterschied zwischen einem Latch und einem Flip-Flop liegt in der Master-Slave-Topologie.
jbord39

1
Darüber hinaus ist es einfach nicht wahr. Es werden Impulsverriegelungen verwendet, die jedoch aufgrund ihrer dynamischeren Natur stark begrenzt sein müssen. Zum Beispiel, wie Sie sicherstellen müssen, dass der Impuls lang genug ist, damit Daten sowohl bei niedrigen als auch bei hohen Spannungen über alle Temperaturen und Prozessecken geschrieben werden können. Dies ist sicherlich möglich, aber wahrscheinlich 3-5x schwieriger als ein traditionelles Master-Slave-Flip-Flop.
jbord39
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.