Fuer ein Projekt mit Mikrokontroller suche ich einen programmierbaren Vorteiler. Geteilt werden soll der Ausgang eines 48 MHz "canned" CMOS Oszillators, und zwar /2, /3, /4 und /6 (also 24/16/12/8 MHz).
Bei Aenderung der Frequenz koennen Pulse ausfallen, es darf aber nicht zu "runt clock pulses" kommen (zu kurze Periode, die den Mikrokontroller zum abstuerzen bringt). Da der Mikrokontroller die Frequenzauswahl mit seinen eigenen IO Pins steuert, darf es auch keine ungueltige Auswahl geben (aus der sich der Mikro nicht mehr befreien koennte). Langsamer als /6 waere OK, aber eine /1 Ausgabe ist nicht tolerierbar (der Mikro ist nur bis 25 MHz spezifiziert).
Soweit moeglich moechte ich nicht mehr als 2 Chips dafuer aufwenden, und gerne auf leicht beziehbare Bauteile zurueckgreifen (74HC Logik?).
Kennt jemand eine geeignete Schaltung oder AppNotes zu diesem Thema?
Gruesse, Marc
Didn't find your answer? Ask the community — no account required.
B
Bertram Geiger
jetmarc schrieb:
Da würde ich ein GAL verwenden, flexibel und Singlechip. Bedingt allerdings ein wenig Einarbeitung - ist aber auf jeden fall lohnend ! Software frei, Hardware für Downloadkabel EU 1.-
mfg Bertram
Bertram Geiger, Graz - AUSTRIA
Private Mail: remove the letters "b a d" from my reply address
M
Martin Laabs
Was spricht gegen einen Zähler den du als Teiler verwendest?
Ich weis nicht ob du den Microcontroller seinen eigenen Takt steueren lassen willst, aber evt. kannst du ja auch einen PLL-IC verwenden der sich via I2C progammieren lässt. Ist evt. mit Kanonen auf Spatzen geschossen. Dafür bist du dann aber sehr variabel was die Frequenz angeht.
Tschüss Martin L.
PS: Hast du schonmal bei groups.google.de gesucht?
P
Pascal Le Bail
Grundsaetzlich sollte das mit einem synchron vorsetzbaren Zaehler gehen, z.B. dem 74HC161. Der µC legt den Startwert auf die Dateneingaenge des Zaehlers, wobei der invertierte "Terminal Count"-Ausgang (TC) mit dem (synchronen) "Parallel Load Enable" (/PE) verbunden wird. Das Signal an TC stellt gleichzeitig die geteilte Frequenz dar.
Allerdings sind da wohl viele Details zu beachten. Z.B. ist das Ergebnis einer solchen Teilung nicht symmetrisch. Die Dauer des positiven Impulses ist immer doppelt so lang wie beim (symmetrischen) Eingangssignal. Der negative Teil ist im schlimmsten Fall (/6) fuenfmal so lange wie der positive. Immerhin kann dabei keinesfalls etwas Schnelleres als die halbe Eingangsfrequenz herauskommen.
Das muesste hier erfuellt sein - zumindest dann, wenn man sicherstellen kann, dass waehrend der Ladevorgaenge des Zaehlers immer ein gueltiger Wert an der Zaehlereingaengen liegt. Wobei man eigentlich nur darauf achten muss, dass der Wert ungleich 15 ist (siehe unten). Wenn man ganz sicher gehen will, koennte man den Startwert in zwei Schritten umstellen: zuerst Null ausgeben (oder auch 8, falls Du das hoechstwertige Bit fix auf High gelegt hast), und danach den gewuenschten Wert. Auf diese Weise kann eigentlich zu keinem Zeitpunkt der gefaehrliche Wert 15 an den Pins liegen.
Die gibt es hier sehr wohl. Wenn der µC naemlich den groesstmoeglichen Zaehlerstand (15) anlegt, dann wird das Ausgangssignal konstant High sein, und der µC kann ueberhaupt nichts mehr machen. Diesen Fall muss man verhindern, insbesondere ist hier der Pegel der Controller-Ausgaenge im Reset-Zustand zu beachten (ggf. mit Pullup- und Pulldown-Widerstaenden gewuenschten Wert vorgeben).
Wenn das Ausgangssignal hingegen symmetrisch sein soll, wird die Sache schwieriger, insbesondere bei der Teilung durch 3...
Gruesse,
Pascal Le Bail, Wien
Meine Absenderadresse ist derzeit inaktiv. Siehe .
M
Martin Laabs
Also in einer Anleitung von DH1AAD für einen 2m Empfänger wird ein TSA6057 verwendet. So viel ich dem Artikel (findets du auf seiner Homepage) entnehmen kann hat der Chip aber nur Teilerfaktoren von 1, 10 und 25kHz. Also zum empfangen von SSB oder CW sicher nicht optimal.
Von anderen Chips habe ich gehört, aber keine genauen Bezeichnungen da.
Tschüss Martin L.
B
Bertram Geiger
warum nicht doch 1-Chip mit CPLD ?
Bertram
Bertram Geiger, Graz - AUSTRIA
Private Mail: remove the letters "b a d" from my reply address
M
Martin Laabs
Ich habe nochmal gesuch. SAA 1057 bis 120MHz mit 1kHz,1.25kHz,10kHz,12.5kHz Schritten
1.80 Euro bei Reichelt
TSA5511 bis 1.3GHz mit vielen Funktionen, Phasenkomperatorfrequenz anscheinend durch Quartz bestimmbar.
1.50 Euro bei Reichelt
Tschüss Martin L.
D
Daniel Schramm
Es geht mir in erster Linie um Rechteck, aber ob man jetzt bei Sinus oder Dreieck noch nen Komperator dahinter setzt, oder direkt einen Rechteck erhhält ist ja zweitrangig, in erster Linie interessiert die Beschaffbarkeit.
Wenn ein fertiger VHDL-Entwurf (am besten Lizenzfrei) zu bekommen ist, hätte ich daran auch Interesse, oder an entsprechender Literatur, zur Frequenzerzeugung mit CPLDs, bisher habe ich mich noch um VHDL gedrückt und nur CPLDs über Schaltplaneingabe mit Software versorgt, da fallen mir dann nur Zaehler-/Teiler-Lösungen ein, die dann doch relativ teuer (viele Macrozellen) werden. Ausserdem ist das Raster bei hohen Frequenzen sehr gross.
Aber der Tip nach programmierbarer PLL zu suchen ist schon Klasse. Eigentlich suche ich etwas, das mir aus dem unteren kHz-Bereich (dafür missbrauche ich schon den PWM-Ausgang des Prozessors) bis in den MHz-Bereich (bisher noch über externen Funktionsgenerator) viele Frequenzen liefern kann, aber es laeuft wohl darauf hinaus, dass man mehrere Quellen umschalten muss, wenn es leicht beschaffbar und preiswert bleiben soll.
DDS ist wegen der nötigen Filterumschaltung (Oberwellen) ja keine triviale Lösung. Wie sieht's in der Praxis bei solchen PLLs mit dem Oberwellenanteil des generierten Sinus-Signals aus? (Oberwellen stören schon unter Umständen den dahinter geschalteten Komperator, wenn man Rechteck haben möchte) Meine Erfahrungen mit Analogtechnik sind leider noch kleiner, als die mit programmierbarer Logik. (CPLD und uC sind beide in dem Geraet im Einsatz)
richtig, aber eben nur wenn komplett fertig erhältlich, was eher fraglich ist
richtig, aber: es gibt auch recht einfache Sprachen, wie ABEL u.a., deren Einarbeitungszeit vertretbar ist - kann aber eine Hürde darstellen. Der Einsatz lohnt sich bestimmt für später
Im Gegenteil, weit schneller als für uP notwendig
Das trifft für den digitalen Bereich auch voll zu,
74xxx ist abgesehen von Buslogik und Tinylogik am Aussterben bzw. ausgestorben
Und gerade in der Analogtechnik wird man nicht
Richtig, nur verschiebt sich der Übergang von Analog zu Digital immer mehr, d.h. der digitale Teil ist drastisch im Rückzug. Das schliesst aber nicht aus, dass man auch in der Digitaltechnik solide "Analogkenntnisse" gut gebrauchen kann
mfg Bertram
Bertram Geiger, Graz - AUSTRIA
Private Mail: remove the letters "b a d" from my reply address
M
Martin Laabs
Wenn es nur im kHz Bereich ist kannst du ja den NE564 nehmen und einen feste Teiler davor basteln (damit der uC nicht mehr so viel zu tun hat). Das Signal teilst du dann in dem uC mit einem Zähler so das du die gewünschte Frequenz bekommst. Wären also der NE564 und u.U. noch ein Zähler.
Das kommst doch ganz darauf an wie gut der VCO gebaut ist.
Wie meinst du das? Den Komperator in der PLL Regelschleife oder den um aus dem Sinussignal ein Rechtecksignal zu machen?
Wenn ich mich nicht ganz irre kannst du auch eine PLL ohne Sinus sonder gleich mit Rechteckverlauf bauen.
Also ich mag die Analogtechnik viel lieber. Auch wenn ich schon ein paar uC's progammiert habe. Da weis man immer gleich was raus kommt. Beim Analogen gibs immer noch den Überraschungseffekt ob es denn nun alles klappt und termisch stabiel ist.
Tschüss Martin L.
B
Bertram Geiger
...
Nun so schlimm ist es nicht, bei CPLDs kannst du auch mit einfacheren Sprachen arbeiten (z.B. ABEL). Bei deinem Ursprungsposting hattest du nach 4...6 verschiedenen Ausgangsfrequ. gefragt, wenn ich mich recht erinnere. Ein umschaltbarer Teiler benötigt nur soviele FF, wie für den größten Teilerfaktor erforderlich. Für Taktumschaltung benötigst du ja noch keinen ausgewachsenen Synthesizer ;-)
DDS sind keine PLLs ! Schau dir DDS mal genauer an (z.B. bei AD), dann siehst du, dass das ganze keine Hexerei ist, insbesonder wenn du den reinen Digitalteil anschaust (Phase Accumulator) - ideal für Realisierumg mit CPLD. damit lassen sich wunderbar 'krumme' Teilerfatoren realisieren, alle (2^n)/m wie z.B. 16 Hz auf 11 Hz teilen. Ein gewisser Phasenjitter ist dabei allerdings unvermeidbar.
Dann hast du die Starthürde ja schon genommen, alles bleibt digital ! Beschreibung in einer HDL ist weitgehend einfacher und schneller als mit reinem Schematic, ausser du kannst auf Libraries zurückgreifen.
Nur so als Minibeispiele (ohne Pindefinitionen, "zaehler" besteht aus 4 FF):
*Synchronzähler modulo 13 IF zaehler==12 THEN zaehler:=0 ELSE zaehler:=zaehler+1;
*Modulo x programmierbar: IF zaehler>=modulo THEN zaehler:=0 ELSE zaehler:=zaehler+1;
*Teiler mit Teilerfaktor 11/16: zaehler:=zaehler+11;
Bei reinem Schematic darfst du da ganz schön Wahrheitstabellen und KV Diagramme (fehlerfrei) schnitzen und das wird über 4 Bit ja nicht unbedingt übersichtlich ...
doch ein weig neugierig ?
Nur so drübergeflogen, könnte dein ursprünglicher Job sogar in ein 22V10 passen - war aber nicht so exakt definiert. Sonst eben wirklich CPLD, z.B. Xilinx XC95xxx
mfg Bertram
Bertram Geiger, Graz - AUSTRIA
Private Mail: remove the letters "b a d" from my reply address
M
Martin Laabs
Nene. Da verwechselst du glaub ich was. Das Ursprungsposting war von Jetmarc (wer das auch immer ist). Daniel hat sich dann nur in den Thread eingehakt. So hab ich das auf jeden fall verstanden. Kann natürlich sein das jetmarc auch Daniel ist. Glaub ich aber nicht.
Bei 4 Frequenzen die ich umschalten wollte würde ich evt. einfach 4 RC Oszillatoren bauen.
Tschüss Martin L.
J
jetmarc
Vielen Dank fuer alle Antworten.
Der Vorschlag von Pascal scheint mir am geeignetsten. Mein Mikro ist bis 25 MHz spezifiziert, dh der schraege Dutycycle bereitet keine Schwierigkeiten.
Fragt sich nur noch mit welcher Logikfamilie ich bei 48MHz am Strom sparendsten dran bin. Als 74AC sind die ICs leicht zu bekommen, aber als 74LCX oder 74LVX waeren sie vielleicht besser (?) ...
Marc
M
Martin Lenz
jetmarc schrieb:
Es wurde im Thread auch nach programmierbaren PLLs gefragt. Ich habe da schon Clock-Synthesizer von Cypress eingesetzt, zB CY2907. Die machen auch Clock Generatoren für PC Mainboards. Die Teile selbst gehen gut, der Programmer ist nicht ganz billig und proprietär und die Software von denen ist zwar gratis, aber etwas buggy. Vielleicht hat sich da in den 2 Jahren aber auchs chon was getan.
Martin
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.