Sie haben einige Missverständnisse über die Metastabilität
1) Sie sprechen über NACH der Metastabilitätsperiode.
Der springende Punkt ist, dass die Schaltung, die zu diesem Zeitpunkt versucht, die Entscheidungsaufgabe zu erledigen, keine Möglichkeit hat, zu beobachten, obwohl Sie die Wellenform nach dem Ereignis erfassen und herausfinden können, wann die Dinge beendet sind 'Die ganze Wellenform kann nicht in die Zukunft schauen. Schaltkreise, die versuchen, die Metastabilität zu überwinden, indem sie bestimmen, wann sie beendet wurde, leiden unter Metastabilität im Entscheidungsblock "Hat sie beendet".
2) Sie sprechen davon, dass das "gewünschte" Ergebnis "1" ist.
Metastabilität tritt nur auf, wenn das richtige Ergebnis 1 sein könnte, 0 sein könnte, egal welches, aber es muss fest das eine oder andere sein.
Zum Beispiel eine asynchrone Der Interrupt erreicht einen Prozessor mit einem anderen Takt als dem, der den Interrupt erzeugt. Es spielt keine Rolle, ob der Interrupt diesen oder den nächsten Zyklus verarbeitet, solange er den einen oder anderen Zyklus ausführt.
Wenn es wichtig ist, dass der Interrupt diesen Zyklus verarbeitet, muss Ihr Interrupt das Setup für den Prozessor-Interrupt in Bezug auf seine Uhr erfüllen. Wenn dies nicht der Fall ist, liegt ein Systemdesignproblem und kein Metastabilitätsproblem vor.
Die Metastabilität löst sich exponentiell auf. Wenn die Wahrscheinlichkeit, nach 1 ns immer noch metastabil zu sein, (sagen wir) 1e-6 beträgt, ist sie nach 2 ns 1e-12 und nach 10 ns 1e-60. Sie werden feststellen, dass diese letzte Wahrscheinlichkeit immer noch nicht Null ist, aber es ist unwahrscheinlich, dass Sie sie in Ihrer Lieftime oder im Zeitalter des Universums sehen. Wenn Sie dies tun, wird es Ihnen schwer fallen, es zu wiederholen!
Wenn Sie also lange genug warten, wird die Metastabilität zu klein, um ein praktisches Problem zu sein. Sie MÜSSEN eine ausreichende Latenz zulassen, damit diese Entscheidung getroffen werden kann.
Möglicherweise möchten Sie Ihre Systemuhr jedoch nicht langsam genug ausführen. Pipelining! Genau wie bei langsamen Multiplikatoren oder Ausführungssteuergeräten. Verteilen Sie den Vorgang auf mehrere serielle Ausführungseinheiten und lassen Sie Ihre Uhr schnell laufen. Der Prozess 'Warten' ist nur ein D-Flop. Verwenden Sie eine Folge von zwei oder mehr D-Flops, bis Sie die erforderliche Zeit gewartet haben, um den Effekt der Metastabilität auf "im Zeitalter des Universums unwahrscheinlich" zu reduzieren.
Es gibt zwei Möglichkeiten, ein D-Flop metastabil zu senden. Die erste besteht darin, die Timing-Anforderungen für das Einrichten / Halten der Eingabe zu verletzen. Die zweite besteht darin, die Logikpegel zu verletzen. Das erste tritt typischerweise auf, wenn ein in einer anderen Taktdomäne erzeugtes Ereignis an einem getakteten Eingang, dem ersten Flipflop eines Synchronisierers, ankommt. Da die Taktdomänen unterschiedlich sind, kann hier nicht garantiert werden, dass die Zeitsteuerungsanforderungen erfüllt werden, und gleichzeitig mit dem Taktsignal kann eine schnelle Datenflanke auftreten. Das zweite Flop tritt normalerweise zwischen dem ersten und dem zweiten Flop in einem Synchronisator auf, wenn das erste Flop metastabil gesendet wurde und einen Zwischenlogikpegel erzeugt. Dies kann vom folgenden Flop als 0 oder 1 gelesen werden oder auch dieses metastabile senden.
Stellen Sie sich einen Synchronisierer vor, der aufgefordert wird, eine Entscheidung darüber zu treffen, ob der Datenübergang von 0 zu 1 zuerst stattgefunden hat oder die Uhr. Wenn der Takt ist, ist der Ausgang 0. Wenn der Datenübergang ist, ist der Ausgang 1. Ein D-Flop, das gerade zwischengespeichert wird, ist ein Verstärker mit positiver Rückkopplung. Als Verstärker aus echten Transistoren hat er eine Bandbreite. In einem Datenblatt für cmos-D-Flops können Sie sehen, was mit den Setup- und Haltezeiten passiert, wenn sich die Versorgungsspannung und damit auch die Bandbreite ändern. Eine größere Bandbreite kann kleinere Rüst- und Haltezeiten auflösen. Wenn sich die Datenflanke nähert und dann das Timing der Taktflanke durchläuft , wird die Zeitdifferenz unendlich, und die für die Entscheidung erforderliche Bandbreite wird unendlich. Sie können keinen Verstärker mit unendlicher Bandbreite haben, und ein Verstärker mit endlicher Bandbreite kann nicht garantieren, dass die Entscheidung in einer endlichen Zeit getroffen wird. Metastabilität. Aber je länger Sie warten, desto exponentiell wahrscheinlicher ist es, eine Entscheidung getroffen zu haben. Aber nicht garantiert.