Forum: Mikrocontroller und Digitale Elektronik Synchronzähler von 0 - n


von Simon E. (es1)


Lesenswert?

Hallo zusammen,

bei der Herleitung von Synchronzählern (mit JK-Flipflops) komme ich 
gerade nicht weiter. Die Herleitung von n-Bitzählern bereitet mir keine 
Probleme, also 3-Bit (0-7), 4-Bit (0-15), etc. Ich habe KV-Diagramme und 
charakteristische Gleichungen verwendet. Daraus dann die Schaltung 
abgeleitet.

Mir geht es um den Fall, wenn ich z. B: einen 3Bit-Zähler verwende und 
nur von 0 bis 6 zähle. Also die volle Bandbreite eines 3-Bitzählers (8 
Zustände) nicht ausschöpfe. Was mache ich mit den "freien Plätzen"?

Bau ich mir dann hinten einfach einen Codierer dran, der filtert (7 in 0 
umschreibt) oder gibt es eine elegantere Methode? Besser wäre es ja wenn 
der Zähler nach 6 rückgesetzt wird und bei 0 beginnt.

Grüße

von Michael K. (Gast)


Lesenswert?

Hä ?
Weiß nicht ob ich genau verstehe was Du willst.

Für die 7 Zustände brauchst Du alle drei Bit.
Die FF sind also alle da, was willst Du weglassen ?
Welchen freien Platz ?

Nach 110 soll der nicht auf 111 weiter zählen ?!
Wenn 110 noch ein gültiger zustand ist und 111 zum Rücksetzen führen 
soll hast Du zwei Möglichkeiten.

a.
3 fach UND Verknüpfung führt zum Reset
Nachteil: 111 liegt ein paar Gatterlaufzeiten an bis reset kommt

b:
Logig: 110 am Ausgang + steigende Flanke am CLK = Reset.

http://www.digitaltechnik-grundlagen.de/zahler-und-frequenzteiler/3-bit-synchronzaehler-d-flipflop/

von Simon E. (es1)


Lesenswert?

Hallo,

mit "freiem Platz" hab ich die achte Zeile mit 111 gemeint.

Ich mache also wie gewohnt die Wahrheitstabelle und trage dann für die 
Zustände die ich nicht benötige, die X im KV-Diagramm ein und 
vernachlässige sie dann in der Gleichung, richtig?

von Helmut L. (helmi1)


Lesenswert?

Simon E. schrieb:
> Bau ich mir dann hinten einfach einen Codierer dran, der filtert (7 in 0
> umschreibt) oder gibt es eine elegantere Methode? Besser wäre es ja wenn
> der Zähler nach 6 rückgesetzt wird und bei 0 beginnt.

Ein Synchronzähler läst sich als Statemaschine darstellen. In der kann 
man Eintragen das nach dem Code 110 der Code 000 folgt. So tritt der 
verbotene Code 111 erst gar nicht auf. Genauso gut kann man da beliebige 
Zählfolgen generieren.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Simon E. schrieb:
> Ich mache also wie gewohnt die Wahrheitstabelle und trage dann für die
> Zustände die ich nicht benötige, die X im KV-Diagramm ein und
> vernachlässige sie dann in der Gleichung, richtig?

Genau, die letzte Zeile der Wahrheitstabelle enthält einfach lauter X:
1
Q₂ Q₁ Q₀ | J₂ K₂  J₁ K₁  J₀ K₀
2
——————————————————————————————
3
0  0  0  | 0  X   0  X   1  X
4
0  0  1  | 0  X   1  X   X  1
5
0  1  0  | 0  X   X  0   1  X
6
0  1  1  | 1  X   X  1   X  1
7
1  0  0  | X  0   0  X   1  X
8
1  0  1  | X  0   1  X   X  1
9
1  1  0  | X  1   X  1   0  X
10
1  1  1  | X  X   X  X   X  X
11
——————————————————————————————

Die Logikterme sind so einfach, dass man sie auch ohne KV-Diagramme 
erraten kann:
1
     _    _
2
J₀ = Q₁ + Q₂
3
K₀ = 1        (oder auch K₀ = Q₀)
4
J₁ = Q₀                       _
5
K₁ = Q₀ + Q₂  (oder auch K₁ = Q₁+Q₂)
6
J₂ = Q₀Q₁
7
K₂ = Q₁

Das Schöne an den JK-Flipflops ist, dass mindestens die Hälfte der 
Einträge in der Wahrheitstabelle X sind. Mit D-Flipflops wären die Terme 
komplizierter, und man bräuchte deutlich mehr als die 3 Gatter.

Statt mit 2 OR und 1 AND kann man das Feedback-Netzwerk auch mit 4 NAND, 
also einem einzigen 74x00 realisieren.

von Axel S. (a-za-z0-9)


Lesenswert?

Michael Knoelke schrieb:

> Wenn 110 noch ein gültiger zustand ist und 111 zum Rücksetzen führen
> soll hast Du zwei Möglichkeiten.
>
> a.
> 3 fach UND Verknüpfung führt zum Reset
> Nachteil: 111 liegt ein paar Gatterlaufzeiten an bis reset kommt

Aber nicht wenn man einen synchronen Zähler bauen will.

> b:
> Logig: 110 am Ausgang + steigende Flanke am CLK = Reset.

Und auch das ist nur fast richtig. Die Logik führt keinen Reset aus, 
sondern führt einfach zum nächsten Zustand (wie er durch das 
Zustandsdiagramm definiert ist). 000 ist dabei ein ganz normaler Zustand 
wie alle anderen auch. Bei einem synchronen Zähler sitzen dafür vor den 
J- bzw. K-Eingängen der Flipflops entsprechende Gatter.

Für Details schaue man in das Datenblatt nach der Innenschaltung eines 
synchronen nicht-binären Zähler-IC. Z.B. 74xx192.


XL

von Wolfgang (Gast)


Lesenswert?

Simon E. schrieb:
> Besser wäre es ja wenn der Zähler nach 6 rückgesetzt wird und
> bei 0 beginnt.
Genau, du dekodierst die 7 und löst damit einen Reset aus.

von Helmut L. (helmi1)


Angehängte Dateien:

Lesenswert?

Syncronzaehler der 0,1,2,3,4,5,6,0,1,2,3,4,5,6 zaehlt ohne ueber Reset 
zu gehen.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Hatte auch gerade Lust, etwas zu malen: Hier ist die Variante mit 
JK-Flipflops :)

von Simon E. (es1)


Lesenswert?

Erst mal vielen Dank für alle Antworten :-)

Mit so viel Resonanz hätt ich gar nicht gerechnet.

@Yalu:

Eine Frage zu Deiner Wahrheitstabelle:

Q₂ Q₁ Q₀ | J₂ K₂  J₁ K₁  J₀ K₀
——————————————————————————————
0  0  0  | 0  X   0  X   1  X
0  0  1  | 0  X   1  X   X  1
0  1  0  | 0  X   X  0   1  X
0  1  1  | 1  X   X  1   X  1
1  0  0  | X  0   0  X   1  X
1  0  1  | X  0   1  X   X  1
1  1  0  | X  1   X  1   0  X
1  1  1  | X  X   X  X   X  X
——————————————————————————————


Wie kommst Du direkt auf die Eingangbeschaltung für J und K?

Ich hab eine Tabelle mit Q2, Q1 und Q0 zum Zeitpunkt t_n gemacht und 
daneben die zum Zeitpunkt t_n+1. Dort sind die Zeilen ja einfach um eins 
nach oben versetzt.

Dann hab ich daraus für die drei Ausgänge die KV-Diagramme abgeleitet 
und die Anwendungsgleichungen bestimmt.

Diese hab ich mit den charakteristischen Gleichungen eines JK-Flipflop 
gleichgesetzt und daraus die Verknüpfungsgleichungen erstellt.

Ist das der gleiche Weg oder kann man das auch schneller machen?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Simon E. schrieb:
> Wie kommst Du direkt auf die Eingangbeschaltung für J und K?
>
> Ich hab eine Tabelle mit Q2, Q1 und Q0 zum Zeitpunkt t_n gemacht und
> daneben die zum Zeitpunkt t_n+1. Dort sind die Zeilen ja einfach um eins
> nach oben versetzt.
>
> Dann hab ich daraus für die drei Ausgänge die KV-Diagramme abgeleitet
> und die Anwendungsgleichungen bestimmt.
>
> Diese hab ich mit den charakteristischen Gleichungen eines JK-Flipflop
> gleichgesetzt und daraus die Verknüpfungsgleichungen erstellt.

Das sieht nach der gleichen Methode aus, nur dass du noch einen 
Zwischenschritt einfügst.

Ich habe mir einfach für jedes Q und jeden Zählschritt die Übergänge 
angeschaut:

Ist bspw. ein bestimmtes Q vor Eintreffen der Taktflanke 0 und danach 1, 
kann dieser Übergang wahlweise mit J=1 und K=0 (Setzen des Ausgangs auf 
1) oder mit J=1 und K=1 (Toggeln des Ausgangs) realisiert werden. Also 
kann man in die Wahrheitstabelle J=1 und K=X schreiben. Entsprechendes 
gilt für alle anderen Übergänge.

Es gibt für jedes Q vier verschiedene Zustandsübergänge:
1
Qvorher  Qnachher  |  J   K
2
–––––––––––––––––––––––––––
3
   0         0     |  0   X
4
   0         1     |  1   X
5
   1         0     |  X   1
6
   1         1     |  X   0
7
–––––––––––––––––––––––––––

Das Qvorher und Qnachher sind einfach jeweils zwei senkrecht 
übereinander liegende Werte im linken (Q-) Teil der Wahrheitstabelle, da 
bei einem Zähler der Zustand bei jedem Takt von einer Zeile zur nächsten 
springt. Das kann man mit dem Auge schnell erfassen, liest dann die 
zugehörige J/K-Kombination aus der obigen kleinen Tabelle aus und trägt 
sie in die Wahrheitstabelle ein. Das geht so fix, dass man eigentlich 
keinen Zwischenschritt braucht.

Anders sieht es aus, wenn man keinen Zähler, sondern einen allgemeineren 
endlichen Automat konstruieren will, der bei jedem Takt abhängig von 
einem oder mehreren Eingangssignalen in verschiedene Folgezustände 
springt. Dann ist es sicher sinnvoll, diese Übergänge noch einmal 
explizit aufs Papier zu schreiben. Wenn ich mich richtig erinnere, haben 
wir damals im Studium (ist schon eine Weile her und das meiste ist 
vergessen) die Zustandsübergänge folgendermaßen mit jeweils einem 
Zeichen notiert:
1
0 -> 0: 0
2
0 -> 1: α
3
1 -> 0: β
4
1 -> 1: 1

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.