Metastabilitätssimulation

Ich versuche, die Metastabilität zu beobachten, indem ich eine Kette von Invertern simuliere (LTSpice) und die dazwischen liegenden Signale sondiere.

Die Oszillation tritt nie auf (ich habe mehr als 5 Wechselrichter eingesetzt, um eine ausreichende Ausbreitungsverzögerung zu gewährleisten.) Das Signal bleibt nur bei 50% von VDD.

In dem Moment, in dem ich ein anderes nicht angeschlossenes Signal (an die Wechselrichterkette) ändere, beginnt die Wechselrichterkette zu oszillieren, zeigt jedoch niemals Metastabilität und beginnt immer bei 0, dann 1, dann 0 und so weiter. Ich erwarte, dass der Anfangspunkt manchmal bei 0 und manchmal bei 1 beginnt, aber das tue ich nicht.

Wie kann ich eine Schaltung mit echter Metastabilität simulieren?

Sie beschreiben eine Ringoszillatorschaltung, verwenden jedoch die für die sequentielle Logik geeignete Terminologie.

Antworten (2)

Metastabilität ist im Allgemeinen keine Oszillation, sondern das Signal von einem Latch , nicht einem Inverter, das über einen längeren Zeitraum um 50% der Schiene schwebt, bevor es sich in den einen oder anderen Zustand einpendelt.

Erst vor wenigen Wochen habe ich erfolgreich Metastabilität in einer LtSpice-Simulation beobachtet. Ich habe nach einem Transistormodell eines D-Latch gegoogelt und dann eine binäre Suche nach der genauen Eingangsspannung durchgeführt, die ihn metastabil machen würde.

Wenn Sie sich das Latch genau ansehen, werden Sie sehen, dass es sich um ein Paar Inverter handelt, die sich "umarmen", mit zwei Übertragungsgattern, eines zum Unterbrechen / Aktivieren ihrer Rückkopplungsschleife, das andere zum Anschließen eines Eingangssignals, das von Anti gesteuert wird -Phasen-Taktsignale.

Sie brauchen diese Übertragungsgatter oder zumindest so etwas, um die Anfangsbedingungen einzustellen, die erforderlich sind, um die Inverter in den Metastabilitätsbereich zu bringen. Als Alternative können Sie einfach ein Inverterpaar mit einem Kondensator mit niedrigem Wert an einem Knoten verwenden, z. B. 1 fF, und den Parameter für die Anfangsbedingungen der Kappe einstellen, um die Anfangsspannung zu erzwingen. Es ist jedoch realistischer, dies mit Übertragungsgattern wie diesem zu tun, es ist das, was sich tatsächlich in einem D-Latch befindet.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Diese FET-Modelle, die ich gefunden habe, stammen aus einem sehr schnellen Prozess, daher die niedrige Spannung. Die normale Ausbreitungsverzögerung lag bei etwa 50 pS, hier können Sie sehen, dass sich die Verzögerung auf etwa 600 pS erhöht hat, mit einem verlängerten flachen Abschnitt, bevor der Flop entscheidet, wie er abgerechnet wird. Ich konnte es nicht mehr bekommen, da mir die Genauigkeit für die Einstellung der Anfangsspannung ausgegangen ist und LtSpice intern wahrscheinlich nur doppelte Genauigkeit verwendet.

Die Modelle wurden von CMOSedu.com heruntergeladen, obwohl ich das Latch-Modell noch nicht finden kann, sollte die cmosedu_models.txt einfacher zu finden sein. Ich kann meine .asc-Datei posten, wenn Sie möchten und wenn das möglich ist.

Danke. Tatsächlich kann Metastabilität überall auftreten, selbst wenn sich zwei niedliche Inverter in Position 69 umarmen :-) Schauen Sie sich diesen Beitrag an: electronic.stackexchange.com/questions/14816/…
Mein Ziel ist es nicht, die Metastabilität zu beobachten, ich frage mich nur, warum es in meiner Wechselrichterkette nicht vorkommt.
@Ehsan Sie haben Recht, ein Wechselrichterpaar könnte Metastabilität aufweisen. Aber wie stellen Sie die Anfangsbedingungen genau richtig ein und erlauben es ihnen dann, es zu demonstrieren? Der einfachste Weg, den ich mir vorstellen kann, besteht darin, ein Übertragungsgatter zu verwenden, um den Rückkopplungspfad zu unterbrechen, und ein anderes Übertragungsgatter zu verwenden, um sie auf eine Zwischenspannung vorzuspannen. Dann irgendwann die Tore umstellen. Viola , du hast einen transparenten D-Riegel gebaut. Untersuchen Sie die Schaltung, die ich oben gepostet habe, und Sie werden feststellen, dass genau das da ist.
@Ehsan Also, was ist falsch an Ihrer Wechselrichterschaltung, um sie so einzurichten, dass sie Metastabilität demonstriert? Ich weiß nicht. Posten Sie einen Screenshot der Schaltung, die Sie verwenden, und lassen Sie uns einen Blick darauf werfen. Es steckt alles im Detail.

Es kann vorkommen, dass Sie in Ihrer Ringoszillatorsimulation echte numerische Metastabilität beobachten. Da der metastabile Zustand der Zustand eines instabilen Gleichgewichts ist, haben zwei Inverter, bei denen die Ausgänge von jedem mit den Eingängen eines anderen verbunden sind, einen metastabilen Zustand, dessen Spannungen aus einer Spannungsübertragungscharakteristik berechnet werden können. Es ist der Punkt, wo v Ö u T = v ich N . Weil das v Ö u T ( v ich N ) ist eine stetige monotone Funktion mit maxval ( v Ö u T ) = maxval ( v ich N ) , minval ( v Ö u T ) = minval ( v ich N ) (fast wahr für CMOS), dieser Punkt existiert immer. Wenn die beiden Inverter identisch sind, sind die Spannungen an Ein- und Ausgängen gleich, und wenn Sie fünf identische Inverter in einem Kreis verbunden haben (Ringoszillator), hat diese Schaltung auch einen metastabilen Zustand mit Eingangs-/Ausgangsspannungen, die denen des metastabilen entsprechen Zustand des Paares identischer Wechselrichter.

Wenn der Simulator vor einer transienten Analyse den Arbeitspunkt für eine Kette von (zwei oder mehr) im Kreis verbundenen Invertern berechnet, berechnet er ebenso auch die Spannungen des metastabilen Zustands für diese Schaltung. Theoretisch sollte der Ringoszillator also bei ungestörten Anfangsbedingungen der Arbeitspunktanalyse niemals schwingen . In der Praxis ist die Genauigkeit der Berechnung endlich, und was noch wichtiger ist, der Betriebspunkt wird mit einer Genauigkeit berechnet, die nur ausreicht, um eine transiente Analyse zu starten: keine Notwendigkeit, die Zeit für eine höhere Genauigkeit zu verschwenden, die für das illusorische Ziel der Metastabilitätsbeobachtung erforderlich ist; zumal diese Beobachtung nicht zu einem brauchbaren Werkzeug für Schaltungsdesigner ausgebaut werden kann.

Der numerische Fehler dieser .op-Berechnung kann zu Oszillationen führen, aber versehentlich klein genug werden und die Transientenanalyse kann zu "eingefrorenen" Spannungen und Strömen der Schaltung führen. Ich habe diese Formulierung noch nie gehört, aber wir können dieses Szenario als "numerische Metastabilität" bezeichnen, weil es viel mit echter Metastabilität gemeinsam hat.

Wir können den Simulator verwenden, um die zu berechnen v Ö u T = v ich N Punkt. Leider liefert die .op-Analyse in LTspice nur sechs Dezimalstellen von Spannungen (V(inout)=V(wire1)=0.6198945), und diese Genauigkeit reicht nicht aus, um die „numerische Metastabilität“ zu demonstrieren. Aber wir können die Transientendiagramme in die Textdateien exportieren, vergessen Sie nur nicht, die Wellenformkomprimierung im Bedienfeld zu deaktivieren. Beachten Sie auch '.option numdgt=14' in der Simulation.

meta-op

Die exportierte Textdatei gibt uns etwas andere Werte für Eingabe-/Ausgabeknoten, V(inout)=0.6198948233567885 und V(wire1)=0.6198948233566100. Noch alarmierender ist die Tatsache, dass die Spannungen bei 3ns V(inout)=0.6198948233611358 und V(wire1)=0.6198948233604235 sind, also führen wir die Simulation für eine Stoppzeit von 10ns aus:

meta-op-10ns

Ich gebe nicht absichtlich einen maximalen Zeitschrittparameter an; Wenn nicht angegeben, definiert der Simulator einen größeren Wert dieses Parameters für eine 10-ns-Analyse. Wäre der vom Simulator definierte Arbeitspunkt eine exakte "numerische Metastabilitäts"-Spannung, wäre der Graph unabhängig vom Wert des Zeitschritts konstant.

Also akzeptiere ich einen Wert von Vmeta = 0,6198948233567 als Anfangswert und verwende ein sukzessives Approximationsverfahren, um einen genaueren Wert für diesen Parameter zu definieren. Eigentlich mache ich es durch Versuch und Irrtum. Der gefundene Wert ist Vmeta=0.6198948233519. Mit diesem Wert führe ich eine .step-Param-Simulation für die gerade definierte "numerische Metastabilität"-Spannung und für einige Spannungen mit etwas kleineren und größeren Werten durch. Um das Diagramm deutlicher zu machen, wird die Anfangsbedingung nur für den 'inout'-Knoten geändert:

Meta

Nun zurück zum Ringoszillator. Alle Diagramme zeigen die Spannung V(inout); Die Farben variieren für drei verschiedene Anfangsbedingungen, das exakte Vmeta, das zuvor für zwei "umarmende" Inverter definiert wurde, ein etwas kleinerer Wert und ein etwas größerer Wert:

ringosc

Diese Simulation gibt uns die Möglichkeit zu sehen, wie die "numerische Metastabilität" mehr über das Berechnungsverfahren des Simulators aussagt als über ein echtes Metastabilitätsphänomen. Ändern Sie den maximalen Zeitschritt auf 0,29 ps und die Oszillationen beginnen in nur einem Diagramm. Ändern Sie den maximalen Zeitschritt auf 0,1 ps, und die Oszillationen beginnen überhaupt nicht. Kleinere Zeitschritte führen zu weniger Störungen, und die Spannungen stellen bei jedem nächsten Schritt ihre Anfangszustandswerte wieder her.

In der Hoffnung, dass das Hinzufügen von Rauschen zur Simulation uns den Simulationsbildern der „echten Metastabilität“ näher bringt, füge ich der Schaltung eine Verhaltensspannungsquelle aus pseudozufälligem weißem Rauschen hinzu. Diese Rauschquelle simuliert kaum jemals das echte MOSFET-Rauschen, aber der .tran-Plot ähnelt dem, der in den EE-Kursfolien zur Metastabilität dargestellt wird.

Meta-Rauschen

Ein vergrößerter Bereich des Diagramms

Metarauschen gezoomt

Metastabilität mit Latches

Nachdem die numerische Metastabilität mit einem Inverterpaar und einem Ringoszillator simuliert wurde, ist es ganz natürlich, zu versuchen, die Simulation mit dem Latch zu erstellen. Um das Inverterpaar und die Oszillatorschaltungen in einen metastabilen Zustand zu zwingen, haben wir die Anfangsspannungen angepasst. Bei Latches müssen wir für den gleichen Zweck die Verzögerung zwischen den Daten und den Taktübergängen auf einen bestimmten vorgegebenen Wert einstellen. Wenn der Taktimpuls die Datenleitung von der bistabilen Schleife trennt (ein Paar Inverter, die sich über die Übertragungsgatter im Latch "umarmen"), bleiben die Eingänge/Ausgänge dieser Inverter auf bestimmten Spannungen. Sicher, auch im metastabilen Zustand ändern sich diese "autonomen" Spannungen mit der Zeit, aber Sie können das Verriegelungsmoment immer noch als Abbildung der Verzögerungszeiten auf die "metastabilen" Spannungen rechnen.

Also nehme ich eine CMOS-Latch-Schaltung in ihrer primitivsten Form auf, wie sie in Einführungskursen zum digitalen Design gegeben wird, und führe eine .step'ped-over-delay-Simulation durch:

Latchmeta-1st

Die Daten werden für clkdelay > 20p zwischengespeichert, also ist die nächste Iteration '.step param clkdelay 20p 30p 1p'

Latchmeta-2nd

die Daten werden für Verzögerungen > 25p zwischengespeichert, der nächste Schritt '.step param clkdelay 25p 26p 100f', und wir erhöhen den Stoppzeitparameter auf 100ps

Latchmeta-3

und so weiter bis zur zehnten Iteration, die uns einen metastabilen Zustand bei der Verzögerung von 25,9417918301 ps (Verzögerung in der Taktleitung) – 10 ps (Verzögerung in der Datenleitung) = 15,9417918301 ps liefert. Dieses metastabile Gleichgewicht dauert mehr als 130 ps, ​​wobei die V(out)-Spannung von ca. 0,544 V.

Latchmeta

Der Prozess ist unkompliziert, aber ermüdend und langwierig: Der Zeitschritt muss sehr klein sein (hier eine Femtosekunde), um der Simulation Glaubwürdigkeit zu verleihen. Beachten Sie den sehr kleinen Iterationsschritt ( 10 22 s) für den Verzögerungsschritt in '.step param ...' der letzten Simulation. Es mag unvereinbar mit dem Simulationszeitschritt von einer Femtosekunde erscheinen, ist es aber nicht. Um zu verstehen, was hier passiert, betrachten Sie das Konzept des Parameters (Vmeta or Verzögerung M e T A ) als in etwa dem Konzept der Dedekind-Schnitte entsprechendin der Theorie der reellen Zahlen. Angenommen, Sie können genau nach der parametrischen Kurve (Kurve) von Vout auflösen, wobei der Parameter die Verzögerung zwischen den Daten und den Taktsignalzusicherungen Δt ist. Wenn dann für alle 0 < Δt < ΔTmeta Vout als logische NULL (EINS) endet und für alle Δt, die ΔTmeta < Δt < ΔTperiod erfüllen, Vout als logische EINS (NULL) endet, ist es sinnvoll, ΔTmeta zu definieren als der Verzögerungswert, der die Schaltung in das metastabile Gleichgewicht zwingt. Diese Definition kann als übermäßige Mathematisierung erscheinen, aber ihre Nützlichkeit wird offensichtlich, wenn wir die endliche Genauigkeit der Simulation (endlicher maximaler Zeitschritt) betrachten. Mit numerischen Experimenten können Sie selbst beweisen, dass für einen sehr kleinen Iterationsparameter in der '.step param ...'-Simulation die Schar der V(out)-Kurven bezüglich der Verzögerung ungeordnet wird: Mit zunehmender Verzögerung kann das endgültige Vout zuerst von NULL auf EINS, dann wieder auf NULL und dann wieder auf EINS schalten. Dieser Wert des „sehr kleinen Iterationsparameters“ hängt von der Genauigkeit der Simulation ab, nämlich dem maximalen Zeitschritt – je kleiner der Zeitschritt, desto kleiner sollte dieser „sehr kleine Iterationsparameter“ sein, obwohl der Faktor der Proportionalität (falls diese Parameter sind proportional) ist nicht so offensichtlich. Für die Simulationen der obigen Bilder, bei denen der maximale Zeitschritt 1fs beträgt, ist dieser Schwellenwert für einen Iterationsparameter des .step-Operators sehr kleiner Iterationsparameter' sein sollte, obwohl der Proportionalitätsfaktor (wenn diese Parameter proportional sind) nicht so offensichtlich ist. Für die Simulationen der obigen Bilder, bei denen der maximale Zeitschritt 1fs beträgt, ist dieser Schwellenwert für einen Iterationsparameter des .step-Operators sehr kleiner Iterationsparameter' sein sollte, obwohl der Proportionalitätsfaktor (wenn diese Parameter proportional sind) nicht so offensichtlich ist. Für die Simulationen der obigen Bilder, bei denen der maximale Zeitschritt 1fs beträgt, ist dieser Schwellenwert für einen Iterationsparameter des .step-Operators 10 22 . Für Iterationsparameterwerte kleiner als 10 22 , wird die Ordnung von Δt-parametrisierten Graphen in diesen 1fs-Zeitschrittsimulationen unterbrochen. Da der maximale Zeitschrittparameter die Simulationsentwicklung von Anfang an definiert, sollte die gesamte Aufgabe, die Simulation zu finden, die die maximale Metastabilitätsdauer demonstriert, mit einem konstanten maximalen Zeitschrittwert durchgeführt werden – Sie können den maximalen Zeitschritt nicht nach einem bestimmten sukzessiven Annäherungsschritt verringern und fortfahren mit dem nächsten Schritt Ihrer sukzessiven Approximationsmethode. Um die Dauer des metastabilen Gleichgewichts zu verlängern, müssen wir jedoch sowohl den Zeitschritt als auch die Verzögerungsgenauigkeit verringern. Ich hoffe, die Sinnlosigkeit dieser Berechnungen ist jetzt offensichtlich.

Ganz natürlich unterscheidet sich die V(out)-Spannung vom Wert für ein metastabiles Gleichgewicht des Inverterpaars, das sich "umarmt", da sich zwischen den bistabilen Paareingängen/-ausgängen im Latch Übertragungsgatter befinden (ohne zu erwähnen, dass I die Transistordimensionierung geändert, um die Darstellung zu erleichtern, und Vmeta für das Paar 20n/20n 50n/20n Vdd=1,2 ist jetzt Vmeta=0,65697159553).

Als Referenz ist hier ein Diagramm der Knotenspannungen für diese Simulation:

Latchmeta-Knotenspannungen