Metastabilität in 3- oder 2-Flop-Synchronisierern, wenn die Eingabe für mindestens 2 Takte gültig ist

In diesem Bild:

Metastabilität in 2- oder 3-Flop-Synchronisierern

Abbildung 1: Metastabilität in 2- oder 3-Flop-Synchronisierern

Wenn die Metastabilität des ersten Flops im 4. Takt nicht aufgelöst wird, ist es möglich, dass sie im 5. Takt auf '0' aufgelöst wird? Oder zwingt der Eingang den Ausgang des Flops, im fünften Takt auf '1' zu gehen? Gibt es einen anderen schlimmsten Fall, der passieren kann?

Deine Frage erscheint mir verwirrend. Wenn Sie über Flop-Synchronizer sprechen, warum haben Sie FIFOs in Ihrem Diagramm erwähnt? Welches ist das Signal, das Domänen überquert? Aktualisieren Sie die Frage entsprechend.
Ich kann Ihrer Frage nicht wirklich folgen, fügen Sie bitte einen Schaltplan mit Signalen hinzu, die mit den gleichen Bezeichnungen wie im Zeitdiagramm gekennzeichnet sind. Wenn sich ein metastabiler Zustand auflöst, wissen Sie im Allgemeinen nicht, ob er sich in eine 1 oder eine 0 auflöst, wenn Sie danach fragen.
@MituRaj main_in_full überquert Domänen. Es geht von clk_src zu clk_dest. Ich stimme zu, dass es stattdessen main_out_first_flop sein sollte.
Die Metastabilität hält typischerweise nicht länger als einen Zyklus an. Wenn es sich jedoch um ein Hochgeschwindigkeitsdesign wie einen Zieltakt für GHz-Bestellungen handelt, benötigen Sie mehr als 2 Flops auf dem Synchronisierer, um auf der sicheren Seite zu sein. Es besteht die Möglichkeit, dass der zweite Flop auch metastabil werden kann. In Ihrem Fall stellt er sich nach der Metastabilität nicht unbedingt auf den "falschen" Wert ein, sondern kann sich auf einen beliebigen Wert von 1/0 einpendeln. Du kannst es nicht vorhersagen. Aus diesem Grund müssen Sie am Zielort eine Gültigkeit von mindestens zwei Zyklen sicherstellen. Cz beim zweiten Abtasten würde es sich auf den "richtigen" Wert einpendeln.

Antworten (2)

Ihre Latenz scheint knapp unter 1/4 Zyklus zu liegen und verfehlt den Zustand „main_in_full“ um 1 Taktzyklus. Ich vermute, wenn Sie die invertierte Uhr für die Synchronisation wählen (1/2 Latenz), wird sie möglicherweise in der 4. Uhr erfasst und unwahrscheinlicher in der 5. und niemals in der 6. Uhr.

Ich denke, Sie haben ein großes Missverständnis darüber, wie Metastabilität funktioniert.

Die Metastabilität für irgendein gegebenes FF kann nicht über die nächste Taktflanke hinaus andauern. Jede Taktflanke startet ein neues "Fenster" für Metastabilität und nur dann, wenn sich der Eingang gleichzeitig mit der Taktflanke ändert.

Aus diesem Grund verwenden wir zwei oder mehr FFs, um Metastabilität zu eliminieren. Das zweite FF kann nur dann metastabil werden, wenn das erste FF zufällig seine Metastabilität in diesem schmalen Fenster um die nächste Taktflanke herum auflöst. Aber dieselbe Taktflanke zwingt das erste FF in jedem Fall in einen guten Zustand.