../../../icons/Logo.pngPraktische Elektronik

Zustandsmaschinen

Ein hochtrabender Begriff mit dem wir glänzen können: Zustandsmaschinen.

Dabei ist es ein einfaches Konzept, dynamische Digitalschaltungen zu beschreiben.

Einfach aber nicht simpel!

Als Praktiker beginnen wir mit einer Schaltung, die wir bereits kennen: einem Johnson-Zähler mit vier Zuständen.

Johnson-Zaehler-2.png
Bild 1: Johnson-Zähler mit vier Zuständen

Wir wollen das Prinzip verstehen und entfernen aus der Schaltung alles Überflüssige.

Johnson-Zustandsmaschine.png
Bild 2: Prinzip des Johnson-Zählers
  • Wir haben ein D-Register mit vier Ausgängen.
  • Die Zustände des Zählers sind die Ausgänge des D-Registers
  • Einige der Ausgänge (Q1, Q2) sind auf Eingänge (D1, D2) zurückgeführt.
  • Außerdem haben wir einen Takt.
  • Mit jedem Takt ändern sich die Zustände der Ausgänge.
  • Mit dem Reset wird das D-Register am Anfang auf Null gesetzt.

Wir haben in dem Praktikum Johnson-Zähler weitere Zähler realisiert, indem wir die Schaltung nur durch die Art der Rückführung der Ausgänge auf die Eingänge geändert haben.

Johnson-Zaehler.png
Bild 3: Johnson-Zähler mit acht Zuständen

Dieses können wir allgemeiner fassen:

Zustandsmaschine-Prinzip.png
Bild 4: Zähler mit X Zuständen

Das Verhalten des Zählers hängt offensichtlich von der Logik zwischen den Aus- und Eingängen des D-Registers ab.

Tatsächlich kann das Verhalten derartiger Schaltungen mit dieser Logik bestimmt werden.

Eine einfache Zustandsmaschine

Schaltungen wie in den Bildern 1 bis 4 werden als Zustandsmaschinen bezeichnet.

Die Schaltung nimmt eine Reihe von Zuständen ein, die sich durch einen Takt gesteuert ändern.

Wir werden im Folgenden eine einfache Beschreibung von Zustandsmaschinen betrachten und lernen, wie die zugehörige Logik bestimmt werden kann.

Wir beginnen mit unserem Johnson-Zähler, der von null bis drei zählt. Er zählt 0-1-2-3-0 immer im Kreis, zyklisch. Unser Zähler hat die Zustände 0, 1, 2, und 3. Beim Zählen geht er von einem Zustand zum nächsten: 0-1-2-3-0.

Wir haben damit zwei wichtige Begriffe einer Zustandsmaschine:

  • Zustände und
  • Übergänge

Die Zustandsmaschine unseres Zählers lässt sich graphisch darstellen:

Zustand-Zaehler_0-3.png
Bild 5: Das Zustandsdiagramm eines Zählers

Das Diagramm des Zählers in Bild 5 ist nichts besonders:

  • Die Zustände sind als Ellipsen mir dem Namen des Zustands und
  • die Übergänge als Pfeile dargestellt.

Realisierung einer Zustandsmaschine

Wenn wir von dem Zustandsdiagramm ausgehen, müssen wir als erstes den Zuständen im Zustandsdiagramm Zustände des D-Registers zuordnen. Im Prinzip müssen wir die Zustände des Diagramms digital kodieren.

Beim Johnson-Zähler sind das mit dem Zustand Z

Z Q4 Q3 Q2 Q1
0 0 0 0 0
1 0 0 0 1
2 0 0 1 1
3 0 0 1 0

Tabelle 1: Zustände des Johnson-Zählers

Die nächste Aufgabe ist, die Übergangstabelle aufzustellen.

Wir gehen von kodierten Zuständen aus und beschreiben die kodierten Zustände des folgenden Zustands im Zustandsdiagramm. Außerdem kürzen wir ab: Z ist der Zustand Z und U der Übergang.

Z Q4 Q3 Q2 Q1 U D4 D3 D2 D1
0 0 0 0 0 1 0 0 0 1
1 0 0 0 1 2 0 0 1 1
2 0 0 1 1 3 0 0 1 0
3 0 0 1 0 0 0 0 0 0

Tabelle 2: Übergangstabelle des Johnson-Zählers

Wir haben jetzt eine Logik, die wir mit den Methoden der Praktika Logik berechnen berechnen können.

Die Logik in Tabelle 2 ist einfach:

D1 = NOT Q2
D2 = Q1
D3 = 0
D4 = 0
  • Die Berechnung war natürlich einfach, da wir die Schaltung kannten.

Im Zuge dessen fällt uns auf, dass D3/Q3 und D4/Q4 überflüssig sind.

Zähler bis drei

Um das Prinzip besser zu verstehen betrachten wir einen Zähler, der bis drei zählt und dann stehen bleibt.

Zustand-Zaehler_0-3-3.png
Bild 6: Zustandsdiagramm eines Zählers bis 3

Wir stellen wieder die Übergangstabelle auf, allerdings ohne die überflüssigen D3/Q3 und D4/Q4. Wir kürzen außerdem ab: Z ist der Zustand und U der Übergang.

Z Q2 Q1 U D2 D1
0 0 0 1 0 1
1 0 1 2 1 1
2 1 1 3 1 0
3 1 0 3 1 0

Tabelle 3: Übergangstabelle für den Zähler bis 3

Die Tabelle beschreibt zwei logische Funktionen: die für D1 und die für D2.

Die NAND-Schaltung für die logischen Funktionen können mit dem Verfahren in Logische Schaltung und Wahrheitstabelle bestimmt werden. Oder mit dem Tool LogicBuddy.

  • Durch scharfes Hingucken sehen wir:
  • D1 ist immer 1, wenn Q2 0 ist und
  • D2 ist 1, wenn Q1 oder Q2 1 sind.

Also

D1 = NOT Q2
D2 = Q1 or Q2
D2 = NAND ( (NOT Q1), (NOT Q2) )

Synchrone Binärzähler

Die Binärzähler im Praktikum Binärzähler sind asynchron, weil nicht jeder Zähler den selben Takt verwendet, sondern den Ausgang der vorangehenden Stufe.

Bei einem synchronen Zähler haben alle Stufen den selben Takt. Sie sind Zustandsmaschinen. Sie haben den Vorteil, dass sich alle Ausgänge gleichzeitig mit dem selben Takt ändern.

Betrachten wir einen synchronen Zähler, der von 0 bis 2 zählt.

Die Übergangstabelle ist mit dem Zustand Z und dem Übergang U

Z Q1 Q0 U D1 D0
0 0 0 1 0 1
1 0 1 2 1 0
2 1 0 0 0 0

Tabelle 4: Übergangstabelle für einen synchronen Zähler bis 2

Die Zeilen mit dem Ergebnis 1 sind:

D0 ist 1, wenn Q0 = 0 und Q1 = 0 ist.

D1 ist 1, wenn Q0 = 1 und Q1 = 0 ist.

D0 = (NOT Q0) AND (NOT Q1)
D1 =      Q0  AND (NOT Q1)

Die Logik synchroner Zähler mit mehr als drei Zuständen ist wesentlich komplexer.

Weitere Ausgänge

Zustandsmaschinen können Ausgänge haben, die nicht den kodierten Zuständen entsprechen.

Zustandsmaschine-Ausgangslogik.png
Bild 6: Zustandsmaschine mit Ausgangslogik

Die Zustandsmaschine hat drei Ausgänge, die durch eine Logik aus den Zuständen gebildet wird.

Die Ergebnisse der Ausgänge wird einfach in die Wahrheitstabelle der Zustandsmaschine eingetragen.

Wenn wir beispielsweise für unseren Binärzähler den Überlauf, den Übergang wieder zu 0, anzeigen wollen, können wir einen Ausgang C vorsehen und ihn in die Tabelle eintragen. Z ist der Zustand Z und U der Übergang.

Z Q1 Q0 U D1 D0 C
0 0 0 1 0 1 0
1 0 1 2 1 0 0
2 1 0 0 0 0 1

Tabelle 5: Übergangstabelle für einen synchronen Zähler bis 2 mit Überlauf

Weitere Eingänge

Zustandsmaschinen werden meistens über Eingänge gesteuert. Die Übergänge hängen dann von den Werten an den Eingängen ab.

Zustandsmaschine-Eingaenge.png
Bild 7: Zustandsmaschine mit Eingängen
E Z Q1 Q0 U D1 D0
0 0 0 0 0 0 0
0 1 0 1 1 0 1
0 2 1 0 2 1 0
1 0 0 0 1 0 1
1 1 0 1 2 1 0
1 2 1 0 0 0 0

Tabelle 6: Übergangstabelle für einen synchronen Zähler bis 2 mit Freigabe

Die Übergangstabelle in Tabelle 6 beschreibt einen Zähler, der nur dann weiterzählt. wenn er über den Eingang E mit 1 freigegeben wird.

Ein- und Ausgänge

Wir treiben es auf die Spitze und betrachten eine Zustandsmaschine mit Ein- und Ausgängen

Zustandsmaschine-Aus-Eingaenge.png
Bild 7: Zustandsmaschine mit Ein- und Ausgängen
E Z Q1 Q0 U D1 D0 C
0 0 0 0 0 0 0 0
0 1 0 1 1 0 1 0
0 2 1 0 2 1 0 0
0 3 1 1 3 1 1 0
1 0 0 0 1 0 1 0
1 1 0 1 2 1 0 0
1 2 1 0 3 1 1 0
1 3 1 1 0 0 0 1

Tabelle 7: Übergangstabelle für einen synchronen Zähler bis 2 mit Überlauf und Freigabe

Die Übergangstabelle in Tabelle 7 beschreibt einen Zähler, der nur dann weiterzählt. wenn er über den Eingang E mit 1 freigegeben wird. Der Überlauf C wird nur angezeigt, wenn der Zähler freigegeben ist.

Synchrone Zähler 74HC161 und 74HC162

Derartige Zähler gibt es sowohl als Binär- aus auch als Dezimalzähler.

Wir betrachten hier den Vier-Bit-Binärzähler 74HC161. Der 74HC161 kann über vier Eingänge D0 bis D3 voreingestellt werden. Dieses geschieht auch synchron mit dem Takt über den Steuereingang PE.

Synchrone-Zaehler.png
Bild 8: Zwei synchrone Binärzähler, die synchron von 0 bis 255 zählen

Die Schaltung in Bild 8 zeigt, wie zwei Vier-Bit-Binärzähler 74HC161 hintereinander geschaltet werden.

Ein 74HC161 hat vier Eingänge für die Daten sind D0 bis D3, die Zählerausgänge Q0 bis Q3.

Er hat weiterhin drei synchrone Steuereingänge PE, CEP, CET und den Steuerausgang TC sowie einen asynchronen Reset MR.

CP Takt Die Flanke ↑ von 0 nach 1 ist wirksam
PE Parallel-Enable Die and den Eingängen D0 bis D3 liegenden Daten übernehmen
CEP Takt-Freigabe-Parallel Weiterzählen
CET Takt-Freigabe-Toggle Weiterzählen und eventuellen Überlauf auf TC ausgeben.
TC Toggle-Carry Überlauf beim Zählen
MR Master-Reset Zähler auf Null unabhängig vom Takt

In der Schaltung in Bild 8 werden alle Steuereingänge parallel geschaltet, außer CET. Die CET der folgenden Zähler werden an den TC des vorangehenden gelegt. Über die Folge der TC-CET werden die folgenden Zählstufen gesteuert. Sie zählen nur weiter, wenn die vorangehende Zählstufe einen Überlauf hatte.

Der 74HC162 ist ein Dezimal-Zähler. Er verhält sich genauso wie der 74HC161, zählt aber nur bis 9. Vier-Bit-Dezimalzähler 74HC162 werden genauso wie die vier-Bit-Binärzähler 74HC161 hintereinander geschaltet. Zwei hintereinander geschaltete Vier-Bit-Dezimalzähler 74HC162 zählen synchron von 0 bis 99

Attention pin

Synchron - Asynchron

Beim asynchronen Zähler:

  • haben alle Register (Stufen) einen anderen Takt
  • den der vorangehenden Stufe
  • der CMOS 4040 ist ein asynchroner Binärzähler

Beim synchronen Zähler:

  • haben alle Register (Stufen) den gleichen Takt
  • ein Johnson-Zähler ist ein synchroner Zähler
  • der 74HC161 ist ein 4-Bit-Binärzähler
  • der 74HC161 zählt im Binärcode
  • der 74HC162 ist ein 4-Bit-Dezimalzähler
  • der 74HC162 zählt im BCD-Code
Asynchron-Synchronzaehler.png

Zustandsdiagramm für Ein- und Ausgänge

Anfänglich haben wir Zustandsdiagramme für Zustandsmaschinen ohne Logik für Ein- und Ausgänge betrachtet.

Eingänge von Zustandsmaschinen sind Bedingungen, unter denen die Zustandsmaschine ihren Zustand ändert.

Wir betrachten als Beispiel einen synchronen Zähler, der von 0 bis 3 zählt. Er kann über eine Eingang ENT aktiviert werden. Im Zustand 3 gibt er ein Überlauf TC aus, wenn ENT 1 ist.

Zustand-Zaehler_ENT-TCO.png
Bild 9: Zustandsdiagramm eines Zählers bis 3 mit Freigabe und Überlauf

Das Zustandsdiagramm in Bild 9 zeigt, dass jedem Übergang eine Bedingung und eine Ausgabe zugeordnet wird. Neben einem Übergangspfeil steht die Bedingung oberhalb einer Linie und die Ausgabe unterhalb. Wenn es keine zutreffende Bedingung gibt, ändert sich der Zustand nicht.

ENT Z Q1 Q0 U D1 D0 TC
0 0 0 0 0 0 0 0
0 1 0 1 1 0 1 0
0 2 1 0 2 1 0 0
0 3 1 1 3 1 1 0
1 0 0 0 1 0 1 0
1 1 0 1 2 1 0 0
1 2 1 0 3 1 1 0
1 3 1 1 0 0 0 1

Tabelle 8: Übergangstabelle für einen synchronen Zähler bis 3 mit Überlauf und Freigabe

Die Berechnung der Logik dieser Übergangstabelle ist nicht simpel, aber es gibt ja Tools wie LogicBuddy.

Zustandsdiagramme mit alternativen Bedingungen

Abschließend betrachten wir ein Zustandsdiagramm mit Alternativen. Es beschreibt einen Zähler bis 3 mit ENT-Eingang und TC-Ausgang. Das Diagramm besitzt einen weiteren Eingang, Reset (R) mit dem der Zähler synchron auf Null gesetzt werden kann. Der Ausgang G zeigt an, dass eine gerade Zahl anliegt.

Wenn wir die Bedingung Reset (R) einfach alternativ zum ENT-Eingang setzen würden, wäre nicht definiert, in welchen Zustand der Zähler gehen soll: weiter oder auf Null. Auf Null soll Vorrang haben. Dann darf nur weitergezählt werden, wenn Reset (R) nicht 1 ist.

Zustand-Zaehler_ENT-TCO-R.png
Bild 10: Zustandsdiagramm eines Zählers bis 3 mit Freigabe, Überlauf und Reset

Zur Erinnerung: ENT ∧ ¬R heißt ENT and (not R).

Der Ausgang TC hängt von den Eingängen ab. Er wird aktiviert, wenn

  • der ENT-Eingang 1 ist und
  • der R-Eingang 0 ist und
  • der Zustand 3 ist.

Der G-Ausgang wird unabhängig von Eingängen ausgegeben.

Regeln

  • Zustandsmaschinen haben
  • Zustände
  • Eingänge
  • Ausgänge
  • Sie werden über einen gemeinsamen Takt synchron gesteuert
  • Sie ändern ihren Zustand mit dem Takt
  • der Übergang zu einem Zustand hängt vom
  • aktuellen Zustand und
  • den Eingängen ab
  • Die Ausgänge hängen von
  • dem aktuellen Zustand und
  • den Eingängen ab.

Zustandsmaschinen lassen sich mit Zustandsdiagrammen beschreiben.

Zustandsdiagramm.png
Elemente eines Zustandsdiagramms

Elektronische Zustandsmaschinen bestehen aus:

  • Einem D-Register,
  • das den aktuellen Zustand hält.
  • Einer Logik, die
  • den nächsten Zustand bestimmt
  • den aktuellen Wert des Ausgangs bestimmt.
  • Einem Taktgenerator
Zustandsmaschine-Aus-Eingaenge_s.png
Zustandsmaschine

Zustandsdiagramme im Internet

Im Internet werden Zustandsdiagramme auf vielen Seiten beschrieben. Leider beziehen sich fast alle auf Zustandsdiagramme für Softwerker z.B. UML. Bei diesen Zustandsdiagramme werden die Ausgänge oft vernachlässigt. Sie sind für uns Hardwerker unzureichend.