Clock-Domain-Cross- und Metastabilitätsproblem

Ich verstehe das Problem der Metastabilität und verstehe, dass wir in einer begrenzten Zeit keinen stabilen Wert erhalten können, also brauchen wir ungebundene Zeit, aber es ist nicht praktikabel,

Also setzen wir ein weiteres Flip-Flop ohne Logik ein, um dem metastabilen Zustand eine vollständige Taktperiode zur Verfügung zu stellen, um einen stabilen Zustand zu erreichen

Aber der metastabile Zustand ist genauso wahrscheinlich '0' oder '1' wie die mechanische Analogie eines Hügels

warum also ist nach dem ff-synchronizer der stabile wert doout genau gleich dem eingang din ??

Geben Sie hier die Bildbeschreibung ein

Es gibt eine Reihe toller Artikel zu diesem Thema, zB diesen von Cummings sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf und diesen hier gstitt.ece.ufl.edu/courses/spring18/eel4712/lectures/… . Sie sind auf der kurzen Liste der Google-Suche, wenn Sie "Metastabilitäts-Uhrendomänen" eingeben.

Antworten (3)

TL;DR; Die Schaltung verhindert nicht, dass das erste Register (das mit din verbundene) metastabil wird. Was es tut, ist die Wahrscheinlichkeit zu verringern, dass sich der metastabile Wert in den Rest der Schaltung ausbreitet.

Beginnen wir mit einem 1-Flop-Synchronisierer. Das Register taktet den Wert von ein dinund richtet ihn an der Taktflanke aus. Alles gut? nicht ganz.

Wenn dinsich der Takt immer noch ändert, kann der Ausgang in einen metastabilen Zustand übergehen. Wenn der Ausgang dieses Registers mit anderen Schaltungen verbunden ist, breitet sich dieser metastabile Zustand durch die angeschlossenen Schaltungen aus. Nicht gut - dies kann zu Parallelitätsproblemen führen, wenn mehrere Register von demselben metastabilen Signal gespeist werden, zu falschen Werten, die von der kombinatorischen Logik generiert werden, zu Zustandsmaschinen, die in den falschen Zustand wechseln.

Was passiert, wenn wir ein zweites Register hinzufügen? Der metastabile Zustand des ersten kann immer noch auftreten. Allerdings taktet das zweite Register (*) den Wert immer einen Takt später. Daher gibt es jetzt eine Zeitlücke zwischen dem ersten Register und dem Rest der Schaltung.

Wenn das erste Register metastabil wird, aber in weniger als einem Taktzyklus entweder 1 oder 0 (es könnte beides sein) auflöst , dann gibt es zum Zeitpunkt des zweiten Taktzyklus keinen metastabilen Zustand, wenn das zweite Register den Wert abtastet . Die Ausbreitung des metastabilen Werts zum Rest der Schaltung wurde verhindert. Als Ergebnis gibt es entweder 1 oder 2 Taktzyklen Verzögerung als Ergebnis des zweiten Registers, je nachdem, auf welchen Wert sich der metastabile Zustand auflöst.

Dadurch wird die Wahrscheinlichkeit, dass sich ein metastabiler Zustand ausbreitet, massiv reduziert – es gibt eine mittlere Zeit vor dem Ausfall (MTBF), die anhand von Wahrscheinlichkeiten berechnet werden kann – für ein Register kann sie nur 1 Taktzyklus betragen, für zwei Register kann sie es sein so lange wie das Alter des Universums.

Das Hinzufügen zusätzlicher Register kann die Wahrscheinlichkeit einer Metastabilität weiter verringern, indem alle metastabilen Werte im zweiten Register erfasst werden (falls das erste Register nicht innerhalb eines Taktzyklus aufgelöst wurde). Es gibt jedoch ein Gesetz des abnehmenden Ertrags, weshalb Sie in den meisten allgemeinen Designs 2-Flop-Synchronisierer und in unternehmenskritischen Designs 3-Flop-Synchronisierer sehen werden.


(*) unter der Annahme, dass die Uhr mit minimalem Versatz geroutet wird.

Es "verhindert" nicht, dass sich der ungültige Zustand ausbreitet - es verringert lediglich die Wahrscheinlichkeit, dass dies der Fall ist. Für hohe Taktraten und damit kleine Einschwingzeiten verwenden Synchronisierer oft mehrere Stufen, um die Wahrscheinlichkeit auf das gewünschte Niveau herunterzubringen.
@WhatRoughBeast wahr - Ich habe später die Wahrscheinlichkeit erwähnt, aber Sie haben Recht, der erste Satz musste korrigiert werden.
Und positiv gestimmt, aber gelöscht, ist diese (Ex-) Antwort: Es gibt mehrere Variablen bei der Lösung von Metastabilität. a) Bandbreite der Rückkopplungsschleife; muss viel schneller (100 TAU) schneller sein als die Taktperiode b) Verstärkung der Rückkopplungsschleife c) zufälliges Grundrauschen der Rückkopplungsschleife d) deterministisches Grundrauschen (Stromversorgungen, Abfall von benachbarter IC-Metallisierung) der Rückkopplungsschleife

Ja, wenn der metastabile Zustand eintritt, löst er sich mit gleicher Wahrscheinlichkeit entweder in 0 oder 1 auf. Dies spielt jedoch im Großen und Ganzen keine Rolle.

Nehmen wir an, dass die asynchrone Eingabe einen Übergang von 0 auf 1 durchführt, und dieser Übergang erfolgt nahe genug an einer Taktflanke, um zu bewirken, dass das erste FF metastabil wird.

  • Wenn sich der metastabile Zustand zu 1 auflöst, dann wird das zweite FF einen Takt später ebenfalls zu 1 gehen, und alles ist gut.

  • Wenn sich die Metastabilität auf 0 auflöst, bleibt das zweite FF für einen weiteren Taktzyklus auf 0, aber bei diesem nächsten Taktzyklus geht das erste FF auf 1 (keine Metastabilität möglich) und das zweite FF geht einen Takt später auf 1 Das.

Mit anderen Worten, der einzige Effekt der "falschen" Auflösung der Metastabilität besteht darin, den Übergang am Ausgang des zweiten FF einfach um einen Takt zu verzögern. Dies ist das gleiche Ergebnis, das Sie erhalten würden, wenn das ursprüngliche Eingangssignal von Anfang an nur ein wenig später (in Bezug auf die Uhr) gewesen wäre. Es hat keine Auswirkung auf den Betrieb des Systems insgesamt.

Der Punkt ist, dass das zweite FF eine enorm reduzierte Wahrscheinlichkeit hat, selbst metastabil zu werden – dies kann nur passieren, wenn das erste FF überhaupt metastabil wird UND diese Metastabilität sich zufällig innerhalb eines engen Fensters um die nächste Taktflanke herum auflöst.

Die Funktion des zweiten FF besteht also darin, zu verhindern, dass im ersten Taktzyklus ein metastabiler Wert an domain2 übergeben wird, da der Wert nach dem ersten Taktzyklus nicht metastabil ist, oder?

Der Schlüssel liegt darin, zu verstehen, dass sich metastabile Zustände in einer (wahrscheinlich) endlichen Zeit von selbst auflösen. Die erste Stufe erfasst also die Daten, und die zweite Stufe wartet eine Taktperiode, bevor sie versucht, sie zu erfassen. Die Wahrscheinlichkeit, dass ein metastabiler Zustand für die Zeit t nach der Uhr bestehen bleibt, ist typischerweise eine Funktion von e^-t, je länger die Sekunde wartet, desto besser ist die Chance, gültige Daten zu erfassen – und die Wahrscheinlichkeit eines Ausfalls nimmt mit der Zeit dramatisch ab.

Natürlich wird die Wahrscheinlichkeit niemals tatsächlich Null, so dass Synchronisatoren eine spezifizierte BER (Bitfehlerrate) haben werden. Wenn die Taktrate hoch ist, ist die Einschwingzeit gering und in manchen Fällen unannehmbar gering. In diesem Fall besteht die übliche Strategie darin, je nach Anzahl ein weiteres Flip-Flop oder sogar mehr hinzuzufügen. Dies verringert die Fehlerwahrscheinlichkeit auf Kosten einer zusätzlichen Latenzzeit zu den Daten.