Warum verhindern kaskadierende D-Flip-Flops Metastabilität?

Ich verstehe, was Metastabilität ist, verstehe aber nicht, wie das Verbinden von Flip-Flops dies verringert?

Wenn der Ausgang des ersten Flipflops metastabil ist, wird dieser als Eingang für das zweite verwendet. Aber ich sehe nicht, wie das 2. Flip-Flop mit diesem Eingang etwas anfangen und es stabil machen kann.

Danke im Voraus!

Immer auf der Suche nach einer Gelegenheit, Buridans Arsch zu erwähnen: en.wikipedia.org/wiki/…

Antworten (6)

Metastabilität kann nicht „geheilt“ werden, aber wenn man lange genug wartet , kann die Wahrscheinlichkeit ihres Auftretens beliebig klein gemacht werden. Sobald Sie es einmal im Zeitalter des Universums erreicht haben, ist es wahrscheinlich unwahrscheinlich, dass es Ihnen Probleme bereitet.

Es ist, als würde man einen Bleistift auf seiner Spitze balancieren. Es ist wahrscheinlich, dass es umfällt, und je länger Sie warten, desto unwahrscheinlicher ist es, dass es stehen bleibt.

Es gibt zwei Probleme mit dem langen Warten, und eines davon ist grundlegend.

Das grundlegende Problem besteht darin, dass Sie, wenn Sie ein einzelnes Speicherelement (Latch oder Flip-Flop, beide leiden unter Metastabilität) in einem getakteten System haben, das die Ausgabe von einem asynchronen externen System empfängt, physikalisch keine Untergrenze für die Wartezeit definieren können , macht das externe Signal manchmal einen Übergang in der Nähe der selbsthaltenden Steuerflanke. Sie müssen das Signal zu einem anderen Flip-Flop leiten, damit es dort warten kann. Dies gibt Ihnen eine garantierte minimale Wartezeit von einem Taktzyklus.

Das zweite Problem besteht darin, dass Sie oft versuchen, ein System so schnell wie möglich zu betreiben, und die Systemtaktrate nicht verlangsamt werden kann, um dem zweiten Flip-Flop genügend Zeit zu geben. Die einzige Möglichkeit, die Signallatenz auf das notwendige Maß zu erhöhen, ohne den Durchsatz zu verringern, besteht darin, das Warten auf mehr Stufen zu verlegen.

Manche Leute haben Schwierigkeiten, sich vorzustellen, was zwischen den Flip-Flops passiert. Es gibt zwei Möglichkeiten, Metastabilität zu induzieren, und beide beinhalten die Verletzung der Flip-Flop-Regeln. Eine Möglichkeit besteht darin, die Setup- und Haltezeiten des Eingangs zu verletzen, um einen Übergang vorzunehmen, wenn das Flip-Flop erwartet, dass der Eingang stabil ist. Die andere besteht darin, die Eingangslogikpegel zu verletzen, um den Flip-Flop-Dateneingang auf einen Zwischenspannungspegel setzen zu lassen. Ein metastabiles Flip-Flop kann beide Arten von Verletzungen an seinem Ausgang erzeugen, um auf das nächste Flip-Flop zu kaskadieren.

Als ich zum Beispiel Chipdesign machte, „besaß“ ich die Metastabilität, alle Taktkreuzungen, wir machten die Berechnungen, ermittelten die Wahrscheinlichkeit eines Synchronisiererausfalls bei jedem Flop, jeder Gruppe von Flops usw. usw. und schauten uns an, was die Ergebnisse wären sein ... meistens blubberte ein Pixel auf dem Display, am Ende war der ganze Weg über den Chip ungefähr alle zwei Jahre - das war eine Grafikkarte für Win95, die damals nicht länger als durchhalten konnte Etwa einen Tag lang entschieden wir, dass niemand eine 2-Jahres-MTBF einer Synchronisiereinrichtung bemerken würde.
Auch eine Sache, die niemand erwähnt, ist, was mit dem absoluten Worst-Case-Metastabilitätsfehler passiert ... manchmal führt ein Synchronisiererfehler dazu, dass ein Flop intern mit einer dumm hohen Frequenz oszilliert, vielleicht auf Pegeln zwischen den normalen digitalen Höhen und Tiefen - wenn es Ihrem Hoch entgeht - Erhalten Sie Anti-Metastabilitäts-Synchronizer-Flops, die laute Brumm-Katastrophe alle nachgeschalteten Flops infizieren können (wenn das Zeug ausfächert), was zu enormen Stromentnahmen und sogar zu potenzieller Überhitzung und Chip-Tod führt - achten Sie also auf dieses Problem
@Neil_UK Sie verwenden das Wort Latch, das meiner Meinung nach verwirrend ist. In meinen Kreisen ist ein Latch ein asynchrones Element. Ich würde sie der Klarheit halber Flip-Flops nennen.
@jalalipop Ich habe Latch verwendet, um Flip-Flop zu meinen, obwohl sich seine Bedeutung in den Jahrzehnten, seit ich damit begonnen habe, vielleicht geändert hat. Ich stimme zwar zu, dass sich „Latch“ im Allgemeinen auf den asynchronen transparenten Typ bezieht, aber auch sie leiden unter Metastabilität, wenn sich die Daten an der „Latch“-Flanke des Enable-Eingangs ändern. Ein Master-Slave-Flip-Flop wird typischerweise intern aus einem Paar Latches aufgebaut, die vom Takt gegenphasig angesteuert werden. Danke für die Erwähnung, ich werde die Antwort ändern, um sie zu verdeutlichen.
@ Tamiwha Können Sie eine Antwort mit Diagrammen und Zeitkonstanten und der Mathematik geben, um das interne Verhalten der Latches zu verdeutlichen, wenn sie versuchen, sie zu lösen. Sie müssen zeigen (wie Sie sicherlich wissen), wie sich die Schleifenverstärkung und die Regenerationszeitkonstante sowie das Grundrauschen (thermisch und VDD) auf die Auflösungsfähigkeit auswirken.

Es verringert die Wahrscheinlichkeit einer Metastabilität, die die Schaltung beeinträchtigt, indem mehr Zeit gelassen wird, bis das Signal tatsächlich verwendet wird. Mit zwei Flip-Flops ermöglicht es einen ganzen zusätzlichen Taktzyklus, damit sich das Signal einpendeln kann. Mit drei erlaubt es zwei zusätzliche Taktzyklen.

Gute Antwort. Der wichtige Punkt ist, dass Metastabilität nicht verhindert wird, wir reduzieren nur die Wahrscheinlichkeit auf ein akzeptables Niveau.
Das Kaskadieren von Flipflops gibt dem Signal also Zeit, sich zwischen 0 und 1 einzuschwingen, löst aber keinen falschen Wert? da ein metastabiles Signal in beide Richtungen fallen kann?
@WouterA Wenn es metastabil ist, stimmen beide Werte.
Ich denke nicht, dass dies eine gute Antwort ist, nur der erste Flop tastet in diesem Fall das Eingangssignal ab. Wie oben erwähnt, besteht die Wahrscheinlichkeit, dass Metastabilität auftritt (abhängig von der Verstärkung in den internen Rückkopplungsschleifen des Flops, der Taktgeschwindigkeit und der Rate, mit der das abgetastete Ding zwischen den Eingangsschwellenwerten vorbeigeht), in jedem bestimmten Flop ist es (hoffentlich) a kleine Zahl < 1 = p - zwei Flops geben uns eine p^2-Chance, dass MS 2 Flops passiert, 3 p^3 usw. usw

Sie verhindern nicht, dass sich die Metastabilität auf die Ausgabe auswirkt, aber sie können die mittlere Zeit zwischen Ereignissen stark verlängern, da die Metastabilität von relativ langer Dauer sein müsste.

Die Kaskadierung von drei (oder mehr) gut gestalteten Flip-Flops kann die Zeit zwischen Zwischenfällen auf etwa das Alter der Erde verlängern.

Abhängig von Ihrer Taktrate und Prozesstechnologie. Ein Flip-Flop könnte ausreichen, damit Ihre MTBF verschwindend gering ist, solange Sie locker hoch bleiben.
@jalalipop Sicher. Es gibt einige aktuelle Testinformationen (jetzt sehr veraltet) im Original-IEEE-Papier. DOI: 10.1109/TC.1983.1676187
@jalalipop: Im Allgemeinen ist dies ein Problem, das relevanter ist, wenn Sie die Schlupfzeit nicht garantieren können … auch bekannt als asynchrones Design, wie das FIFO, das zwischen dem CPU-Kern und dem SOC kommuniziert, wenn die jeweiligen Uhren nicht phasenverriegelt sind. Andernfalls legen Sie einfach eine harte Setup-Zeit fest und garantieren, dass keine Metastabilität auftritt.
Ja, Metastabilität ist ein Problem bei einer asynchronen Schnittstelle. Der Schlupf, auf den ich mich beziehe, ist der Schlupf der synchronen Logik nach dem Flip-Flop. Wenn Ihr Slack hoch ist, stirbt das Metastabilitätsereignis ab, bevor es den Rest Ihres Designs beeinflusst.

Weil das erste Flip-Flop, selbst wenn es metastabil ist, die gesamte Periode des Takts hat, um sich zu stabilisieren. Bis das zweite Flip-Flop das erste Flip-Flop abtastet, könnte sein Ausgang bereits stabil sein.

Wenn Sie die Aufregung der Metastabilität wollen, implementieren Sie ZWEI SEHR LANGSAME INVERTER, verbinden Sie sie Rücken an Rücken und spannen Sie sie (in einer Simulation) auf VDD/2 vor. Entfernen Sie dann die Vorspannung und beobachten Sie die Geschwindigkeit der Auflösung auf logische 1- und logische 0-Pegel. Möglicherweise müssen Sie eine andere anfängliche Vorspannung als VDD/2 auswählen.

Wenn Ihre 2 oder 3 Flipflops im Vergleich zur Taktperiode LANGSAM sind, kann das Leben voller Probleme sein.

Metastabilität bedeutet einfach, dass sich der Ausgang für einen bestimmten Zeitraum nach der Taktflanke schlecht verhält, wenn Sie einen Datenübergang innerhalb eines bestimmten Zeitfensters bezogen auf die Uhr haben. Das Fenster ist jedoch kein festes Intervall. Vielmehr nimmt die Wahrscheinlichkeit eines schlechten Werts (Schwingung oder Zwischenspannungspegel) exponentiell mit der Zeit ab. Wenn Sie also das Signal mit einem Takt abtasten und dann etwas warten, bevor Sie den Takt an das zweite Flip-Flop anlegen, können Sie die Wahrscheinlichkeit eines schlechten Bits auf jede gewünschte (aber nicht null) Wahrscheinlichkeit reduzieren. Wenn die erforderliche Zeit zu lang ist, können Sie 3 oder mehr Flip-Flops in Reihe verwenden.