Digitale Schaltungstechnik/ Zähler/ Asynchron/ Vorwärts/ Rücksetzend

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Titelseite
  1. Asynchronzähler vorwärts
    1. selbst rücksetzend
    2. stoppend
    3. programmierbar
  2. Blockschaltbild
  3. Asynchronzähler rückwärts
  4. Asynchronzähler umschaltbar
  5. Asynchronzähler mit Master Slave
  6. Asynchronzähler Zusammenfassung
  7. Asynchronzähler komplex

Zählbereich 0 bis n[Bearbeiten]

Um einen Zähler zu realisieren, der nicht nur in 2x Schritten zählt, könnte man den Zähler sozusagen vor Erreichen des Maximums zurück auf 0 setzen. In der Praxis wird auch genau das gemacht.

Hierzu wird dem T-Flipflop ein Reset-Eingang hinzu gefügt, über den das Flipflop zwangsmäßig auf 0 gesetzt werden kann.

Betrachten wir uns das aber näher an einem Beispiel:

Lösungsmethode 1[Bearbeiten]

Als erstes Zeichnen wir ein bisherigen Zähler der gerade ein Stück zu weit zählt:

In unserem Fall wollen wir bis 4 Zählen, gemäss unsere Tabelle am Anfang ist die nächstgrössere Zahl 7. Um bis 7 zu zählen benötigen wir 3 Flipflops:

AsyncCounter mod 8.svg
Stellen wir nun die Wahrheitstabelle dieses Zählers auf:
Dez Clk QC QB QA
0 / 0 0 0
1 / 0 0 1
2 / 0 1 0
3 / 0 1 1
4 / 1 0 0
5 / 1 0 1
6 / 1 1 0
7 / 1 1 1
Besonders Interessant sind diese Zeilen:
Dez Clk QC QB QA
4 / 1 0 0
5 / 1 0 1
Das die Vier rauskommt wollen wir, aber die Fünf wollen wir eigentlich nicht.

Der Zähler musste also von 4 wieder auf 0 springe. Um den Zähler auf Nullsetzen, können wir die einzelnen Flipflops zurücksetzen.

Fügen wir den Flipflops eine Resetleitung an:
AsyncCounter mod 8 with RST.svg
Da der Zähler als ganzes zurückgesetz werden soll, können wir auch die einzelnen Flipflops gemeinsam zurücksetzen:
AsyncCounter mod 8 with RST .svg
Jetzt bleibt nur noch die Frage, wann genau wir den Zähler zurücksetzen müssen.

Ergänzen wir die Wahrheitstabelle unseres Zählers jedenfalls mal mit einem Resetsignal:

Dez Clk QC QB QA R
0 / 0 0 0
1 / 0 0 1
2 / 0 1 0
3 / 0 1 1
4 / 1 0 0
5 / 1 0 1
6 / 1 1 0
7 / 1 1 1
Die Vier wollen wir noch sauber haben, die fünf hingegen wollen wir nicht.

Folglich setzten wir den Zähler bei Fünf, der ersten "verbotenen Zahl", zurück:

Dez Clk QC QB QA R
5 / 1 0 1 1
Die Zahlen vor fünf wollen wir ja. Also dort setzen wir nicht zurück:
Dez Clk QC QB QA R
0 / 0 0 0 0
1 / 0 0 1 0
2 / 0 1 0 0
3 / 0 1 1 0
4 / 1 0 0 0
5 / 1 0 1 1
6 / 1 1 0
7 / 1 1 1
Bei den anderen Zahlen spielt es uns keine Rolle, also notieren wir das auch so:
Dez Clk QC QB QA R
0 / 0 0 0 0
1 / 0 0 1 0
2 / 0 1 0 0
3 / 0 1 1 0
4 / 1 0 0 0
5 / 1 0 1 1
6 / 1 1 0 X
7 / 1 1 1 X
Den nächsten Schritt Schritt ist das Auslesen der Gleichung. QA, QB und QC sind die Eingänge und R der Ausgang
Der Nächste Schritt ist nun nur noch das Einfügen dieser Logik:
AsyncCounter mod 5.svg
Das zugehörige Impulsdiagramm könnte so aussehen:
Impulse Mod 5 Reset.svg
Die 5 wird also effektiv ausgegeben. Ebenfalls besteht das Reset-Signal länger als der entsprechende Eingangszustand, da alle Tore in der Digitaltechnik eine sogenannte Laufzeit haben. Diese sogenannte Signallaufzeit bestimmt auch, wie lange der „verbotene Zustand“ 5 bestehen bleibt.

Lösungsmethode 2[Bearbeiten]

Statt jedes mal eine Wahrheitstabelle zu erstellen, können wir auch einfach die obere Limit plus eins in das Und ein codieren.

Als Beispiel realisieren wir einen 0 bis 5-Zähler:

Als erstes Zeichnen wir ein bisherigen Zähler der gerade ein Stück zu weit zählt:

In unserem Fall wollen wir bis 5 Zählen, gemäss unsere Tabelle am Anfang ist die nächstgrössere Zahl 7. Um bis 7 zu zählen benötigen wir 3 Flipflops:

AsyncCounter mod 8.svg
Statt nun die komplette Wahrheitstabelle zu erstellen, schreiben wir nur die Zeile mit dem ersten unerwünschten zustand:
Dez Clk QC QB QA R
6 / 1 1 0 1
und lesen für diese Zeile die Gleichung aus:
und setzen sie in der Schaltung um:
AsyncCounter mod 6 Variant 2.svg

Länge des Rücksetzsignales[Bearbeiten]

Die Minimale Länge (die das Flipflop braucht um sauber zurückgesetzt zu werden) und die effektive Länge (solange wir Reset tatsächlich High ist) des Rücksetzsignal lässt sich leider nicht einfach bestimmen, obwohl es für die Funktion dieser Schaltungen elementar ist.

Tatsache ist, dass die Schaltung meisten funktioniert. Jedoch wenn sie nicht funktioniert oder noch schlimmer nicht zuverlässig funktioniert, wird die Fehlersuche schwierig. Um diesem Problem zu entgehen, kann man in die Reset Leitung ein Monoflop einbauen.

Details[Bearbeiten]

Unsere Ausgangslage sei ein 0 bis 9 Zähler
AsyncCounter mod 10.svg
Betrachten wir das Zurücksetzen nochmal näher, aber aus einer etwas anderen Perspektive:
Dez QD QC QB QA Reset
10 1 0 1 0 1
0 0 0 0 0 0
QA ist schon auf 0 und muss deshalb eigentlich nicht zurückgesetzt werden. QC wäre zwar auch 0, muss aber zurück gesetzt werden, weil beim zurücksetzen von QB ein Impuls erzeugt wird, der QC umschaltet.
Das Schema sieht dann also so aus:
AsyncCounter mod 10 simplified.svg
In der Praxis würde das wie gehabt auch funktionieren.

Die genauen Regeln, wann ein Zurücksetzen erforderlich ist und wann es weggelassen werden kann, ließen sich anhand weiterer Bespiele entwickeln und aufstellen. Da das Weglassen von Reset-Leitungen aber ohnehin keine wesentliche Vereinfachung darstellt, verzichten wir darauf. Des weiteren stellt sie auch noch zusätzliches Fehlerpotential dar und die Lesbarkeit der Schaltung wird verringert.

Anwendung[Bearbeiten]

Zählbereich n bis m[Bearbeiten]

In diesem Beispiel wollen wir einen Zähler von 3 bis 12 realisieren. Beginnen wir bei einem Zähler, der von 0 bis 12 zählt:
AsyncCounter mod 13.svg
Wie wir im Kapitel Flipflop gesehen haben, gibt es nicht nur Flipflops mit Reset, sondern auch mit Set-Eingang.

Statt das wir alle Flipflops einfach auf Null setzen, können wir die Flipflops auch auf den gewünschten Wert setzen.

Also:

AsyncCounter 3 to 12.svg