Login

Wertetabellen erstellen und lesen: So prüfst du logische Schaltungen

Mario ·

Ein Kollege hat dir eine Schaltung gezeichnet, die laut Aufgabe den Lüfter eines Serverschranks steuern soll. Auf dem Papier sieht sie plausibel aus. Aber tut sie auch in jedem Fall das Richtige? Um das sicher zu wissen, gehst du alle möglichen Eingangskombinationen durch und notierst, was die Schaltung jeweils ausgibt. Genau das leistet eine Wertetabelle.

In den Beiträgen zu den Logikgattern und zu UND, ODER, NICHT hast du kleine Wertetabellen bereits benutzt. Hier lernst du die Methode dahinter, damit du sie auch bei größeren Schaltungen anwenden kannst.

Was ist eine Wertetabelle?

Eine Wertetabelle, auch Wahrheitstabelle oder Funktionstabelle genannt, listet für jede mögliche Kombination der Eingänge den zugehörigen Ausgangswert auf. Bei einer logischen Schaltung ist das vollständig, denn die Zahl der Eingangskombinationen ist begrenzt. Bei n Eingängen gibt es 2n Zeilen:

Eingänge Zeilen
12
24
38
416
532

Die Tabelle wächst also schnell. Bei acht Eingängen sind es schon 256 Zeilen. Deshalb arbeitet man in der Praxis oft mit Gleichungen und rechnerischen Umformungen. Das ist Thema im Beitrag Boolesche Algebra. Für das Verständnis und für Prüfungsaufgaben ist die Wertetabelle trotzdem das sicherste Werkzeug.

Die Zeilen systematisch aufschreiben

Der häufigste Fehler beim Aufstellen einer Tabelle ist eine lückenhafte oder doppelte Zeile. Das vermeidest du, indem du die Eingangskombinationen als Binärzahlen hochzählst. Das Binärsystem aus dem Beitrag Binärsystem verstehen kommt hier direkt zum Einsatz.

Bei drei Eingängen A, B und C beginnst du mit 000 und zählst bis 111:

Zeile A B C
0000
1001
2010
3011
4100
5101
6110
7111

Dahinter steckt ein Muster, das du dir merken kannst:

  • Die letzte Spalte (C) wechselt in jeder Zeile: 0, 1, 0, 1 …
  • Die Spalte davor (B) wechselt alle zwei Zeilen: 0, 0, 1, 1, 0, 0, 1, 1.
  • Die erste Spalte (A) wechselt alle vier Zeilen: viermal 0, dann viermal 1.

Bei vier Eingängen kommt eine Spalte hinzu, die alle acht Zeilen wechselt. Mit dieser Methode stellst du sicher, dass keine Kombination fehlt und keine doppelt vorkommt. Die Zeilennummer in der ersten Spalte ist übrigens nichts anderes als der Dezimalwert der Bitfolge (zum Beispiel 110 = 6).

Das Zählmuster: C wechselt jede Zeile, B alle zwei Zeilen, A alle vier Zeilen.

Wertetabelle aus einer Gleichung erstellen

Gegeben ist die Funktionsgleichung:

Q = (A ∧ B) ∨ ¬C

Lies sie so: Q ist 1, wenn A und B beide 1 sind, oder wenn C nicht 1 ist. Wir erstellen die Tabelle in fünf Schritten.

  1. Eingänge zählen. Es sind drei, also gibt es 23 = 8 Zeilen.
  2. Spalten anlegen. Neben den Eingängen A, B, C und dem Ausgang Q legst du Spalten für Zwischenergebnisse an. Hier sind das A ∧ B und ¬C.
  3. Eingangskombinationen eintragen nach dem Zählmuster von oben.
  4. Teilausdrücke ausrechnen, Spalte für Spalte, von innen nach außen. Zuerst NICHT und UND in den Klammern, dann das ODER.
  5. Ausgang eintragen und das Ergebnis mit der Gleichung gegenprüfen.
A B C A ∧ B ¬C Q
000011
001000
010011
011000
100011
101000
110111
111101

Die Zwischenspalten sind der Trick, der Flüchtigkeitsfehler verhindert. Wer alles in einem Schritt im Kopf rechnet, vertut sich bei drei Eingängen schnell.

Beim Lesen der Tabelle fällt etwas auf: Q ist nur in drei Zeilen 0, nämlich dann, wenn C = 1 ist und nicht gleichzeitig A und B 1 sind. In allen anderen Fällen ist Q = 1.

Jede Zwischenspalte der Tabelle entspricht einer Leitung im Schaltplan.

Gleichung aus einer Wertetabelle ableiten

In Prüfungen und beim Entwurf wird oft die Gegenrichtung verlangt: Die Tabelle ist gegeben, die Schaltung fehlt. Dafür gibt es ein einfaches Verfahren, das die disjunktive Normalform (DNF) liefert:

  1. Suche alle Zeilen, in denen Q = 1 ist.
  2. Bilde für jede dieser Zeilen einen UND-Term, in dem alle Eingänge vorkommen. Ist ein Eingang in der Zeile 1, schreibst du ihn unverändert, ist er 0, schreibst du ihn negiert. Solche UND-Terme heißen Minterme.
  3. Verknüpfe alle Minterme mit ODER.

Als Beispiel nehmen wir eine Mehrheitsentscheidung: Der Ausgang soll 1 sein, wenn mindestens zwei der drei Eingänge 1 sind. Sie kommt zum Einsatz, wenn drei redundante Sensoren denselben Wert messen und die Mehrheit gelten soll.

A B C Q Minterm
0000
0010
0100
0111¬A ∧ B ∧ C
1000
1011A ∧ ¬B ∧ C
1101A ∧ B ∧ ¬C
1111A ∧ B ∧ C

Alle vier Minterme mit ODER verknüpft ergeben die Gleichung:

Q = (¬A ∧ B ∧ C) ∨ (A ∧ ¬B ∧ C) ∨ (A ∧ B ∧ ¬C) ∨ (A ∧ B ∧ C)

Das ist korrekt, aber unhandlich. Mit den Rechenregeln der Booleschen Algebra lässt sie sich auf Q = (A ∧ B) ∨ (A ∧ C) ∨ (B ∧ C) vereinfachen. Wie das geht, zeigt der nächste Beitrag. Eine einfachere Gleichung bedeutet weniger Gatter in der Schaltung.

Schaltungen vergleichen: Sind zwei Ausdrücke gleich?

Wertetabellen helfen auch bei der Frage, ob zwei unterschiedlich aussehende Ausdrücke dasselbe leisten. Haben sie in jeder Zeile denselben Ausgang, sind sie gleichwertig.

Ein klassisches Beispiel: Sind ¬(A ∧ B) und ¬A ∨ ¬B dasselbe?

A B A ∧ B ¬(A ∧ B) ¬A ¬B ¬A ∨ ¬B
0001111
0101101
1001011
1110000

Die Spalten für ¬(A ∧ B) und ¬A ∨ ¬B sind identisch: 1, 1, 1, 0. Beide Ausdrücke sind also gleichwertig. Das ist übrigens eine der de-morganschen Regeln, auf die wir im Beitrag zur Booleschen Algebra zurückkommen.

Praxisbeispiel: Die Lüftersteuerung im Serverschrank

Ein Serverschrank hat zwei Temperatursensoren, T1 und T2. Sie liefern eine 1, wenn die jeweilige Schwelle überschritten ist. Der Lüfter soll auf volle Drehzahl laufen (Q = 1), wenn mindestens einer der Sensoren auslöst, es sei denn, der Wartungsmodus W ist aktiv. Dann bleibt der Lüfter auf normaler Drehzahl, damit die Techniker nicht vom Lärm gestört werden.

Q = (T1 ∨ T2) ∧ ¬W

Aus dieser Gleichung entsteht die Tabelle:

T1 T2 W T1 ∨ T2 ¬W Q
000010
001000
010111
011100
100111
101100
110111
111100

Beim Prüfen der Tabelle siehst du sofort, ob das Verhalten stimmt. Der Lüfter läuft auf voller Drehzahl in genau drei Fällen, nämlich wenn der Wartungsmodus aus ist und mindestens ein Sensor auslöst. Und bei aktivem Wartungsmodus bleibt er immer ruhig, auch bei überhitzten Sensoren. Ob das gewollt ist, solltest du hier hinterfragen. Eine solche Lücke fällt auf, wenn man alle Zeilen durchgeht, und kaum, wenn man nur die Schaltung ansieht. Es spricht einiges dafür, bei sehr hoher Temperatur den Wartungsmodus zu übersteuern.

Wertetabellen mit Python erzeugen

Bei vielen Eingängen hilft ein kleines Skript. Der folgende Code erzeugt die Tabelle für Q = (A ∧ B) ∨ ¬C automatisch. Die Funktion product liefert alle Kombinationen genau in der Reihenfolge des Zählmusters.

from itertools import product

print("A B C | Q")
for a, b, c in product([0, 1], repeat=3):
    q = int((a and b) or (not c))
    print(a, b, c, "|", q)

Der Code gibt acht Zeilen aus, die mit der Tabelle oben übereinstimmen sollten. Die Bedingung steht in der Zeile mit q = …. Möchtest du eine andere Funktion prüfen, änderst du nur diesen Ausdruck. Mit repeat=4 hättest du vier Eingänge und 16 Zeilen.

Sonderfall: Kombinationen, die nie vorkommen

Manchmal sind nicht alle Eingangskombinationen möglich. Ein Beispiel: Vier Bit stellen eine Dezimalziffer von 0 bis 9 dar. Die Kombinationen für 10 bis 15 treten nie auf. In der Wertetabelle trägt man für diese Zeilen ein X ein. Man nennt sie „Don’t Care“, also „egal“. Für sie ist es gleichgültig, was die Schaltung ausgibt, und der Entwerfer kann den Wert so wählen, dass die Schaltung einfacher wird.

Typische Fehler

  • Zeilen unsystematisch schreiben. Wer kreuz und quer notiert, vergisst Kombinationen oder schreibt sie doppelt. Zähle immer binär hoch.
  • Keine Zwischenspalten. Bei mehr als zwei Verknüpfungen ist das die häufigste Fehlerquelle.
  • Negation vergessen. Bei ¬C musst du den Wert umkehren, bevor du weiterrechnest.
  • Vorrang ignorieren. NICHT vor UND vor ODER. Klammern gehen immer vor.
  • Minterm falsch bilden. Eine 0 in der Eingangsspalte bedeutet, dass der Eingang im Minterm negiert wird.

Zum Üben

  1. Wie viele Zeilen hat die Wertetabelle einer Schaltung mit fünf Eingängen?
  2. Stelle die Wertetabelle für Q = A ∧ ¬B auf.
  3. Stelle die Wertetabelle für Q = ¬A ∨ B auf.
  4. Die Tabelle einer Schaltung mit zwei Eingängen hat Q = 1 genau in den Zeilen 01 und 10. Wie lautet die Gleichung als DNF? Welches Gatter kennst du dafür?
  5. In welchen Zeilen ist der Ausgang der Schaltung Q = (A ∧ B) ∨ ¬C gleich 0? Beschreibe die Bedingung in Worten.
  6. Prüfe mit einer Tabelle, ob ¬(A ∨ B) und ¬A ∧ ¬B gleichwertig sind.

Lösungen: (1) 25 = 32 Zeilen. (2) Q = 1 nur bei A = 1 und B = 0, sonst 0, also 0, 0, 1, 0 in der Reihenfolge 00, 01, 10, 11. (3) Q ist 1, 1, 0, 1 in der Reihenfolge 00, 01, 10, 11. Nur bei A = 1 und B = 0 ist Q gleich 0. (4) Q = (¬A ∧ B) ∨ (A ∧ ¬B), das ist das XOR-Gatter. (5) Q ist 0 in den Zeilen 001, 011 und 101, also wenn C = 1 ist und nicht beide Eingänge A und B 1 sind. (6) Beide liefern in den Zeilen 00, 01, 10, 11 die Werte 1, 0, 0, 0. Sie sind also gleichwertig.

Das solltest du dir merken

  • Eine Wertetabelle listet für jede Eingangskombination den Ausgang auf. Bei n Eingängen sind es 2n Zeilen.
  • Zähle die Eingangskombinationen binär hoch. So fehlt keine Zeile und keine kommt doppelt vor.
  • Arbeite mit Zwischenspalten, von innen nach außen.
  • Aus einer Tabelle erhältst du die Gleichung, indem du für jede Zeile mit Q = 1 einen Minterm bildest und alle mit ODER verknüpfst.
  • Zwei Ausdrücke sind gleichwertig, wenn ihre Wertetabellen übereinstimmen.
  • Bei Don’t-Care-Zeilen darfst du den Ausgang frei wählen.

Mit den Tabellen kannst du Schaltungen prüfen. Wie du sie rechnerisch vereinfachst, ohne jedes Mal alle Zeilen aufzuschreiben, erfährst du im nächsten Beitrag: Boolesche Algebra verstehen.

Weiterlesen