Metastabilität
Als Metastabilität (auch Quasistabilität) bezeichnet man im Bereich der Digitaltechnik einen temporären Zustand von FlipFlops oder kombinatorischer Schaltungsteile, der durch das Ändern eines Eingangssignals verursacht wird. Er ist in gewissem Sinne der Sonderfall der allgemeinen Instabilität von Schaltungen.
Instabilität
Ändern sich bei einer kombinatorischen Schaltung einer oder mehrere Eingänge, so reagieren die davon abhängigen Ausgänge erst mit einer gewissen Verzögerung, die von der Komplexität und Tiefe der Schaltung abhängig ist. Während dieser Zeitspanne ist die Schaltung instabil und der Zustand muss solange als logisch undefiniert erachtet werden, bis alle Ausgänge und damit die gesamte Schaltung vollständig eingeschwungen ist.
Bei FlipFlops, bei denen sich mit dem Takt gleichzeitig auch die Eingänge ändern, führt dies zunächst dazu, daß der Ausgang eines FFs einen nicht vorhersehbaren Zustand einnimmt, der entweder den alten, oder den neuen Zustand des Eingangs widerspiegelt, was von den Setup und Hold-Zeiten bedingt wird. Dieser Zustand bleibt dann für einen Takt erhalten und schwingt nicht mehr, wie reine Kombinatorik ein. Dies bringt zwar eine zeitliche Unsicherheit in den Datenfluss, da nicht mehr exakt vorhergesagt werden kann, welchen Zustand der Ausgang tatsächlich haben wird, führt aber zu einem stabilen und damit von nachfolgenden Schaltungsteilen weiterverwertbaren Signal. Bezogen auf die diskreten Zeitabläufe in der Schaltung werden die Eingänge damit synchronisiert.
Es gibt aber eine Ausnahme:
Metastabilität
In seltenen Fällen geschieht das sampeln der Eingänge so ungünstig, daß das FF nicht sofort eindeutig schaltet, sondern sich längere Zeit in einem Zwischenzustand aufhält, bevor es endgültig in einen stabilen Zustand gerät. Der Vorgang ist vergleichbar mit einer Münze, welche zunächst auf der Kante stehenbleibt, bevor sie fällt. Diese sogenannte Metastabilität ist an sich noch kein Problem, sie führt jedoch im Weiteren dazu, daß auch nach nachfolgende Schaltungsteile, die von diesem FF gespeist werden, verspätet einschwingen, wodurch nachgeschaltete FFs u.U. ihrerseits wieder wechselnde Signale zum Zeitpunkt der Taktflanke sehen. Damit tauchen instabile Signalzustände in Schaltungsbereichen auf, für die volle Synchronität angenommen wurde. Das Stabilisieren des Signals durch Eintakten hat also nicht wie gewünscht funktioniert. Der eigentlich "gewollte" Schaltungszustand des Teilsystems wird dann meist erst wieder bei der kommenden Taktflanke erreicht, was speziell bei Bussen zu inkonsistenten Daten führen kann, wenn einzelne Bits früher übernommen werden, als andere. Auch bei Reset-Vorgängen taucht das Problem auf. Somit wird das Gesamtsystems inkonsistent und arbeitet falsch.
Problembehandlung
Die gegebene Maßnahme gegen Metastabilität ist das Einsynchronisieren potentiell zur Taktfanke wechselnder Signale durch direkt kaskadierte FFs ohne Kombinatorik dazwischen, da dann ein solcher metastabiler Zustand extrem lange anhalten müsste, um noch im nächsten FF zu einem Problem werden zu können. Bereits bei einer FF-Stufe jedoch ist ein ausdrücklich metastablier Zustand schon extrem unwahrscheinlich, da die heutigen Chiptechnologien sehr hohe Verstärkungen (-> steile Übertragungskennlinien) gestatten, die zu extrem geringen Zeiten der Metastabilität führen. Auf das Beispiel mit der Münze bezogen, wäre dies eine nahezu spitze Kante.
Hersteller geben hier je nach Technologie typische Verzögerungen von einigen 10−100ps an, bei einer Wahrscheinlichkeit von kleiner 10−12 für das Auftreten überhaupt.
In Hochgeschwindigkeitsschaltungen, in denen aufgrund der geringen Periodenzeit nur eine geringe Toleranz gegenüber unerwarteten Schaltverzögerungen besteht, werden diesbezüglich kritische Signale denoch mehrfach kaskadiert, weil sich so die Wahrscheinlichkeit exponenziell reduziert und man am Ausgang der FF-Kaskade mit höchster Sicherheit einen völlig stabilen Zustand erwarten kann.
Es bleibt dann lediglich das typische Problem des unbekannten Zeitpunktes der Takt- bzw. Datenübernahme.