Lernen › Thema 12
Zeitdiagramme, Glitches und statische Hazards
8 Min. Lesezeit · bitGateLab-Team
Auf dem Papier reagiert ein Gatter sofort; in Wirklichkeit braucht jedes Gatter einige Nanosekunden. Dieser Unterschied spielt in der Wahrheitstabelle fast nie eine Rolle, im Zeitdiagramm aber sehr wohl: Zwei Pfade mit unterschiedlichen Laufzeiten können falsche Impulse erzeugen, sogenannte Glitches, die einen Zähler weiterschalten oder ein Latch auslösen, obwohl sie das nicht sollten. Hier lernst du, ein Zeitdiagramm zu lesen, Laufzeiten zu berechnen und statische Hazards mit dem Karnaugh-Diagramm zu erkennen und zu beseitigen.
Wie man ein Zeitdiagramm liest
Ein Zeitdiagramm zeichnet jedes Signal als Linie, die über einer gemeinsamen horizontalen Zeitachse nach oben (1) oder nach unten (0) geht. Eine gedachte senkrechte Linie zu einem beliebigen Zeitpunkt liefert dir den Wert aller Signale. Die Flanken der Eingänge sind die Ursachen; der Abstand zwischen einer Eingangsflanke und der Änderung, die sie am Ausgang bewirkt, ist die Laufzeit. Lies in getakteten Schaltungen die Werte kurz vor jeder aktiven Flanke ab, denn dann tasten die Flipflops ab.
Signallaufzeit und kritischer Pfad
Die Signallaufzeit ist die Zeit zwischen einer Änderung am Eingang und der daraus folgenden Änderung am Ausgang, gemessen zwischen den 50-%-Punkten der beiden Übergänge. Man unterscheidet zwei Werte:
- tPLH: Laufzeit, wenn der Ausgang von Low auf High wechselt.
- tPHL: Laufzeit, wenn der Ausgang von High auf Low wechselt.
In der 74HC-Familie liegen die Laufzeiten eines einfachen Gatters bei 5 V Versorgung in der Größenordnung von 10 ns; sie nehmen mit der kapazitiven Last und bei sinkender Versorgungsspannung zu.
Die Laufzeit einer Schaltung ist die des langsamsten Pfads zwischen irgendeinem Eingang und dem Ausgang, des kritischen Pfads. Man berechnet sie, indem man die Laufzeiten der Gatter jedes Pfads addiert und den größten Wert nimmt.
Beispiel: F = A·B + A·C mit tNOT = 5 ns, tAND = 10 ns und tOR = 10 ns.
- Pfad von B oder von C: AND + OR = 20 ns.
- Pfad von A über das obere AND: AND + OR = 20 ns.
- Pfad von A über den Inverter: NOT + AND + OR = 25 ns.
Der kritische Pfad ist der von A über den Inverter, mit 25 ns. Keine Eingangsänderung braucht länger, bis F stabil ist.
Glitches und statische Hazards
Ein statischer 1-Hazard liegt vor, wenn der Ausgang während einer Eingangsänderung auf 1 bleiben sollte, aber kurzzeitig auf 0 fallen kann. Ein statischer 0-Hazard ist das Gegenteil: Der Ausgang sollte auf 0 bleiben und liefert eine kurze Spitze auf 1. Beide entstehen, wenn eine Variable und ihr Komplement den Ausgang über Pfade mit unterschiedlicher Laufzeit erreichen.
Nimm die Schaltung aus dem vorigen Beispiel mit B = C = 1. Logisch gilt immer F = A + A = 1. Wenn A aber von 1 auf 0 fällt, schaltet der Term A·B ab, bevor A·C einschaltet, weil A erst durch den Inverter muss.
Zeitlicher Ablauf des Glitches (B = C = 1, A fällt bei t = 0):
- t = 5 ns: Der Inverter zieht A auf High.
- t = 10 ns: Der Ausgang des AND für A·B fällt (Reaktion auf die Änderung von A bei t = 0).
- t = 15 ns: Der Ausgang des AND für A·C steigt (Reaktion auf die Änderung von A bei t = 5).
- Zwischen 10 und 15 ns sind beide Eingänge des OR gleich 0. Das OR reagiert 10 ns später: F ist von t = 20 bis t = 25 ns gleich 0.
Die Breite des Glitches ist der Laufzeitunterschied zwischen den beiden Pfaden: 5 ns, die Laufzeit des Inverters. Wenn A steigt, schaltet A·B bei t = 10 ein und A·C bei t = 15 ab; in diesem Intervall sind beide 1, und es entsteht kein Glitch.
Es gibt auch dynamische Hazards: Der Ausgang sollte nur einmal wechseln und wechselt drei- oder mehrmals (zum Beispiel 1 → 0 → 1 → 0). Sie treten in mehrstufiger Logik auf, in der dieselbe Variable drei oder mehr Pfade mit unterschiedlicher Laufzeit hat.
Hazards mit Karnaugh erkennen und beseitigen
Im Karnaugh-Diagramm einer Summe von Produkten zeigt sich ein statischer 1-Hazard, wenn zwei Felder mit 1 benachbart sind, aber von verschiedenen Blöcken überdeckt werden und kein Block beide überdeckt. Von einem Feld zum anderen zu wechseln bedeutet, eine einzige Variable zu ändern, und während dieser Änderung „springt“ die Schaltung von einem Term zum anderen.
Die Lösung besteht darin, den Konsensterm hinzuzufügen: einen zusätzlichen Block, der beide Felder überdeckt. Logisch gesehen ist er redundant (er ändert die Wahrheitstabelle nicht), aber er hält den Ausgang während des Übergangs auf 1.
Beispiel: F = A·B + A·C.
- A·B überdeckt die Felder ABC = 110 und 111. A·C überdeckt 001 und 011.
- Die Felder 011 und 111 sind benachbart (nur A wechselt) und liegen in verschiedenen Blöcken: Das ist der Hazard, den wir gesehen haben, mit B = C = 1.
- Der Block, der beide überdeckt, ist B·C, der Konsens von A·B und A·C: Man streicht die Variable, die in einem Term direkt und im anderen negiert vorkommt, und multipliziert den Rest.
- Hazardfreie Schaltung: F = A·B + A·C + B·C. Mit B = C = 1 ist der Term B·C die ganze Zeit 1, und das OR kann nicht mehr abfallen.
Für ein Produkt von Summen gilt die duale Überlegung: Man sucht benachbarte Nullen in verschiedenen Blöcken und fügt die Konsenssumme hinzu, um den statischen 0-Hazard zu beseitigen. Zum Beispiel hat F = (A + B)·(A + C) einen Hazard bei B = C = 0, und man behebt ihn durch den zusätzlichen Faktor (B + C).
Häufige Fehler
- Zu glauben, eine Schaltung mit korrekter Wahrheitstabelle könne nicht versagen: Die Tabelle sagt nichts über das Verhalten während der Übergänge.
- Beim Vereinfachen den Konsensterm zu streichen, „weil er überflüssig ist“, und zwar in einer Schaltung, die einen Takt oder einen Reset speist.
- Die Laufzeiten aller Gatter der Schaltung zu addieren statt nur die des langsamsten Pfads.
- Zu glauben, der Konsensterm beseitige Glitches, wenn sich zwei Eingänge gleichzeitig ändern: Er deckt nur Änderungen einer einzelnen Variablen ab.
Probiere es im Simulator aus
Im Zeitdiagramm kannst du die Spitze sehen und beobachten, wie sie verschwindet, sobald du den Konsensterm hinzufügst.
- Platziere einen Inverter, zwei AND und ein OR und baue F = A·B + A·C auf.
- Lege B = 1 und C = 1 fest und verbinde A mit einem Eingang, den du umschalten kannst, oder mit einem langsamen Taktsignal.
- Öffne das Zeitdiagramm und schalte A mehrmals von 1 auf 0; beobachte F im Moment des Übergangs und ob ein kurzer Impuls oder ein Glitch-Hinweis erscheint.
- Füge ein drittes AND mit B·C hinzu und führe es ebenfalls auf das OR.
- Wiederhole die Änderung von A und beobachte, dass F auf 1 bleibt.
Übungen
- Finde den statischen Hazard von F = A·C + B·C und schreibe die hazardfreie Version auf.
Lösung
A·C überdeckt 100 und 110; B·C überdeckt 011 und 111. Die Felder 110 und 111 sind benachbart (C wechselt) und liegen in verschiedenen Blöcken, mit A = B = 1. Konsens: A·B. F = A·C + B·C + A·B.
- In der Schaltung aus Übung 1, mit tNOT = 4 ns, tAND = 8 ns und tOR = 8 ns, A = B = 1: Bei welchem Übergang von C tritt der Glitch auf, wann und wie lange dauert er?
Lösung
Wenn C bei t = 0 fällt: B·C fällt bei t = 8, C steigt bei t = 4 und A·C steigt bei t = 12. Zwischen 8 und 12 ns sieht das OR zwei Nullen, F ist also von t = 16 bis t = 20 ns gleich 0: 4 ns. Wenn C steigt, gibt es keinen Glitch.
- Welches ist der kritische Pfad von F = A·C + B·C mit den Laufzeiten aus Übung 2?
Lösung
Von C über den Inverter: 4 + 8 + 8 = 20 ns.
- Welchen Wert sollte der Ausgang von F = (A + B)·(A + C) bei B = C = 0 haben, und welcher Glitch kann auftreten?
Lösung
Mit B = C = 0 gilt F = A·A = 0. Beim Wechsel von A kann eine kurze Spitze auf 1 auftreten (statischer 0-Hazard). Man beseitigt sie durch den zusätzlichen Faktor (B + C).