Synchronzähler

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein Synchronzähler ist ein Bauteil aus der Digitaltechnik, das eine Folge von natürlichen Zahlen erzeugt. Die Darstellung der Zahlen erfolgt im Dualsystem. Die Menge der darstellbaren Zahlen und ihre Reihenfolge ist bauteilabhängig. Die Anzahl der möglichen Zahlen ist auf Zweierpotenzen \left[0;\,2^n-1\right] festgelegt. Man spricht daher auch von n-bit-Synchronzählern. Synchronzähler zählen, da sie für alle Stufen ein Taktsignal verwenden, zu den synchronen Schaltkreisen.

Aufbau[Bearbeiten]

4-bit-Synchronzähler aufgebaut aus JK-Flipflops

Ein n-bit-Synchronzähler kann aus n JK-Flipflops aufgebaut sein. Der Takteingang jedes Flipflops ist mit einem Taktgeber CLK verbunden. Durch diese Struktur laufen alle Flipflops synchron zum externen Takt. Daher auch der Name des Bauteils (vgl. Asynchronzähler). Die Fähigkeit, eine Zahlenfolge zu erzeugen, ergibt sich durch die Verschaltung der Eingänge jedes einzelnen Flipflops.

Ein JK-Flipflop verhält sich wie ein T-Flipflop, wenn beide Eingänge denselben Pegel haben. Bei J = K = 1 wechselt der Pegel am Ausgang und bei J = K = 0 bleibt er unverändert. Diese Eigenschaft wird für den Synchronzähler verwendet. Im Folgenden wird ein 4-bit-Vorwärtszähler mit den Ausgängen Q0 bis Q3 beschrieben, der die Zahlen von 0000_{2} (=0_{10}) bis  1111_{2} (=15_{10}) in natürlicher Reihenfolge zählt.

Q3 Q2 Q1 Q0 Binärwert Dezimalwert
0 0 0 0 0000 0
0 0 0 1 0001 1
0 0 1 0 0010 2
0 0 1 1 0011 3
0 1 0 0 0100 4
0 1 0 1 0101 5
0 1 1 0 0110 6
0 1 1 1 0111 7
Q3 Q2 Q1 Q0 Binärwert Dezimalwert
1 0 0 0 1000 8
1 0 0 1 1001 9
1 0 1 0 1010 10
1 0 1 1 1011 11
1 1 0 0 1100 12
1 1 0 1 1101 13
1 1 1 0 1110 14
1 1 1 1 1111 15

Daraus ergibt sich folgende Verschaltung:

  • Das am wenigsten signifikante Bit (Q0) soll bei jeder steigenden Taktflanke wechseln und wird daher direkt mit dem Taktgeber CLK verbunden.
  • Das nächsthöhere Bit (Q1) soll nur wechseln, wenn der Ausgang Q0 den Pegel 1 hat (also während des vorigen Takts eine 1 ausgegeben hat). Dies wird realisiert, indem man Q0 mit den Eingängen des zweiten Flipflops verbindet
  • Das nächsthöhere Bit (Q2) soll nur wechseln, wenn alle niedrigeren Bits (Q0 und Q1) den Pegel 1 haben (also während des vorigen Takt die Binärzahl 11 dargestellt haben). Dies wird mit einem UND-Gatter realisiert.
  • Das nächsthöhere Bit (Q3) soll nur wechseln, wenn alle niedrigeren Bits (Q0, Q1 und Q2 ) den Pegel 1 haben (also im vorigen Takt die Binärzahl 111 dargestellt haben). Dieses kann mit einem zusätzlichen Und-Gatter realisiert werden, welches das Ergebnis aus dem vorigen Schritt mitverwendet.

Das Beispiel lässt sich auf diese Weise fortsetzen, um beliebig große Zähler zu erzeugen. Wenn, wie in der Erläuterung des letzten Schrittes, vorherige Ergebnisse mit verwendet werden, ist dabei jedoch die Zählgeschwindigkeit massiv eingeschränkt. Um einen korrekten Zustandswechsel des höchstwertigen Bits zu erreichen, muss zum Zeitpunkt der entsprechenden Taktflanke die Information über den Zustandswechsel des niedrigstwertiges Bits von der letzten Taktflanke durch die gesamte Kette von Und-Gattern gewandert sein. Zum Beispiel sorgen die Gatterlaufzeiten der 74HCxx-Serie von Logikbausteinen von typisch 15 ns dafür, dass ein mit nur 10 MHz zählender Synchronzähler der beschriebenen Bauart nicht einmal 8 Bits lang sein kann!

Eigenschaften[Bearbeiten]

In der im letzten Abschnitt beschriebenen Bauart summieren sich Gatterlaufzeiten (schaltzeitbedingte Verzögerungen). Dies kann vermieden werden, indem Und-Gatter-Ergebnisse von weniger signifikanten Bits nicht mitverwendet werden. Stattdessen bestimmt jede Stufe ihr Eingangssignal mit einem eigenen Und-Gatter, das alle weniger signifikanten Bits als Eingangssignal erhält. Zum Beispiel benötigt das JK-Flipflop von Bit 7 in einem 8-Bit-Zähler ein vorgeschaltetes Und-Gatter, das auf sieben Eingängen die Bits Q0 bis Q6 verschaltet. In einer solchen Bauweise hat der Synchronzähler gegenüber dem Asynchronzähler den Vorteil, dass sich Gatterlaufzeiten nicht summieren und so höhere Taktraten, bzw. bei gleicher Taktrate größere Zähler möglich sind. Der Preis ist eine deutlich höhere Komplexität, die jedoch in FPGA oder dediziert integrierten ICs problemlos realisierbar ist. Ein weiterer Vorteil besteht darin, dass ein solcher Synchronzähler mit Hilfe komplexerer Schaltnetze anstelle der Und-Gatter beliebige Zahlenfolgen (z.B.: 1, 3, 7, 5, …) darstellen kann (siehe unten).

Varianten[Bearbeiten]

Rückwärtszähler[Bearbeiten]

Einen synchronen Rückwärtszähler erhält man, indem man in der oben beschriebenen Schaltung statt der Q-Ausgänge die \bar Q-Ausgänge verwendet. Mit jedem Takt zählt der Rückwärtszähler einen Schritt zurück. Wenn der untere Grenzwert 0 erreicht ist, springt der Rückwärtszähler beim nächsten Schritt wieder auf den Höchstwert.

Mit D-Flipflop[Bearbeiten]

Die nachfolgende Schaltung zeigt einen Vorwärtszähler mit D-Flipflops. Sobald alle vorhergehenden Flipflops auf 1 geschaltet haben (Erkennung durch die UND-Gatter), wird der Eingang des nächsten Flipflops invertiert (durch Rückkopplung des eigenen Zustandes und einer XOR-Verknüpfung mit dem Ergebnis des UND-Gatters). Auch dieses Schema lässt sich beliebig fortsetzen um größere Zähler zu realisieren.

Um aus der nachfolgenden Logikschaltung einen Rückwärtszähler zu machen, müssen die inversen Flipflop-Ausgänge (\bar Q_x) verwendet werden, um den Zählerstand auszugeben. Die restliche kombinatorische Logik zur Ansteuerung der jeweils nachfolgenden Flipflops bleibt unverändert. Auch bei diesem Zähler ist dann \bar Q_0 das niedrigste Bit (LSB).

4-bit-Synchronvorwärtszähler, aufgebaut aus D-Flipflops (Q0 ist dabei das niederwertigste Bit)

Beliebige Zahlenfolgen[Bearbeiten]

Für Zahlenfolgen, die nicht der natürlichen Reihenfolge entsprechen, müssen die oben beschriebenen UND-Gatter durch komplexere Schaltungen ersetzt werden. Mit Hilfe von Karnaugh-Veitch-Diagrammen kann man sich die Schaltung der eigenen Zählfolge erarbeiten. Hierzu nimmt man die Ausgänge des synchronen Zählers als Eingänge des KV-Diagramms und legt für jede Binärziffer ein einzelnes Diagramm an. Durch dieses Verfahren können alle Zählfolgen erstellt werden. Um die Schaltung zu minimieren, kann es sein, dass ein Rückwärtszähler eine bessere Ausgangsbasis darstellt.

Beliebige Zahlenfolgen mit Wiederholungen[Bearbeiten]

Sollen innerhalb einer Zählperiode eine oder mehrere Zahlen häufiger vorkommen (etwa 1,2,2,3) benötigt man einen Umcodierer. Zunächst weist man jeder Zahl der Folge eine neue Zahl zu, so dass die resultierende Folge keine doppelten Zahlen erhält. Im angegebenen Beispiel wäre das 1→0, 2→1, 2→2, 3→3. Aus der neuen Zahlenfolge (0,1,2,3) lässt sich wie gewohnt ein Synchronzähler erzeugen. Die Ausgänge werden nun mit Hilfe eines Umcodierers in die gewünschten Zahlenwerte transformiert.