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 |
Q1 | Dezimal |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 6 |
2 | 2 | 0 | 1 | 0 | 1 | 0 | 1 | 5 |
3 | 3 | 0 | 1 | 1 | 1 | 0 | 0 | 4 |
4 | 4 | 1 | 0 | 0 | 0 | 1 | 1 | 3 |
5 | 5 | 1 | 0 | 1 | 0 | 1 | 0 | 2 |
6 | 6 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
7 | 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
8 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
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 ?.