Metastabilitätsfehlerfortpflanzung mit Flip-Flop

Ich habe eine Verwirrung bezüglich der Metastabilitätsauflösung unter Verwendung von Flip-Flops. Ich weiß, dass ich einen Synchronisierer von zwei oder drei D-Flip-Flops hinzufügen sollte, um eine sichere Übertragung bei Überschreiten der Grenzen der Taktdomäne zu gewährleisten, aber meine Verwirrung besteht darin, dass die Ausgabe der Metastabilität unvorhersehbar ist , es kann zu einem hohen oder niedrigen Pegel führen, und dieser Ausgang wird dann an den Rest der Schaltung weitergegeben. Wie kann also das zweite oder dritte Flip-Flop den richtigen zu übertragenden Wert erfassen, wenn das erste Flip-Flop immer eingeschaltet ist metastabiler Zustand und könnte sich auf einem falschen Niveau einpendeln?

Antworten (2)

Das erste FF ist nicht immer metastabil. Unter der Annahme, dass Eingangsflanken in Bezug auf seinen Takt gleichmäßig verteilt sind, hat das erste FF eine gewisse Wahrscheinlichkeit, dass es metastabil wird, was mit der Taktperiode und seinen Erfordernissen der Aufbau-/Haltezeit zusammenhängt. Wenn es metastabil wird, löst es sich innerhalb einer gewissen Zeit von selbst auf – die Wahrscheinlichkeit, nach der Zeit t metastabil zu bleiben , ist eine exponentiell abfallende Funktion von t .

Das zweite FF hat eine viel geringere Wahrscheinlichkeit, metastabil zu werden, da es genau zum richtigen Zeitpunkt getaktet werden müsste, wenn sich das erste FF (wenn es metastabil wäre) zufällig selbst auflöste. Andernfalls ist seine Ausgabe entweder definitiv hoch oder definitiv niedrig. Die Signaländerung könnte durch eine erweiterte Metastabilität des ersten FF verzögert werden, aber es ist sehr unwahrscheinlich, dass das zweite FF metastabil wird und den Betrieb der restlichen Logik nachteilig beeinflusst.

Ein dritter FF reduziert die Wahrscheinlichkeit einer Metastabilität auf ein unendlich kleines Niveau.

Sie haben die einzige vernünftige Antwort, wenn 'D' asynchron zur Uhr des ersten Flip-Flops ist. Es wird zum "Synchronisierer" für nachgeschaltete Stufen, die eine metastabile Wahrscheinlichkeit nahe Null haben.
Danke, Dave, wenn das erste Flip-Flop metastabil wird und sich selbst auflöst, bedeutet es, dass es nach einer bestimmten Zeit einen hohen oder niedrigen Pegel hat, ist dieser Pegel identisch mit dem ursprünglichen Flip-Flop-Eingang, oder er könnte falsch sein und dann an alle weitergegeben werden Schaltkreis
@HachaniAhmed. Wenn das erste Flip-Flop in einen metastabilen Zustand eintritt, in dem D = '1', aber Q = '0' (nach dem Einschwingen), dann hat die erste Stufe den falschen logischen Wert ausgegeben. Aus diesem Grund hat die erste Stufe eines Datensynchronisierers eine unsichere Ausgabe. Seine Auswirkung ändert die Wahrscheinlichkeit des nicht synchronisierten Wertes von +1 Fehler/-1 Fehler auf nur einen +1 Fehler. Um dies herauszufiltern, ist mindestens ein 2-poliger Digitalfilter sowohl für logische „1“-Entscheidungen als auch für logische „0“-Entscheidungen erforderlich. Ein einstufiges Flip-Flop ist immer metastabil und anfällig für asynchrone Eingaben. Wenn es sich um eine schnelle Überabtastung handelt, ist eine Metastabilität wahrscheinlicher.
Für einen laufenden Mittelwert von Eingangswerten werden die Fehler mit einem Synchronisierer in der ersten Stufe viel geringer sein. Sein einziger guter Zweck besteht darin, die Daten mit dem Abtasttakt abzugleichen, aber für ein „sauberes“ Signal wird ein digitaler Filter nachgeschaltet. Wenn ein Fehlerwert vom Sync-Flip-Flop weitergegeben wird, ist er zu kurz, um durch den Filter zu gehen, und wird ignoriert.
@HachaniAhmed: Wenn ein FF metastabil wird, kann es in beide Richtungen aufgelöst werden. Aber wenn es auf die "falsche" Weise aufgelöst wird, bedeutet dies nur, dass Sie die Erkennung der Änderung am Eingang um eine Taktperiode verzögert haben - kein wirklicher Schaden angerichtet. Es ist das gleiche Ergebnis, das Sie erhalten hätten, wenn das Roheingangssignal nur ein wenig später gewesen wäre , als es tatsächlich war. Wenn es auf die "richtige" Weise aufgelöst wird, bedeutet das nur, dass Sie Glück hatten und die Änderung eine Uhr früher erkannt haben, als Sie es sonst hätten tun können.
danke @DaveTweed, als Sie nach meinem Verständnis "kein wirklicher Schaden angerichtet" sagten, könnte das sehr schädlich sein, wenn das Flip-Flop den falschen Wert auflöst, als dieser Wert weitergegeben wird (je nach Kontext).
@DaveTweed, dies führte mich auch zu einer anderen Frage zu Mean Time Between Failure (MTBF), was ist mit dem ersten Ausfall? Mit MTBF wissen wir ungefähr, wann der nächste Fehler auftreten wird, z. B. innerhalb von 10 Jahren mit 3 Flip-Flops, beginnend mit einem vorherigen Fehler, oder? aber wie können wir feststellen, wann der erste Fehler auftritt?
Es entsteht kein Schaden, denn der "falsche" Wert ist einfach der alte Wert. Die dem Synchronisierer nachgeschaltete Schaltung verhält sich in beiden Fällen gleich, nur einen Takt später. In Bezug auf MBTF endet der erste "Ausfall", wenn Sie die Schaltung aufbauen und zum ersten Mal einschalten.

Wenn Sie ein Metastabilitätsszenario haben, d. h. das Eingangssignal ändert sich genau an der Abtasttaktflanke, sind sowohl 0 als auch 1 korrekte Werte. Wichtig ist, dass die gesamte nachfolgende Logik denselben Wert sieht (vorausgesetzt, Ihr Opfersignal fächert sich zu mehreren ultimativen Erfassungspunkten auf). Wenn die Taktflanke etwas früher oder später gewesen wäre, würden Sie eine klare 0 oder 1 erhalten, daher sollte es vernünftig sein, dass Sie nicht genau das eine oder andere als die richtige Antwort auswählen können.

Die kaskadierten Flops lösen sich mit zunehmender Wahrscheinlichkeit innerhalb eines Taktzyklus auf einen stabilen Wert auf, daher sollte der Ausgang der Sequenz statisch sein (für einen statischen Eingang) oder innerhalb von +/- einem Zyklus des Eingangsübergangs plus wechseln 2 oder 3 Zyklen, je nachdem, ob es sich um eine Doppel- oder Dreifachsynchronisation handelt.

Ein Nebeneffekt davon ist, dass Sie, wenn mehrere Signale asynchron (oder ohne klares Setup-Hold) abgetastet werden, alle potenziellen Rennbedingungen antizipieren müssen und sich nicht darauf verlassen müssen, die Änderungen in denselben zyklusgenauen Kombinationen zu sehen, die sie waren generiert.

Dein erster Satz ist verwirrend. '0' und '1'? Ihre Antwort beinhaltet nicht die Vorteile des Oversampling, selbst bei parallelen asynchronen Eingängen, was Zeit gibt, asynchrone Daten bis zur 3. Stufe auszurichten. Die zweite Stufe bestimmt und korrigiert geringfügige (1 Zyklus) Versatz der Daten. Die erste Stufe entfernt nur die metastabile Hauptkomponente. Der Ausgang der 3. Stufe sollte mit dem Datentakt ausgerichtet und synchronisiert sein.
Sie wenden Ihr Konzept, wie es funktionieren sollte, auf meine Antwort an. Angenommen, t = 1, die Eingabe ist 0. t = 2, die Eingabe ist 1. Wenn Sie bei t = 1,5 abtasten, welchen Wert erwarten Sie funktional? Es ist nicht definiert und hängt vom Timing des Pfades ab. Im schlimmsten Fall steigt die mittlere Schiene und der Ausgang des ersten Flops entweder an und fällt zusammen oder steigt langsam an und bleibt hoch. Erwarten Sie also mit gleicher Wahrscheinlichkeit, dass der Eingangsübergang einen 0- oder 1-Wert ergibt.
Sie hätten deutlich machen sollen, dass Sie von Wahrscheinlichkeiten und nicht von impliziter Logik sprechen.