Hazard (Logikschaltungen)

Aus testwiki
Zur Navigation springen Zur Suche springen

Vorlage:QS-Antrag Der Begriff Hazard stammt aus dem englischen Sprachraum und beschreibt eine mögliche Ursache für Schadensereignisse. In dem hier beschriebenen Stoffgebiet der Logikschaltungen, deren mathematische Beschreibung auf der von Claude Shannon entwickelten Schaltalgebra, aufbauend auf der booleschen Algebra, beruht, gibt es ebenfalls Hazards. Dies sind Eigenschaften der Schaltfunktionen (boolesche Funktionen), die unter ungünstigen Umständen zu fehlerhaften Ausgabesignalen bei Änderung von Eingabesignalen führen können. Dies beruht darauf, dass die Ausbreitungsgeschwindigkeit von Signaländerungen auf Signalleitungen endlich ist und die Umschaltvorgänge in Logikbausteinen, die die Schaltfunktionen realisieren, nicht wie idealerweise angenommen instantan erfolgen, sondern Verzögerungszeiten beinhalten. Dies führt auf kritischen Signalpfaden zu Wettläufen sich ändernder Signale (englisch „critical race“), die am Schaltungsausgang zu fehlerhaften Impulsen oder Glitches führen können. Der Hazard ist eine Eigenschaft eines Schaltnetzes, die keine hinreichende Bedingung für das Auftreten von Fehlern bei Änderung der Eingangssignale eines entsprechenden realen Schaltkreises darstellt[1].

Man unterscheidet zwischen strukturellen Hazards (Logikhazards) und funktionalen Hazards (Funktionshazards). Ein Glitch kann das kurzzeitige, vom logischen Entwurf der Schaltfunktion abweichende Auftreten eines logischen „1“-Signals (0-Hazard) am Schaltungsausgang während eines Eingangssignalwechsels sein, oder der kurzzeitige Zusammenbruch eines logischen „1-Signals“ (1-Hazard) auf den logischen Wert „0“. Außerdem unterscheidet man zwischen statischen und dynamischen Hazards. Statisch heißt ein Hazard, wenn die logischen Pegel des Ausgangs vor und nach der Änderung der Eingangssignale gleich sein sollen und dynamisch, wenn der logische Ausgangspegel sich ändern soll[1].

In rein kombinatorischen asynchronen Schaltnetzen können Glitches aufgrund von Hazards zu keinen dauerhaften Störungen führen. In sequentiellen Schaltungen (Schaltwerk), die Speicher wie Flip-Flops beinhalten, können diese fehlerhaften Impulse jedoch gespeichert werden und dadurch das Schaltwerk dauerhaft fehlsteuern. Dies ist ein Problem in allen Arten von Digitalrechnern oder Prozesssteuerungen, so dass dort in der Regel alle Eingangssignalwechsel synchronisiert werden (synchrone Schaltwerke). Es wird dabei ein Taktsignal (englisch „Clock“) verwendet, das eine Änderung von Ausgangssignalwechseln bis zum Abklingen der kritischen Wettläufe der Eingangsvariablen verzögert. Dadurch wird die Arbeitsgeschwindigkeit eines synchronen Schaltnetzes gegenüber der eines asynchronen Schaltnetzes herabgesetzt. Dies hat man bei Digitalrechnern in der Vergangenheit durch ständige Verringerung der Schaltverzögerungen von Logikschaltungen bei gleichzeitiger Erhöhung der Taktraten der Prozessoren deutlich verbessern können. So verwendete der Prozessor des Intel 8080A im Jahr 1973 eine Taktfrequenz von 2 MHz, im Jahr 2024 arbeitet der Intel Core i9 mit einer Taktfrequenz von 3–5,8 GHz, einer Steigerung um das mehr als Tausendfache.

Hazardursachen

Schaltfolgediagramm von elektronischen Bauelementen a) ideal b) real c) Schalten nachfolgender Elemente

In elektrotechnischen Realisierungen von Schaltfunktionen werden kontaktlose Logikgatter oder kontaktbehaftete mechanische Schalteinrichtungen wie Relais oder Schütze verwendet. Wegen der sehr unterschiedlichen Schaltzeiten solcher technischer Bauelemente besitzen diese ein stark voneinander abweichendes Verzögerungsverhalten. Der Vorteil digitaler gegenüber analoger Signalverarbeitung ist ja, dass es nur zwei deutlich voneinander verschiedene Signalzustände mit den Werten „0“ und „1“ gibt, was die Anfälligkeit für Signalstörungen stark reduziert. Bei einer den booleschen Gesetzen gehorchenden Schaltfunktion sind die Beziehungen zwischen Ein- und Ausgangsgrößen statisch; die in der Dynamik bestimmende Größe Zeit t spielt keine Rolle und Signalübergänge finden idealisiert ohne Verzögerung statt.

Bei realen Bauelementen, die solche Schaltfunktionen technisch realisieren, ist das zeitliche Verhalten aber anders. Im Bild ist ein Schaltfolgediagramm eines Signalwechsels dargestellt[2]. Ein Schaltfolgediagramm beschreibt den Wechsel digitaler Signale zwischen den unterschiedlichen Logikpegeln in Abhängigkeit von der Zeit t. In Teilbild a) ist ein ideales, digitales Signal dargestellt, das anfangs vom Signalpegel „0“ auf den Signalpegel „1“ springt und später wieder zurückspringt. Im Teilbild b) ist das Schaltverhalten eines realen elektronischen Bauelementes dargestellt. Der logische Wert „0“ wird hier von einem Signalpegel kleiner als U0max und der logische Wert „1“ von einem Signalpegel größer U1min repräsentiert. Spannungspegel dazwischen werden als „verbotener Bereich“ bezeichnet, was bedeutet, dass für Eingangspegel in diesem Bereich der Ausgangspegel eines Logikbausteins nicht definiert ist. Die ansteigende und die abfallende Flanke eines realen Signalwechsels sind mit Verzögerungszeiten tein und taus verbunden, deren Dauer (Gatterlaufzeit) von der verwendeten Halbleitertechnologie des Logikbausteins abhängt. Während eines Signalwechsels durchläuft der Spannungspegel am Eingang den verbotenen Bereich und der Wechsel am Ausgang wird dadurch um ein bestimmtes Zeitintervall verzögert. Wann der Flankenwechsel an einem nachfolgenden Logikgatter erfolgt, ist wie in Teilbild c) dargestellt, variabel und relativ unbestimmt. Neben den Verzögerungszeiten der Logikgatter spielen auch die Laufzeiten auf den verbindenden Signalleitungen zwischen Logikbausteinen eine Rolle.

Während die Schaltverzögerungen von Logikgattern in Schottky-TTL-Technik im Bereich von 3 ns liegen, haben Relais durchaus Schaltverzögerungen im Bereich von 100 ms und mehr. Hier sind die Gefahren von Hazards von hoher Bedeutung.

Logische Hazards

Logische Hazards beruhen auf einem fehlerhaften Logikentwurf für eine Schaltfunktion. Aufgrund dessen kommt es in der Regel zu einem kritischen Wettlauf zwischen einer Eingangsvariablen xi und ihrem Komplement x¯i. Ein Beispiel für einen solchen kritischen Wettlauf ist im nachfolgenden Bild für die Schaltfunktion z=(x1x2)(x¯2x3) dargestellt. Links befindet sich das zur Schaltfunktion gehörende Karnaugh-Veitch-Diagramm (KV-Diagramm) für die drei Eingangsvariablen x1, x2 und x3. Es enthält in den Feldern die Werte der Ausgangsgröße z für alle möglichen Kombinationen des Eingangsvektors x=(x1,x2,x3). Zur Kennzeichnung der Felder des Diagramms ist jeweils in der linken oberen Ecke jedes Feldes als rote Zahl das sogenannte „Dezimaläquivalent“ der Eingangsvariablen dargestellt. Dies erhält man, wenn man die Belegung der Eingangsvariablen als Dualzahl interpretiert und diese in eine Dezimalzahl wandelt. Um beispielsweise das Dezimaläquivalent „5“ zu erhalten, muss der Eingangsvektor wie folgt belegt sein: x=^(x120,x221,x322)=(11,02,14)=101Dual=5Dezimal. Ebenfalls im KV-Diagramm sind zwei Schleifen für die beiden Minterme der Schaltfunktion durch blaue Umrandung markiert.

Rechts daneben ist das zugehörige Schaltnetz mit Logikgattern dargestellt, wobei die vier Logikbausteine mit g1, ..., g4 nummeriert sind.

Schaltfunktion und KV-Diagramm mit zugehörigem Schaltnetz
Schaltfolgediagramm für den Übergang (1,1,1) - > (1,0,1)

Den statischen logischen 1-Hazard der Schaltfunktion erkennt man im KV-Diagramm daran, dass der Übergang bei einem Eingangssignalwechsel zwischen zwei benachbarten Belegungen mit dem Ausgangswert z = 1 von keinem Primimplikanten überdeckt wird. Benachbart bedeutet dabei, dass die Belegungen des Eingangsvektors sich in genau einer Komponente (hier x2) unterscheiden. Ein solcher Hazard-Übergang ist der zwischen den Belegungen mit den Dezimaläquivalenten 5 und 7. Aufgrund dieses Hazards kann am Ausgang der Schaltungsrealisierung (Logikgatter g4) beim entsprechenden Übergang ein fehlerhafter Einbruch des 1-Signals (Glitch) auftreten. Liegt nämlich am Eingang der Schaltung die Belegung x=(x1,x2,x3)=(1,1,1) =^ 7 und wechselt man die Belegung auf x=(x1,x2,x3)=(1,0,1) =^ 5, so ändert die Variable x2 ihren Wert. Die Schaltgatter g1 - g4 verzögern jede Änderung einer Variablen um ein bestimmtes Zeitintervall Δt, das hier vereinfachend für alle Gatter als gleich angenommen wird. Im nebenstehenden Schaltfolgediagramm ist die Schaltfolge an den Eingängen, den Logikgattern und dem Ausgang beim Übergang des Eingangsvektors (1,1,1)(1,0,1) =^ 75 dargestellt. Der Inverter g3 zur Negierung von x2 verzögert den Wechsel des Signals um Δt, wodurch der Ausgang des Und-Gatters g2 den Wert „1“ erst um Δt nach dem Wechsel des Gatterausgangs von g1 übernimmt. Dadurch liegt für einen Zeitraum Δt an beiden Eingängen des Oder-Gatters g4 der Wert „0“ an, was einen Ausgang z = 0 zur Folge hat. Dieser kurzzeitige Impuls ist ein Glitch.

Betrachtet man den entgegengesetzten Übergang 57, so tritt durch die Verzögerung des Inverters an den Eingängen des Gatters g4 kurzzeitig die Belegung (g1,g2)=(1,1) auf, die den Ausgangswert z = 1 zur Folge hat. Dies entspricht dem statischen Funktionswert zu Anfang und Ende des Übergangs. Trotz des logischen Hazards in der Schaltfunktion läuft also der Übergang der Eingangsbelegung fehlerfrei ohne Glitch ab. Das fehlerhafte Verhalten des Schaltnetzes beim Vorhandensein eines logischen Hazards beruht demnach auf dem Wettlauf einer Variablenänderung mit der gegensinnigen Änderung ihres Komplementes auf zwei verschiedenen Signalpfaden. Verschiedene Signalpfade liegen dann vor, wenn von einem Divergenzpunkt A (fan-out point) aus ein Eingangssignal verschiedenen Gattern eines Schaltnetzes zugeführt wird. Von da aus laufen Signaländerungen auf verschiedenen Signalpfaden, die in der Regel auch verschiedene Verzögerungszeiten verursachen, zu einem Konvergenzpunkt (fan-in-point), an dem sie wieder zusammengefasst werden. Im Beispiel ist dies das Oder-Gatter g4 mit dem Ausgang z. Verläuft ein Wettlauf so, dass zeitweilig am Konvergenzpunkt Signale anstehen können, deren logische Verknüpfung einen vom statischen Wert des Ausgangssignals abweichenden Wert erzeugen können, so wird dieser Wettlauf als „kritisch“ (critical race) bezeichnet. Nur wenn ein Variablenwettlauf kritisch ausfallen kann, liegt im Schaltnetz ein Hazard vor.

Ein logischer Hazard einer Schaltfunktion kann jedoch durch einen geänderten logischen Entwurf beseitigt werden, was die Gefahr kritischer Wettläufe eliminiert. Im gezeigten Beispiel enthält die Schaltfunktion einen logischen 1-Hazard, da der Übergang 57 von keinem Primimplikanten überdeckt wird. Fügt man den Minterm x1x3 disjunktiv zur Schaltfunktion hinzu, so hält das realisierende Und-Gatter das 1-Signal während des Übergangs 57 statisch beim Wert 1. Ein Variablenwettlauf von x2 mit seinem Komplement kann dann in keinem Fall kritisch sein und der Hazard ist dadurch beseitigt.

Funktionshazards

Und-Gatter und äquivalente funktionshazardfreie Gatteranordnung

Hat man in obiger Beispielfunktion den logischen Hazard eliminiert, indem man die Schaltfunktion auf z=(x1x2)(x¯2x3)(x1x3) ändert, so können bei anderen Übergängen weitere Glitches auftreten, obwohl das Schaltnetz frei von logischen Hazards ist. Betrachtet man den Übergang 47, so sieht man, dass sich die zwei voneinander unabhängigen Variablen x1 und x2 gleichzeitig ändern müssen. Dabei kann es ebenfalls zu einem kritischen Wettlauf kommen, da ein tatsächlich gleichzeitiger mehrfacher Signalwechsel kaum möglich ist. Ändert sich beim doppelten Signalwechsel für den Übergang 47 zuerst x2 und dann x1, so liegt kurzzeitig am Eingang des Schaltnetzes die Belegung mit dem Dezimaläquivalent „6“ an, die den Ausgangswert z = 0 zur Folge hat. Obwohl der Ausgangswert zu Anfang und Ende des Übergangs den logischen Wert „1“ haben soll, kann daher kurzzeitig ein Zusammenbruch des Ausgangssignals (Glitch) auf den Wert „0“ stattfinden. Erfolgt jedoch zuerst die Änderung von x1 und dann die von x2, so liegt kurzzeitig die Belegung mit dem Dezimaläquivalent „5“ am Eingang des Schaltnetzes an, welche den Funktionswert z = 1 zur Folge hat, was dem statischen Funktionswert zu Anfang und Ende des Übergangs entspricht. Bei dem Übergang 47 enthält die Schaltfunktion einen Funktionshazard, der die Gefahr beinhaltet, das ein Variablenwettlauf unabhängiger Eingangsvariablen kritisch verlaufen kann. Ein solcher Funktionshazard ist an das gewünschte logische Verhalten des Schaltnetzes geknüpft und kann nicht durch eine Maßnahme wie beim logischen Hazard beseitigt werden. Eine Beseitigung wäre nur durch Änderung des logischen Verhaltens der Schaltfunktion möglich, was aber die Aufgabenstellung für das Schaltnetz ändern würde.

Schon die elementaren logischen Grundfunktionen wie die Und-Funktion (Konjunktion) enthalten Funktionshazards. Bei gleichzeitigem Signalwechsel der Eingangsvariablen eines Und-Gatters können bei einem kritischen Wettlauf 1-Glitche am Ausgang auftreten, wenn der Signalwechsel nicht absolut gleichzeitig erfolgt. In [1] wird eine Methode beschrieben, wie man die Fehlertoleranz bei Funktionshazards erhöhen kann, ohne gleichzeitig die logische Funktion ändern zu müssen. Die Methode beseitigt die Funktionshazards nicht, sondern verringert die Wahrscheinlichkeit des Auftretens kritischer Wettläufe. Im Bild wurde mit Hilfe des Simulationssystems 20-sim das dynamische Verhalten eines Und-Gatters (AND) und einer logisch äquivalenten Schaltfunktion aus drei Und-Gattern beim doppelten Signalwechsel der beiden Eingangssignale dargestellt. Diese topologische Anordnung von drei Und-Gattern (AND_1, AND_2, AND_3) hat als statische Logikfunktion die der Und-Funktion (AND). Durch die räumliche Anordnung wird die Eingangsvariable x1 zweimal und x2 einmal zugeführt. Dabei entsteht eine gestaffelte Verzögerungskette, in der der Wechsel von x1 für den Zeitpunkt des Wechsels von x2 um eine Gatterverzögerung Δt vorher (tt) und nachher (t+Δt) versetzt wird. Erfolgt daher der „gleichzeitige“ Flankenwechsel der Signale x1 und x2 um weniger als Δt gegeneinander versetzt, so bewirkt der Funktionshazard in besagtem Übergang keinen kritischen Wettlauf. Dies ist im Schaltfolgediagramm als simulierte Schaltfolge für ein „einfaches“ und ein wie beschrieben gestaffeltes „Und“ im Bild dargestellt. Beim gleichzeitigen Wechsel von x1 (10) und x2 (01) entsteht bei einem einfachen „Und“ am Ausgang z ein 1-Glitch aufgrund des vorhandenen Funktionshazards. Die dreifache Und-Gatter-Kombination arbeitet unter gleichen Bedingungen bei diesem Variablenwechsel fehlerfrei und zeigt auch sonst äquivalentes logisches Verhalten.

Fällt der Flankenwechsel der Eingangsvariablen um mehr als die Gatterverzögerung Δt auseinander, so bewirkt der Funktionshazard wiederum einen kritischen Wettlauf und der Glitch tritt auch hier auf. Man kann die Fehlertoleranz aber weiter erhöhen, indem man in die Signalpfade größere Verzögerungszeiten Δt einbaut.

Synchronisation

Synchronisation einer Verknüpfungsstufe mit Hilfe getakteter Ausgangsspeicher

Während Funktionshazards in asynchronen Schaltnetzen aufgrund von Glitches nur kurzzeitige Fehlfunktionen erzeugen, können solche Fehlerimpulse in asynchronen Schaltwerken zu dauerhaftem Fehlverhalten führen. Da Schaltwerke Speicher enthalten, die Schaltwerkszustände in der Vergangenheit speichern, kann auch ein fehlerhafter Impuls dauerhaft gespeichert werden und dadurch dem Schaltwerk einen falschen Zustand vortäuschen. Ein typisches Beispiel für ein solches Schaltwerk ist die arithmetisch-logische Einheit (ALU) eines Digitalrechners. Aufgrund der großen Wortbreite (16-Bit,..., 64-Bit) finden hier sehr viele mehrfache Signalwechsel an den Eingängen statt, die unweigerlich eine Vielzahl von Glitchen hervorrufen würden. Deswegen wurden schon in den ersten Digitalrechnern diese Schaltwerke nicht asynchron, sondern durch ein Taktsignal synchronisiert betrieben.

Im Bild ist eine kombinatorische Kette von logischen Verknüpfungsstufen dargestellt. Würde der Eingangsvektor x mit einer Wortbreite von 8,...,64 Bit sich in mehreren Komponenten gleichzeitig ändern, so würden an den Ausgängen aufgrund von Funktionshazards eine Vielzahl von Glitchen auftreten, die in nachgeschalteten Speicherelementen dauerhaft Fehler hinterlassen würden. Hier ist den Ausgängen eine entsprechende Anzahl taktgesteuerter Flip-Flops nachgeschaltet, die Änderungen an den Ausgängen von K1,...,Kn erst dann übernehmen, wenn das Taktsignal eintrifft. Dies erfolgt nach einer Verzögerungszeit die sicherstellt, dass alle Eingangssignaländerungen stattgefunden haben und die Signalverzögerungen auf kritischen Signalpfaden abgelaufen sind. Gesteuert durch das Taktsignal werden dann die Ausgangswerte des Vektors z weitergeschaltet und der nächsten Verarbeitungsstufe zugeführt. Dies findet in den Recheneinheiten von Digitalrechnern mehrfach hintereinander statt, was die Arbeitsgeschwindigkeit gegenüber der asynchronen Arbeitsweise deutlich herabsetzt, aber auch durch klar voneinander abgegrenzte Schritte das Laufzeitgeschehen überschaubar macht.

Literatur

  • Unger, Stephan: Asynchronous sequential switching circuits. Wiley-Interscience, 1969, ISBN 978-0-471-89632-6.
  • Eichelberger, E.B.:Hazard detection in combinational and sequential switching circuits. IBM Journal of Research and Development, 1965, DOI=10.1147/rd. 92.0090.

Einzelnachweise und Erläuterungen

  1. 1,0 1,1 1,2 Werner Roddeck: Mehrfacher Signalwechsel in Schaltnetzen und asynchronen Schaltwerken. Schriftenreihe des Lehrstuhls für Mess- und Regelungstechnik, Heft 10, Ruhr-Universität Bochum, 1977.
  2. Werner Roddeck: Einführung in die Mechatronik. Springer-Vieweg Verlag, Wiesbaden, 7. Auflage, 2023, ISBN 978-3-658-41949-3. S. 285