Aus dem Wikipedia-Artikel Metastabilität in der Elektronik :
Metastabilität in der Elektronik ist die Fähigkeit eines digitalen elektronischen Systems, für eine unbegrenzte Zeit in einem instabilen Gleichgewicht oder metastabilen Zustand zu bestehen. In metastabilen Zuständen kann der Schaltkreis möglicherweise nicht in der Zeit, die für einen ordnungsgemäßen Schaltkreisbetrieb erforderlich ist, auf einen stabilen logischen Pegel '0' oder '1' absinken. Infolgedessen kann die Schaltung auf unvorhersehbare Weise arbeiten und zu einem Systemausfall führen.
Das scheint eine gute Definition zu sein, aber was bedeutet das in einer Anwendung?
Was sind aus Sicht eines Elektronikdesigners einige Beispiele dafür, wann dies auftreten könnte und wo diese Art von Fehler von Belang sein sollte?
Gibt es eine pragmatischere oder angewandte Definition - etwas in spezifischeren Begriffen?
Antworten:
Schnelle Antwort: Wenn Sie das Setup und die Haltezeit am Eingang eines Flip-Flops verletzen, ist der Ausgang für einige Zeit unvorhersehbar. Diese unvorhersehbare Ausgabe wird als metastabil (oder Metastabilität) bezeichnet.
Lange Antwort: Wenn die Ausgabe nicht vorhersehbar ist, meine ich, dass sie nicht vorhersehbar ist. Es könnte hoch sein, es könnte niedrig sein, es könnte irgendwo dazwischen sein oder es könnte schwingen. Nach dieser metastabilen Periode wird die Ausgabe hoch oder niedrig sein, aber wir wissen nicht, in welche Richtung es gehen wird, bis es passiert.
Die Zeit, die nicht vorhersehbar ist, ist jedoch einigermaßen vorhersehbar. Es gibt zwei Hauptfaktoren, die die Länge der metastabilen Periode bestimmen: Die Geschwindigkeit des Flip-Flops und wie "nahe am Rand" Sie das Timing erhalten haben.
Die meisten metastabilen Zeiten sind ziemlich kurz, obwohl die Wahrscheinlichkeit einer langen Zeit ungleich Null ist. Theoretisch könnte man eine metastabile Zeit in der Größenordnung von Sekunden haben, obwohl die Chancen, dass dies passiert, unglaublich selten sind. Wenn die Geschwindigkeit des Flip-Flops zunimmt, nimmt die durchschnittliche metastabile Zeit ab - alle anderen Dinge sind gleich.
Es gibt eine "imaginäre" Zeit im Flip-Flop relativ zur Taktflanke, zu der Sie am anfälligsten für Metastabilitätsprobleme sind. Wann genau, hängt von vielen Faktoren ab, wie Temperatur, Spannung, Prozess, Mondphase, Tieropfern und welcher politischen Partei Sie angehören. Je näher Ihre Dateneingabe an dieser Zeit ist, desto länger ist die Metastabilitätszeit.
Der beste Weg, um mit Metastabilität umzugehen, besteht darin, Ihre gesamte Logik synchron zu machen und keine Ihrer Setup- und Haltezeiten zu verletzen. Dies ist natürlich für Schaltungen beliebiger Komplexität schwierig bis unmöglich. Wir versuchen also, die Stellen einzuschränken, an denen Metastabilität ein Problem sein könnte, und dann diese Stellen zu behandeln.
Die normale Methode wäre, die Daten "doppelt zu takten". Das heißt, Sie müssen zwei D-Flip-Flops in Reihe schalten, wobei der Ausgang des ersten den Eingang des zweiten speist. Die Hoffnung ist, dass, wenn das erste Flip-Flop metastabil wird, die metastabile Periode vorbei ist, bevor sie die Setup / Hold-Zeit des zweiten verletzt. In der Praxis funktioniert das ziemlich gut. In superkritischen Anwendungen kann es zu einer "Dreifachtaktung" kommen.
quelle
Ein metastabiler Zustand ähnelt einem instabilen Gleichgewicht. Ein häufiges Beispiel für ein instabiles Gleichgewicht ist ein umgekehrtes Pendel . Wenn Sie das Pendel in vertikaler Position ausbalancieren können, ist dies ein stabiler Zustand. Wenn jedoch etwas den Hebel zur Seite drückt (z. B. Luftströmungen oder Bodenschwingungen), kehrt das Pendel nicht in die vertikale Position zurück, sondern fällt nach unten. Im Gegensatz dazu wird ein normales Pendel, das nach einer Seite gedrückt wird, irgendwann wieder in die Vertikale zurückkehren.
Stabile Gleichgewichte werden in elektrischen Systemen zur Erzeugung von Speicherelementen verwendet. Instabile Gleichungen sind keine guten Speicherelemente (da sie leicht ihren Zustand verlieren), sondern existieren oft als parasitärer Zustand.
Ein übliches digitales Speicherelement ist ein Paar kreuzgekoppelter Wechselrichter:
Das Speicherelement weist zwei stabile Zustände auf, wobei der eine Knoten links an der Versorgungsspannung und der rechte Knoten an der Masse liegt und der andere im entgegengesetzten Zustand. Es gibt auch einen instabilen Zustand, in dem sich jeder Knoten auf einer Zwischenspannung befindet.
Um besser zu verstehen, wie der instabile Zustand entsteht, rufen Sie die Übertragungsfunktion für einen Wechselrichter auf. Das Diagramm der Übertragungsfunktion zeigt die Ausgangsspannung des Wechselrichters für eine bestimmte Eingangsspannung.
Der Wechselrichter ist nicht linear. Eine einfache Möglichkeit, eine ungefähre Lösung einer nichtlinearen Schaltung zu erhalten, besteht darin, die Schaltungseigenschaften aufzuzeichnen. Die Schnittpunkte der Diagramme sind die Lösungen oder mit anderen Worten die Punkte, an denen die elektrischen Eigenschaften aller Komponenten der Schaltung erfüllt sind. Normalerweise geschieht dies mit iv-Plots wie in diesem Diodenbeispiel bei Wikipedia . Bei den Wechselrichtern machen wir dies jedoch mit vv-Plots. Überlagern einer zweiten Inverterübertragungsfunktion auf dem Plot (mit vertauschten Achsen, da der zweite Inverter rückwärts ist:
Es gibt drei Schnittpunkte der Diagramme: einen bei (0, Vs), einen bei (Vs, 0) und einen bei (Vs / 2, Vs / 2). Der Zustand (Vs / 2, Vs / 2) ist metastabil. Nach einer kleinen Störung eines Knotens wird die Schaltung fast immer in einen der stabilen Zustände übergehen, anstatt zu (Vs / 2, Vs / 2) zurückzukehren.
Um einen Wert in das Speicherelement mit zwei Wechselrichtern zu schreiben, muss einer der Knoten mit einem Treiber, der stärker als die Wechselrichter ist, auf den gewünschten Wert gesetzt werden. Ein üblicher Weg dies zu tun ist mit einem Durchlasstransistor:
Wenn Sie das Gate des Durchlasstransistors mit dem Takt verbinden, haben Sie einen D-Latch (ich lasse die Ausgangsstruktur weg). Wenn der Takt hoch ist und den Durchlasstransistor aktiviert, ist der Zwischenspeicher transparent - der Eingang gelangt direkt zum Ausgang. Wenn der Takt niedrig ist, hält der Zwischenspeicher den vorherigen Wert. Die Metastabilität tritt in dem Moment auf, in dem die Latch-Samples abgetastet werden. Wenn der Eingang beim Abtasten des Signalspeichers eine stabile Hoch- oder Niederspannung aufweist, funktioniert er ordnungsgemäß. Wenn der Eingang sich jedoch um den Vs / 2-Punkt befindet, wenn der Latch abtastet, besteht die Möglichkeit, dass der Latch im metastabilen Zustand (Vs / 2, Vs / 2) endet. Sobald es sich im metastabilen Zustand befindet, kann es unbegrenzt dort bleiben (vorausgesetzt, der Latch wird nicht erneut getaktet), aber da es sich um ein instabiles Gleichgewicht handelt, geschieht etwas normalerweise relativ schnell, um es aus dem metastabilen Zustand herauszuschlagen.
Wann sollte man sich um die Metastabilität sorgen?
Wenn Ihre Speicherelemente metastabil werden, verlieren Sie zumindest einen Teil des Zeitbudgets für die nachgelagerte Logik. Die Logik kann die gewünschte Auswertung erst durchführen, wenn der metastabile Zustand behoben ist. Im schlimmsten Fall bleibt der metastabile Zustand bestehen oder breitet sich durch Logik aus, und nachgeschaltete Speicherelemente werden ebenfalls metastabil, oder mehrere verwandte Speicherelemente erfassen inkonsistente Werte.
Richtig entworfene und funktionierende synchrone Logik hat keine Probleme mit der Metastabilität. Die Taktperiode ist länger als die Auswertezeit für die Logik, alle Flip-Flop-Eingänge sind bei der nächsten Taktflanke stabil (Setup-Anforderung erfüllt) und laden alle einen gültigen Wert.
Einige der häufigsten Situationen, in denen Metastabilität ein Problem darstellt, sind:
quelle
Ein metastabiles Signal ist eines, das in einem beliebigen Muster für eine beliebige Zeitdauer willkürlich als hoch oder niedrig erscheint. Wenn das Signal mehrere Gatter direkt oder indirekt speist, ist es möglich, dass einige dieser Gatter es hoch "sehen", während andere es niedrig sehen. Böses Zeug.
Bei Systemen mit einem einzigen Takt können metastabile Signale häufig durch zwei Latches verarbeitet werden. Ein kniffligeres Problem tritt beim Ansteuern von Uhren auf. Es gibt viele Schaltkreise (insbesondere mit RS-Latches), die wunderbar funktionieren würden, wenn keine Metastabilität möglich wäre, die jedoch bei Auftreten von Metastabilität unregelmäßige Taktimpulse erzeugen können (was wiederum eine nachgeschaltete Metastabilität verursachen kann).
Im Übrigen ist ein weiterer wichtiger Punkt in Bezug auf die Metastabilität zu beachten: Die Laufzeit eines Latchs gibt an, wann die Ausgabe bei Einhaltung der Abtast- und Haltezeiten auf ihrem neuen Wert stabil ist. Wenn die Rüst- und Haltezeiten nicht eingehalten werden, kann nicht garantiert werden, ob oder wann der Ausgang schaltet oder nicht, bis der Latch ein gültiges Taktereignis empfängt. Selbst wenn der Ausgang sauber zu schalten scheint, gibt es keine Garantie, dass er nicht spontan zurückschaltet.
quelle
Der klassische Fall ist, wenn Sie die Setup- / Hold-Zeiten für einen synchronen Latch verletzen, und dies ist ein Problem, das Sie beim Entwerfen von FPGAs berücksichtigen müssen (ich bin sicher, dass Xilinx und Altera diesbezüglich Hinweise haben werden). Wenn ein Signal zu einem beliebigen Zeitpunkt eingehen kann, können Sie niemals sicher sein, dass es sich beim Takten nicht innerhalb der Setup / Hold-Zeitfensterspezifikation ändert. Was passieren kann, ist, dass der Latch-Ausgang nicht zum festgelegten Zeitpunkt nach der Taktflanke hoch oder niedrig geht, sondern eine Weile schwankt, bevor er sich in einem stabilen Zustand einstellt. Die normale Möglichkeit, dies zu verhindern, ist die Verwendung eines zweistufigen Latchs, entweder mit demselben Takt oder mit einem verzögerten oder phasenverschobenen Takt, abhängig vom Gleichgewicht zwischen Ihren Latenzanforderungen und der Wahrscheinlichkeit der Metastabilität. Dies ermöglicht es der ersten Verriegelungszeit, sich zu stabilisieren, bevor die zweite Verriegelung einen stabilen Zustand verriegelt. Übrigens, Dies ist etwas, mit dem sich Mikrocontroller intern befassen müssen, da externe E / A-Signale normalerweise asynchron zum CPU-Takt sind, sodass E / A-Ports häufig doppelte Verriegelungsanordnungen aufweisen, um Probleme zu vermeiden, und die Software sich nicht darum kümmern muss . Eine vage Erinnerung an die Lektüre vor vielen Jahren über ein Problem mit dem 6502, bei dem ein Buslesen von Daten, die sich außerhalb der Setup- / Haltezeitspezifikation geändert haben, eine Verzweigung zu einer Adresse verursachen könnte, die weder das Verzweigungsziel noch die nächste Anweisung war, wie einige interne Zustand ging metastabil. Dieses Video zeigt einige Beispiele: Eine vage Erinnerung an die Lektüre vor vielen Jahren über ein Problem mit dem 6502, bei dem ein Buslesen von Daten, die sich außerhalb der Setup- / Haltezeitspezifikation geändert haben, eine Verzweigung zu einer Adresse verursachen könnte, die weder das Verzweigungsziel noch die nächste Anweisung war, wie einige interne Zustand ging metastabil. Dieses Video zeigt einige Beispiele: Eine vage Erinnerung an die Lektüre vor vielen Jahren über ein Problem mit dem 6502, bei dem ein Buslesen von Daten, die sich außerhalb der Setup- / Haltezeitspezifikation geändert haben, eine Verzweigung zu einer Adresse verursachen könnte, die weder das Verzweigungsziel noch die nächste Anweisung war, wie einige interne Zustand ging metastabil. Dieses Video zeigt einige Beispiele:http://www.youtube.com/watch?v=tKHCwjWMMyg
Eine Analogie ist, wenn man jemandem einen Ball wirft - meistens fängt er ihn oder lässt ihn fallen / verpasst er ihn, so dass er ihn nach einer bestimmten Zeit nach dem Werfen entweder hält oder nicht. Aber gelegentlich fummeln sie eine Weile herum, bevor sie es entweder fangen oder fallen lassen, so dass ihr Zustand weder hält noch fällt - dies ist der metastabile Zustand!
quelle