Elektronische Zähler (H.Fesefeldt (cc) 2000)





Einleitung

Wir wenden jetzt die Flip-Flops und Addierwerke unser vorherigen Tutorials an, um elektronische Zähler zu bauen. Diese werden nach unterschiedlichen Gesichtspunkten eingeteilt:
-- nach der Art der Ansteuerung: asynchron oder synchron.
-- nach der Zählrichtung: vorwärts oder rückwärts.
-- nach der Codierung: dual, BCD, dezimal u.a.
-- nach bestimmten Eigenschaften: voreinstellbar, rücksetzbar u.a.
-- weitere baugleiche Schaltungen: Frequenzteiler u.a.
Wir wiederholen hier nochmal die Funktionstabelle des Master-Slave Flip-Flops:

J  K  Q   Q  
00 keine Änderung
0101
1010
11QQ (Komplement)


Wichtig ist, dass die Änderung am Ausgang erst mit der abfallenden Flanke des Taktsignals T stattfindet. Ausserdem hat unser Flip-Flop einen C- Eingang. Dieser setzt bei C = 0 den FF unabhängig von allen anderen Eingängen auf Q=0 und und Q=1. Umgekehrt setzt der P- Eingang den FF definitiv auf Q=1 und Q=0. In unserem Applet wird der P-Eingang ignoriert.



Asynchrone Dualzähler

Bisher haben wir uns immer eine Schaltung überlegt und dann das Impulsdiagramm studiert. Hier gehen wir anders herum vor. Wir wollen einen Zähler bauen, der von 0 bis 3 zählen kann. Dazu brauchen wir 2 bits, also 2 FF's. Das Impulsdiagramm muss dann folgendermassen aussehen:

     



Nach dem 1. Takt soll Q1=1 und Q2=0 sein. Nach dem zweiten Takt entsprechend Q1=0 und Q2=1. Hierbei nehmen wir an, dass Q1 das Bit mit der Wertigkeit 20=1 und Q2 das Bit mit der Wertigkeit 21=2 ist. Nach dem dritten Takt sollen beide FF's logisch 1 führen. Danach sollen beide Zähler wieder gelöscht werden. Dieses entspricht genau der dezimalen Zahlenfolge 0, 1, 2, 3, 0, 1, 2, ... Q1 muss also bei jedem Takt seinen Zustand wechseln, Q2 allerdings nur wenn Q1 von 1 nach 0 kippt. Dieses erreicht man einfach, indem man Q1 als Taktsignal für Q2 verwendet. Unser 2-bit Zähler sieht also wie in der Schaltung oben rechts aus. Hierbei muss natürlich bei jedem Flip-Flop J=K=1 sein (siehe Funktionstabelle).
Analog verwenden wir beim 3-bit Zähler wiederum Q2 als Taktsignal des dritten FF's:

     



Dieser kann also von 0 bis 7 zählen und fängt dann wieder bei 0 an. In der folgenden Tabelle notieren wir noch die Zustände der Qn- Ausgänge nach jedem Takt.

Takt Dezimal Q3 Q2 Q1          Q3 Q2 Q1Dezimal
000001117
110011106
220101015
330111004
441000113
551010102
661100011
771110000
800001117

Diese müssen ja immer invertiert zu Qn sein. Man sieht, dass man hier die umgekehrte Zahlenfolge erhält, also rückwärts von 7 bis 0.

Aufgabe:
In unserem ersten Java- Applet haben wir einen 4-bit Vorwärts- Zähler programmiert, der also von 0 bis dezimal 15 zählt und dann wieder auf 0 zurückspringt. Ändern Sie die Schaltung des Applets zu einem 4-bit Rückwärts- Zähler, der bei dezimal 15 anfängt und dann rückwärts bis 0 zählt.

Eine andere Art der Rückwärtszählung erhalten wir mit dem folgenden Schaltbild:

     

Im Impulsdiagramm zeigen wir jetzt auch noch die jeweiligen Zustände von Q1 und Q2. Ersichtlich erfüllen jetzt gerade die invertierten Zustände Qn die Voraussetzungen für das Taktsignal des zweiten und dritten Flip-Flops's. Diese Form des Zählers ist im folgenden Java- Applet realisiert.

Rückgestellte Asynchronzähler

Bisher haben wir Zähler entworfen, die von 0 bis 2n-1 zählen konnten, wobei n die Anzahl der FF's ist, bei 3 FF's also von 0 bis 7. Häufig will man aber nur bis zu einer Zahl zählen, die zwischen 2n-1-1 und 2n-1 liegt, z.B. bei 3 bits nur bis 5 zählt und dann wieder auf 0 zurückspringt. Dieser 5-er Zähler muss mit dem 5. Taktimpuls vom Zählerstand 5 auf 0 zurückgestellt werden. Das ist möglich, indem man ein Gatter so beschaltet, dass die dezimale 5 = duale 101 an seinem Ausgang ein Nullsignal erzeugt, welches man dann auf die C- Eingänge aller FF's zurückführt. Wir brauchen also ein 3-faches NAND- Gatter, das mit den Ausgängen Q1, Q2 und Q3 beschaltet wird. Die Einzelheiten sind im folgenden Impulsdiagramm gezeigt:

     

Bei der 1-0 Flanke des 5. ten Taktimpulses sind die Ausgänge Q1 = Q3=1. Damit entsteht kurzzeitig ein Nullsignal am Ausgang des NAND- Gatters, welches den Zähler auf Null zurückstellt. Hierbei genügt in diesem speziellen Fall ersichtlich ein 2-faches NAND- Gatter, da die Bit- Kombination Q1 = Q3=1 bei allen Zahlen kleiner als 5 nicht auftritt.

Aufgabe
Das folgende Applet zeigt einen 4- bit Dezimalzähler, der also von 0 bis 9 zählt und dann wieder auf 0 zurücksprint. Ersetzen Sie das 4-fache NAND Gatter durch ein 2-faches NAND- Gatter.

Aufgabe

im folgenden Applet finden Sie die Schaltung eines Zählers, der sowohl vorwärts (M=1) wie rückwärts (M=0) zählen kann. Erläutern Sie die Schaltung der AND und OR Gatter.

Synchronzähler

Zwischen den Signalen am Eingang und am Ausgang eines FF's ist eine Zeitverzögerung von td (Delay-Time). Diese beträgt je nach Bauweise zwischen 5 und 25 Nanosekunden (ns). Da bei den asynchronen Zählern die FF's alle nacheinander kippen, addieren sich diese Zeitverzögerungen. Bei einem 32-bit Zähler hat man also insgesamt eine Zeitverzögerung von etwa 150 bis zu 1000 ns. Das mag für eine Zählung von Autos auf der Autobahn noch ausreichend sein, für die Messung von Zählraten radioaktiver Zerfälle und erst recht für moderne Rechenanlagen sind diese Zeitverzögerungen unakzeptabel. Dann muss man zu synchronen Zählern übergehen, bei denen der Taktimpuls gleichzeitig an alle FF's angelegt wird und die notwendigen Kippvoränge durch Vorbereitung der J und K Eingänge gesteuert wird. Wir diskutieren dieses Verfahren zunächst für den einfachsten Fall eines 2 bit Zählers.

     



Im obigen Impulsdiagramm haben wir die Signale noch einmal aufgezeichnet und inbesondere die Zeitverzögerung zwischen den Signalen am Eingang und am Ausgang berücksichtigt (natürlich sehr übertrieben gezeichnet). In der Schaltung benutzen wir jetzt das Q1 Signal als Steuersignal des zweiten FF's. Dieses Signal ist zeitlich um die Zeit td hinter der abfallenden Flanke des Taktsignals versetzt. Beim ersten Takt ist also J2=K2=Q1=0 und daher bleibt Q2 unverändert. Nach der Zeit td werden dann erst der J und K Eingang des zweiten FF's auf logisch 1 gesetzt. Beim zweiten Takt ist es gerade anders herum. Bei der abfallenden Flanke des Taktimpulses sind die F und K Eingänge des zweiten FF's immer noch logisch 1, der FF invertiert seine Ausgangszustände. Erst danach wird die Änderung des Q1 Signals wirksam und die J,K Eingänge des zweiten FF's auf 0 gesetzt. Entsprechendes gilt für den dritten und vierten Takt.
Ein synchroner 3 bit Zähler ist in der nächsten Abbildung gezeigt:

     



Die Schaltung der ersten beiden FF's ist gegenüber dem 2 bit Zähler unverändert, die Vorbeitung der J,K Eingänge des dritten FF's wird durch J3=K3=Q1Q2 realisiert. Wie aus dem Impulsdiagramm ersichtlich, erreicht man damit ein Kippen des dritten FF's genau nach dem vierten und achten Takt. Die notwendige Schaltung eines n Bit Zählers kann man allgemein schreiben als

Jn = Kn = Q1 Q2 Q3 ........ Qn-1

Unser nächstes Applet zeigt einen synchronen 4- bit Zähler.
Den einfachsten synchronen Rückwärtszähler erhält man wie bei den asynchronen Zählern durch Abgreifen der Q- Ausgänge.

Aufgabe
Entwickeln Sie einen synchronen 4-bit Rückwärtszähler, bei dem die J,K Eingänge durch die Q- Ausgänge der vorherigen FF's gesteuert werden und die Zählrate an den Q- Ausgängen abgegriffen wird.

Teilsynchrone Zähler

Durch Kombination von synchronem und asynchronem Betrieb lassen sich Zähler für beliebige Zahlenfolgen konstruieren. Üblicherweise werden hierbei etwa die Hälfte der Flip-Flops synnchron durch den Taktimpuls betrieben, die andere Hälfte durch Q -Signale vorheriger oder späterer FF's. Dadurch verlangsamt sich die Schaltzeit des gesamten Zählers nur etwa um einen Faktor 2 gegenüber dem reinen synchronen Betrieb. Wir zeigen das Prinzip am Beispiel eines 5- Zählers, der also von 0 bis 4 zählen soll und dann wieder bei 0 anfängt. Die folgende Abbildung zeigt die Schaltung:

     

Der erste und dritte FF werden synchron durch den Taktimpuls gekippt, der zweite FF wird asynchron vom Q- Signal des ersten FF's gekippt. Damit das funktioniert, müssen zunächst die J- und K-Eingänge vorbereitet werden. Wir setzen alle K- Eingänge auf 1. Der erste FF darf nicht schalten, wenn die Dezimalzahl 4 erreicht ist, d.h. dual 100, daher setzen wir J1 = Q3. Der dritte FF soll nur dann schalten, wenn die Dezimalzahl 3 erreicht war, also bei Q1 = Q2 = 1. Daher setzen wir J3 = Q1Q2. Das Impulsdiagramm ist oben angegeben und zeigt nochmal die detaillierte Funktion der Vorbereitungseingänge. Mit dem folgenden Applet können Sie das Diagramm überprüfen.

Aufgabe
In vielen Anwendungen sind 13- Zähler wichtig. Diese zählen von 0 bis 12 und fangen dann wieder bei 0 an. Unser Tagesablauf ist z.B. in zwei mal 12 Stunden aufgeteilt. Einen teilsynchronen Zähler für dieses Problem haben wir in einem Applet programmiert. Nehmen Sie das Impulsdiagramm auf und erläutern Sie die Funktionsweise der J-, K- Vorbereitungseingänge. Bauen Sie dazu an geeigneten Stellen weitere Lichtdioden ein. Die Schaltskizze ist in der folgenden Abbildung gezeigt:



Als letzte Anwendung haben wir in einem Applet einen teilsynchronen Dezimalzähler entwickelt. Hierbei wird der erste und letzte FF vom Taktsignal T gekippt, die zweite und dritte Stufe ist rein asynchron.

Aufgabe
In diesem Applet haben wie ein Schiebregister programmiert. Eine am Eingang E anliegende Information wird dabei seriell in ein Array von 8 Flip-Flops eingelesen. Bei jedem Takt wird diese Information auf das nächste FF weitergeschoben und kommt nach 8 Takten am Ende des Registers wieder heraus (Schieberegister). Ändern Sie das Applet so, dass die am Ende erscheinende Information wieder auf den Eingang des Registers zurückgegeben wird (Ring- Schieberegister). Die Lösung finden Sie in diesem Applet.

Aufgabe
Wozu dient die Schaltung des folgenden Applets ?.