Discussion:
Programmierbarer Frequenzteiler 74HC192
(zu alt für eine Antwort)
Stefan Heimers
2011-02-14 19:17:34 UTC
Permalink
Hallo Allerseits,

Ich stehe vor einem kleinen Problem. Für eine PLL-Schaltung wollte ich
einen programmierbaren Frequenzteiler aufbauen.

Dazu habe ich mehrere 74HC192 kaskadiert (Uebertragsausgänge auf die
Zähleingänge des nächsten verbunden). Die Oszillatorfrequenz (ca. 6 bis
9MHz) wird auf den Abwärtszähleingang gegeben und jeweils auf 1kHz
heruntergeteilt.

Die Programmiereingänge hängen an je einem BCD-Kodierschalter, mit
Pulldownwiderstand. Den letzten Abwärts-Uebertrag habe ich auf alle
Load-Eingänge geführt. Somit sollte der Zähler die eingestellte Frequenz
hinunterzählen und bei erreichen von 0 wieder die eingestellte Zahl laden.

Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.

Kennt jemand das Problem? Habe ich einen Denkfehler gemacht? Oder
spielen mir Spikes einen Streich? Das ganze ist auf einer
Lochrasterplatine aufgebaut, jeder Zähler hat einen eigenen
Stützkondensator.


Gruss,
Stefan
--
http://www.heimers.ch/
Peter Kern
2011-02-14 19:53:06 UTC
Permalink
Post by Stefan Heimers
Dazu habe ich mehrere 74HC192 kaskadiert (Uebertragsausgänge auf die
Zähleingänge des nächsten verbunden). Die Oszillatorfrequenz (ca. 6 bis
9MHz) wird auf den Abwärtszähleingang gegeben und jeweils auf 1kHz
heruntergeteilt.
Die Programmiereingänge hängen an je einem BCD-Kodierschalter, mit
Pulldownwiderstand. Den letzten Abwärts-Uebertrag habe ich auf alle
Load-Eingänge geführt. Somit sollte der Zähler die eingestellte Frequenz
hinunterzählen und bei erreichen von 0 wieder die eingestellte Zahl laden.
Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.
Kennt jemand das Problem? Habe ich einen Denkfehler gemacht? Oder
spielen mir Spikes einen Streich? Das ganze ist auf einer
Lochrasterplatine aufgebaut, jeder Zähler hat einen eigenen
Stützkondensator.
Schau mal hier:
http://www.zotteljedi.de/ttl-counter/index.html
Vielleicht gibbet was erhellendes.
Ansonsten Schaltung.jpg mal irgendwo ablegen.

Peter
Stefan Heimers
2011-02-14 19:53:16 UTC
Permalink
Post by Stefan Heimers
Hallo Allerseits,
Ich stehe vor einem kleinen Problem. Für eine PLL-Schaltung wollte ich
einen programmierbaren Frequenzteiler aufbauen.
Dazu habe ich mehrere 74HC192 kaskadiert
Nachtrag: Mit 74LS192B1 anstatt 74HC192N jeweils and der Stelle wo eine
Null eingestellt ist funktioniert die selbe Schaltung mit dem selben
Aufbau. (Zum Glück habe ich Sockel eingelötet). Der höhere
Stromverbrauch gefällt mir aber nicht.



Stefan
Peter Kern
2011-02-14 19:57:41 UTC
Permalink
Post by Stefan Heimers
Post by Stefan Heimers
Dazu habe ich mehrere 74HC192 kaskadiert
Nachtrag: Mit 74LS192B1 anstatt 74HC192N jeweils and der Stelle wo eine
Null eingestellt ist funktioniert die selbe Schaltung mit dem selben
Aufbau. (Zum Glück habe ich Sockel eingelötet). Der höhere
Stromverbrauch gefällt mir aber nicht.
Kann es sein, dass Dir die Pulldowns da rein spielen?

Peter
Marcel Müller
2011-02-14 20:02:17 UTC
Permalink
Hallo,
Post by Stefan Heimers
Dazu habe ich mehrere 74HC192 kaskadiert (Uebertragsausgänge auf die
Zähleingänge des nächsten verbunden). Die Oszillatorfrequenz (ca. 6 bis
9MHz) wird auf den Abwärtszähleingang gegeben und jeweils auf 1kHz
heruntergeteilt.
so ticken die nicht. 74192 hat asynchrones Load. Heißt, beim kleinsten
Huster beginnt der von vorne.
Du hättest einen synchronen Zähler gebraucht. Also 74160 oder 74162.
Respektive 74168, wenn er rückwärts können soll.
Post by Stefan Heimers
Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.
Mit Stellung 0 geht das Taktsignal direkt auf BO durch und der 74192
zählt nicht mehr, weil er ja ständig wieder eine 0 lädt.
Post by Stefan Heimers
Das ganze ist auf einer
Lochrasterplatine aufgebaut, jeder Zähler hat einen eigenen
Stützkondensator.
Das wird kein Problem darstellen.

Du kannst höchstens versuchen mit einem RC-Glied einen Impulsgeber zu
formen, der mit der fallenden Flanke vom letzten BO einen kurzen
Load-Impuls formt. Bei der folgenden steigenden Flanke würde der Zähler
dann gleich wieder Zählen.


Marcel
Stefan Heimers
2011-02-14 21:04:37 UTC
Permalink
Post by Marcel Müller
Du kannst höchstens versuchen mit einem RC-Glied einen Impulsgeber zu
formen, der mit der fallenden Flanke vom letzten BO einen kurzen
Load-Impuls formt. Bei der folgenden steigenden Flanke würde der Zähler
dann gleich wieder Zählen.
Der kurze Impuls ist schon gegeben. Bei 00000 werden alle Zähler
gleichzeitig gesetzt. Somit sind sie nicht mehr 0 und der Borrow am
letzten wird automatisch inaktiv.

Ich vermute eher, dass der Zähler bei 0 während dem Load weiterzählt und
dann wieder bei 9 weitermacht, anstatt gleich bei 0 zu bleiben und den
nächsten anzusteuern. Vielleicht sollte ich den Oszillator über ein AND
vom Eingang trennen während geladen wird. Aber das würde mir wieder
geringfügig die Frequenz verschieben indem ein paar Impulse verloren
gehen. Ich werde das bei Gelegenheit ausprobieren.

Stefan
Joerg
2011-02-14 21:42:09 UTC
Permalink
Post by Stefan Heimers
Post by Marcel Müller
Du kannst höchstens versuchen mit einem RC-Glied einen Impulsgeber zu
formen, der mit der fallenden Flanke vom letzten BO einen kurzen
Load-Impuls formt. Bei der folgenden steigenden Flanke würde der Zähler
dann gleich wieder Zählen.
Der kurze Impuls ist schon gegeben. Bei 00000 werden alle Zähler
gleichzeitig gesetzt. Somit sind sie nicht mehr 0 und der Borrow am
letzten wird automatisch inaktiv.
Ausser wenn der vierte was langsamer war und das nicht hundertprozentig
mitgekriegt hatte ...
Post by Stefan Heimers
Ich vermute eher, dass der Zähler bei 0 während dem Load weiterzählt und
dann wieder bei 9 weitermacht, anstatt gleich bei 0 zu bleiben und den
nächsten anzusteuern. ...
Hast Du Carry nicht auf den Clock-Eingaeng des naechsten gegeben? Der
reagiert nur auf low -> high Flanken (Transition) und m.W. ist die
Transition zu high dann bereits gelaufen wenn der Load loslaesst.

[...]
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Stefan Heimers
2011-02-15 08:23:51 UTC
Permalink
Post by Joerg
Post by Stefan Heimers
Der kurze Impuls ist schon gegeben. Bei 00000 werden alle Zähler
gleichzeitig gesetzt. Somit sind sie nicht mehr 0 und der Borrow am
letzten wird automatisch inaktiv.
Ausser wenn der vierte was langsamer war und das nicht hundertprozentig
mitgekriegt hatte ...
Ein Timingproblem kann ich mir gut vorstellen. Zumal es mit dem LS geht,
nicht aber mit dem HC.
Post by Joerg
Post by Stefan Heimers
Ich vermute eher, dass der Zähler bei 0 während dem Load weiterzählt und
dann wieder bei 9 weitermacht, anstatt gleich bei 0 zu bleiben und den
nächsten anzusteuern. ...
Hast Du Carry nicht auf den Clock-Eingaeng des naechsten gegeben?
Doch, Carry habe ich jeweils mit dem nächsten UP-Eingang verbunden. Obwohl
ich ja nur abwärts zählen will.

Stefan
Uwe Hercksen
2011-02-15 08:42:25 UTC
Permalink
Post by Stefan Heimers
Ein Timingproblem kann ich mir gut vorstellen. Zumal es mit dem LS geht,
nicht aber mit dem HC.
Hallo,

wenn die Schaltung mit 74LS192 funktioniert und mit 74HC192 nicht, dann
probier mal eine deutlich niedrigere Eingangsfrequenz. Auch wenn der
einzelne HC192 noch mit der Frequenz arbeitet, für 5 kaskadierte kann es
eng werden.
Warum hast Du denn die BCD-Schalter nicht mit Pullup statt Pulldown
Widerständen beschaltet? Wenn Du eh Strom sparen willst müsstest Du
Pulldown Widerstände vermeiden. Hast Du nachgerechnet ob mit den
Pulldown Widerständen saubere CMOS Eingangspegel gewährleistet sind?

Bye
Stefan Heimers
2011-02-15 15:41:05 UTC
Permalink
Post by Uwe Hercksen
Warum hast Du denn die BCD-Schalter nicht mit Pullup statt Pulldown
Widerständen beschaltet? Wenn Du eh Strom sparen willst müsstest Du
Pulldown Widerstände vermeiden. Hast Du nachgerechnet ob mit den
Pulldown Widerständen saubere CMOS Eingangspegel gewährleistet sind?
Die BCD-Schalter sind reine ein-Schalter mit einem gemeinsamen
Stromanschluss und einzelnen Ausgängen.

Mit Pluspol und Pulldown erhalte ich positive Logik, mit minus-pol und
pullup negative Logik, geht also nicht. In beiden Fällen fliesst bei
eingeschaltetem Schalter der selbe Strom, und für den symmetrischen,
hochohmigen CMOS-Eingang sollte das keinen Unterschied machen, es geht immer
sauber auf 5V oder 0V. Bei TTL könnte es einen Unteschied machen, aber das
Problem habe ich bei CMOS, nicht bei TTL.


Stefan
Uwe Hercksen
2011-02-16 09:27:30 UTC
Permalink
Post by Stefan Heimers
Die BCD-Schalter sind reine ein-Schalter mit einem gemeinsamen
Stromanschluss und einzelnen Ausgängen.
Mit Pluspol und Pulldown erhalte ich positive Logik, mit minus-pol und
pullup negative Logik, geht also nicht. In beiden Fällen fliesst bei
eingeschaltetem Schalter der selbe Strom, und für den symmetrischen,
hochohmigen CMOS-Eingang sollte das keinen Unterschied machen, es geht immer
sauber auf 5V oder 0V. Bei TTL könnte es einen Unteschied machen, aber das
Problem habe ich bei CMOS, nicht bei TTL.
Hallo,

die besseren BCD Schalter gab es früher in zwei Versionen, eine davon
ergab auch mit Pullup Widerständen die richtigen Pegel.

Bye
Joerg
2011-02-15 14:55:49 UTC
Permalink
Post by Stefan Heimers
Post by Joerg
Post by Stefan Heimers
Der kurze Impuls ist schon gegeben. Bei 00000 werden alle Zähler
gleichzeitig gesetzt. Somit sind sie nicht mehr 0 und der Borrow am
letzten wird automatisch inaktiv.
Ausser wenn der vierte was langsamer war und das nicht hundertprozentig
mitgekriegt hatte ...
Ein Timingproblem kann ich mir gut vorstellen. Zumal es mit dem LS geht,
nicht aber mit dem HC.
Vermute ich auch. Muesste sich an einem Zweikanal-Scope sehen lassen.
Aber auf Alternate schalten wenn es ein aelteres Modell ist.
Post by Stefan Heimers
Post by Joerg
Post by Stefan Heimers
Ich vermute eher, dass der Zähler bei 0 während dem Load weiterzählt und
dann wieder bei 9 weitermacht, anstatt gleich bei 0 zu bleiben und den
nächsten anzusteuern. ...
Hast Du Carry nicht auf den Clock-Eingaeng des naechsten gegeben?
Doch, Carry habe ich jeweils mit dem nächsten UP-Eingang verbunden. Obwohl
ich ja nur abwärts zählen will.
Sorry, ich meinte Borrow. Ist am Ende aber Pott wie Deckel.
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Heiko Nocon
2011-02-15 00:23:19 UTC
Permalink
Post by Stefan Heimers
Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.
Vermutlich ist einfach nur der Set-Impuls zu kurz. ->Mittels Monoflop
verbreitern.
Stefan Heimers
2011-02-15 08:41:12 UTC
Permalink
Post by Heiko Nocon
Post by Stefan Heimers
Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.
Vermutlich ist einfach nur der Set-Impuls zu kurz. ->Mittels Monoflop
verbreitern.
Ich könnte ein Flip-Flop nehmen, das vom Borrow gesetzt und vom Takt wieder
gelöscht wird. Was meinst Du?


Stefan
Heiko Nocon
2011-02-15 10:10:19 UTC
Permalink
Post by Stefan Heimers
Ich könnte ein Flip-Flop nehmen, das vom Borrow gesetzt und vom Takt wieder
gelöscht wird. Was meinst Du?
Einen Versuch wäre es wert.
Uwe Hercksen
2011-02-15 11:40:22 UTC
Permalink
Post by Stefan Heimers
Ich könnte ein Flip-Flop nehmen, das vom Borrow gesetzt und vom Takt wieder
gelöscht wird. Was meinst Du?
Hallo,

das könnte dazu führen das nicht durch das eingestellte n dividiert wird
sondern durch n+1. Das Borrow kommt ja später als der Takt der es
verursacht, evtl. löscht also erst der nächste Takt.

Bye
Marcel Müller
2011-02-17 00:30:39 UTC
Permalink
Post by Uwe Hercksen
das könnte dazu führen das nicht durch das eingestellte n dividiert wird
sondern durch n+1. Das Borrow kommt ja später als der Takt der es
verursacht, evtl. löscht also erst der nächste Takt.
Nicht nur eventuell. Das Problem hat er jetzt schon.


Marcel
Stefan Heimers
2011-02-15 22:00:35 UTC
Permalink
Ich konnte das Problem jetzt lösen: Ich habe einfach einen 270pF
Kondensator parallel zu den Load-Eingängen geschaltet, der den Impuls
etwas breiter macht. Die Schaltung funktioniert jetzt mit den 74HC192.

Stefan
Post by Stefan Heimers
Hallo Allerseits,
Ich stehe vor einem kleinen Problem. Für eine PLL-Schaltung wollte ich
einen programmierbaren Frequenzteiler aufbauen.
Dazu habe ich mehrere 74HC192 kaskadiert (Uebertragsausgänge auf die
Zähleingänge des nächsten verbunden). Die Oszillatorfrequenz (ca. 6 bis
9MHz) wird auf den Abwärtszähleingang gegeben und jeweils auf 1kHz
heruntergeteilt.
Die Programmiereingänge hängen an je einem BCD-Kodierschalter, mit
Pulldownwiderstand. Den letzten Abwärts-Uebertrag habe ich auf alle
Load-Eingänge geführt. Somit sollte der Zähler die eingestellte Frequenz
hinunterzählen und bei erreichen von 0 wieder die eingestellte Zahl laden.
Das funktioniert solange gut wie keiner der BCD-Schalter auf 0 steht.
Ich kann also alle Frequenzen einstellen die keine Ziffer '0' enthalten.
Sobald einer der Schalter auf 0 steht wird aber irgend eine falsche
Frequenz eingestellt.
Kennt jemand das Problem? Habe ich einen Denkfehler gemacht? Oder
spielen mir Spikes einen Streich? Das ganze ist auf einer
Lochrasterplatine aufgebaut, jeder Zähler hat einen eigenen
Stützkondensator.
Gruss,
Stefan
Heiko Nocon
2011-02-15 22:27:41 UTC
Permalink
Post by Stefan Heimers
Ich konnte das Problem jetzt lösen: Ich habe einfach einen 270pF
Kondensator parallel zu den Load-Eingängen geschaltet, der den Impuls
etwas breiter macht.
Hmm, ein Kondensator macht den Impuls nicht wirklich breiter, er
verzögert ihn nur etwas und macht die Flanken ziemlich rund.
Post by Stefan Heimers
Die Schaltung funktioniert jetzt mit den 74HC192.
Schön, aber ich würde das mehr oder weniger für Zufall halten und
dringend nochmal den Monoflop empfehlen, um eine wirklich zuverlässige
Funktion sicherzustellen. Den Kondensator kannst du ja dafür sogar
gleich recyclen. ;o)
Matthias Weingart
2011-02-16 11:26:40 UTC
Permalink
Post by Heiko Nocon
Post by Stefan Heimers
Ich konnte das Problem jetzt lösen: Ich habe einfach einen 270pF
Kondensator parallel zu den Load-Eingängen geschaltet, der den Impuls
etwas breiter macht.
Hmm, ein Kondensator macht den Impuls nicht wirklich breiter, er
verzögert ihn nur etwas und macht die Flanken ziemlich rund.
Post by Stefan Heimers
Die Schaltung funktioniert jetzt mit den 74HC192.
Schön, aber ich würde das mehr oder weniger für Zufall halten und
dringend nochmal den Monoflop empfehlen, um eine wirklich zuverlässige
Funktion sicherzustellen. Den Kondensator kannst du ja dafür sogar
gleich recyclen. ;o)
Och, Schaltflanken per RC-Glied zu verzoegern (oder zu differenzieren) ist
eigentlich schon ueblich und halbwegs zuverlässig.

M.
Heiko Nocon
2011-02-16 18:12:35 UTC
Permalink
Post by Matthias Weingart
Och, Schaltflanken per RC-Glied zu verzoegern (oder zu differenzieren) ist
eigentlich schon ueblich und halbwegs zuverlässig.
Ja, nur wurde hier weder eine Verzögerung noch eine Differenzierung
angestrebt, sondern eine Impulsverlängerung.

Die ergab sich aber nur als mehr oder weniger zufälliger Nebeneffekt des
Integriergliedes durch die Verrundung der Flanken. Das kann man wohl
nicht guten Gewissens als zuverlässige Lösung des Problems bezeichnen.
Marcel Müller
2011-02-18 16:40:20 UTC
Permalink
Hallo,
Post by Heiko Nocon
Ja, nur wurde hier weder eine Verzögerung noch eine Differenzierung
angestrebt, sondern eine Impulsverlängerung.
Die ergab sich aber nur als mehr oder weniger zufälliger Nebeneffekt des
Integriergliedes durch die Verrundung der Flanken. Das kann man wohl
nicht guten Gewissens als zuverlässige Lösung des Problems bezeichnen.
mutmaßlich schon. Denn der Impuls ist jetzt auf jeden Fall so lang, dass
der erste Zählimpuls zuverlässig verworfen wird. Vorher war das nicht
sicher gestellt.


Marcel

Loading...