Als Hazard (engl.: "Gefahr, Risiko, Zufall") bezeichnet man die mögliche temporäre Verfälschung einer Booleschen Funktion in der Digitaltechnik während eines Schaltvorganges.
Entstehung
Signale bewegen sich in einer realen Schaltung mit einer endlichen Geschwindigkeit fort und werden auch in
Gattern verzögert, eventuell unterschiedlich lange. Daher können die Auswirkungen eines Signalwechsels zu unterschiedlichen Zeitpunkten an einem Gatter wirksam werden. Zwischen diesen Zeitpunkten tritt dann eventuell ein temporärer Schaltzustand ein, der nicht dem theoretisch erwarteten entspricht. Dieser Effekt führt zu einem fehlerhaften digitalen System und muss daher vermieden werden.
Beispiel
Schaltnetz_mit_hazard.png
Im nebenstehenden Beispiel wird dieser Effekt verdeutlicht. Die Eingänge
und
liegen konstant auf
1, während
von
1 auf
0 geschaltet wird. Theoretisch wäre zu erwarten, dass der Ausgang
von dem Schaltvorgang unbeeinflusst auf
1 bleibt, da vorher das obere
Und-Gatter eine
1 in einen Eingang des
Oder-Gatters liefert, danach das untere.
Schaltnetz_mit_hazard_wave.png
In der Praxis kann das aber anders aussehen: Vermutlich verlässt das geänderte Signal das Nicht-Gatter erst mit einer gewissen Verzögerung (Gatterlaufzeit), so dass ein instabiler Zwischenzustand entsteht, in dem das obere Und-Gatter bereits auf 0 geschaltet hat, während das untere noch nicht auf 1 umgeschaltet wurde. Als Folge liefert der Ausgang für kurze Zeit das Signal 0.
Funktionshazards
Funktionshazards entstehen durch einen gleichzeitigen Belegungswechsel von mehr als einer Variable. Diese Hazards können durch einen geeigneten Belegungswechsel (
Gray-Codierung), durch Taktung oder durch eine Verzögerung (RC-Glied am Ausgang) vermieden werden.
Strukturhazards
Strukturhazards entstehen bei Schaltungen mit mehr als einer Stufe durch den Wechsel von einem Block im
KV-Diagramm (=Gatter in der Schaltung) in einen angrenzenden Block (keine überlappende Blöcke im KV-Diagramm). Diese Hazards können vermieden werden durch die Realisierung redundanter Primkonjunktionen (überlappende Blöcke im KV-Diagramm) oder durch Taktung.
Gegenmaßnahmen
Es gibt 2 verschiedene Möglichkeiten das Auftreten eines Hazards zu vermeiden:
Angleichung der Verzögerungszeiten
Im vorliegenden Beispiel könnte dieses Vorgehen darin bestehen, in den oberen Zweig der vom Eingang
ausgehenden Leitung ein weiteres (funktionsloses) Gatter einzufügen, damit die Signaländerung die beiden Und-Gatter gleichzeitig erreicht. Dieses Verfahren ist allerdings mit einigen Unsicherheiten behaftet und liefert nicht sicher das gewünschte Ergebnis.
Systematische Vorgehensweise
Kvdiagramm_hazard.png |
Kvdiagramm_ohne_hazard.png
Die bessere Methode ist die systematische Vorgehensweise. Dazu optimiert man das
KV-Diagramm, das der betreffenden Schaltung zugrunde liegt. Das zum obigen Beispiel gehörende Diagramm zeigt zwei Blöcke, die durch die beiden Und-Gatter realisiert sind (
Disjunktive Normalform). Der Hazard entsteht beim Übergang zwischen diesen beiden Blöcken. Aufgelöst wird der Hazard, wenn man diesen Übergang mit einem weiteren, von der Logik her überflüssigen, Block überbrückt, der sich mit beiden Blöcken überlappt. In der resultierenden Schaltung muss dann entsprechend ein weiteres Und-Gatter eingefügt werden.
Schaltnetz_ohne_hazard.png
Weblinks
Strukturhazards zum ausprobieren
Funktionshazards zum ausprobieren
Digitaltechnik
Hazard (logic)