Hallo CPLD-Experten, ich will eine PLL aufbauen (Skizze unten) und brauche dafür einige Frequenzteiler. Einen Teiler von 78125 kann ich natürlich per 74HC390 aufbauen (78125 = 25*25*25*5). Leider brauche ich dann davon 3,5 Stück :-( Um Platz auf der Platine zu sparen, und einen CPLD/FPGA-Einstieg zu finden, würde ich die benötigten Teiler gerne per CPLD realisieren. Leider verstehe ich bisher nicht so viel von CPLDs, so dass ich nicht mal aus dem Datenblatt entnehmen kann, ob der CPLD das kann, was ich mir vorstelle... Frequenzteiler sind ja normalerweise kaskadierte Flip-Flops. Da ich viele Teiler:5 benötige, muss ich also jeweils 3 Bits bzw. 3 Flip-Flops benutzen. Ich habe gelesen, dass CPLDs meist nur ein Flip-Flop pro Makrozelle haben. Mein 78125er Teiler braucht 7 x Teiler:5 -> 7x3=21 Flip-Flops - sehe ich das richtig? Relativ einfach in meine Schaltung zu integrieren, wäre z.B. solch ein CPLD-Modul http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,798&Prod=CMOD Dieser CPLD hätte 64 Makrozellen. Außerdem habe ich bei den Xilinx-CPLDs gesehen, dass sie mehrere Clock-Eingänge besitzen. Bedeutet das, dass ich sowohl den Teiler (78125) für das 10MHz Signal, als auch die Teiler für das 8,192MHz Signal in einem einzigen CPLD realisieren kann? Dann wäre ein CPLD natürlich eine große Vereinfachung für meine Schaltung. Danke für Eure Kommentare, Michael
Michael Born schrieb: > Mein 78125er Teiler braucht 7 x Teiler:5 -> 7x3=21 > Flip-Flops - sehe ich das richtig? Ja. Lade dir doch mal Xilinx ISE runter und gib das, was du willst, in Form eines Schaltplanes ein. So habe ich auch mal angefangen. Später dann VHDL. Bei Xilinx wird die Anzahl der integrierten Flip-Flops XC95nn angegeben. So würde für dein Beispiel ein XC9536 (36 Makrozellen) ausreichen.
Danke Lötix für die Empfehlung. Ich lade nun die fette Software von Xilinx runter. Mal sehen, ob ich mich darin zurecht finde... Vielleicht kann mir noch jemand sagen, wie das mit den verschiedenen Clock-Eingängen ist. Kann ich da zwei unterschiedliche Frequenzen anschließen und die im CPLD teilen lassen? Gruß, Michael
Zitat aus dem Xilinx XC9500XL Datenblatt: "- Local clock inversion with three global and one product-term clocks" ...und ich habe nicht die leiseste Ahnung, was das bedeutet :-(
Michael Born schrieb: > Mein 78125er Teiler braucht 7 x Teiler:5 -> 7x3=21 > Flip-Flops - sehe ich das richtig? Ich nehme mal an, dass die Ausgangstakte nach den Teilern einen Duty-Cycle von 50% haben sollen. Also die High-Zeit ist genauso lange, wie die Low-Zeit. Mal anhand des Beispieles des 10MHz/128Hz Teilers: f=128Hz.. Das beutet, dass die Periodendauer 1/128 s ist. Also 0,0078125s. Davon ist das Signal die Hälfte dieser Zeit H und die andere Hälfte L. Also 0,00390625 s H und 0,00390625 s L. Der Eingangstakt hat 10 MHz. Also eine Periodendauer von 100ns. Damit kannst du einen Zähler betreiben, der alle 100ns um "1" weiterzählt. Dein Zähler muss also bis 39062,5 zählen, dann das Ausgangssignal invertieren und wieder von vorne anfangen. Dann hättest du ein 128Hz Signal, mit exaktem 50/50-Verhältnis von High zu Low. Wie du jetzt aber selbst siehst, klappt das nicht, da du dazu eine Auflösung von 50ns brauchst, was leider mit einem 10Mhz Takt nicht vernünftig geht. Daher wirst du entweder kein exaktes 50/50 Verhältnis einstellen können, oder du wirst mit einem Ausgangstakt "leben" müssen, der etwas schneller oder langsamer als 128Hz ist. Nehmen wir an, dass du mit einem Takt von 127,998 Hz leben (Perdiodendauer = 39063 10Mhz-Impulse), dann wäre der Zähler für deinen Frequenzteiler 16 Bit groß. (mit 15 Bit kannst du nur bis ca. 32768 zählen). Und für jedes Bit benötigst du 1 Register. Also 16 Register + 1 Ausgangsregister, welches du immer invertierst, wenn der Zähler die 39063 erreicht hat. Das war jetzt ziemlich ausführlich, aber ich hoffe, dir hat es zum Verständnis geholfen, wie sowas prinzipiell funkioniert. Kleine Anmerkung: Das, was ich grad beschrieben habe, ist nicht unbedingt die Vorgehensweise, wenn man den Takt innerhalb des CPLDs weiterverwenden will, da man in diesem Fall dann nur kurze Enable-Impulse erzeugen würde, statt eines echten "50/50-Taktes". Aber das nur zur Ergänzung, um einem "Aufschrei" im Forum vorzubeugen ;-)
Naja, kommt auch noch drauf an, wie groß der Jitter des geteilten Taktes sein darf. Der ist nämlich bei allen internen Teiler-Methoden nicht zu vernachlässigen. Einen ADC kann man mit so einem Taktsignal nicht sinnvoll speisen.
Christian R. schrieb: > Naja, kommt auch noch drauf an, wie groß der Jitter des geteilten Taktes > sein darf. Der Jitter von wo nach wo?
Danke für die Erklärungen. Jitter ist für mich DER wichtige Punkt. Sonst würde ich die 65536 Hz nicht Phasen-stabil an den 10 MHz Takt binden wollen. Und ja, die 65536 Hz sind zum Takten eines ADCs :-) Nur für das 1 PPS Signal will ich keinen 50% duty-cycle. Wegen der 100ns (wo 50ns gebraucht werden): Ich meine, in einem Datenblatt (vermutlich CoolRunnerII) davon gelesen zu haben, dass der Chip eine Frequenz verdoppeln kann - das würde dann reichen, oder? Andere Möglichkeit: Gibt es keine Zähler für steigende und fallende Flanke? Damit sollte man auch einen Wert um 2 pro 10 MHz Takt erhöhen können.
Michael Born schrieb: > ...dass der > Chip eine Frequenz verdoppeln kann - das würde dann reichen, oder? Wenn der das kann, dann würde das reichen, denn dann bekommst du 50ns Auflösung Michael Born schrieb: > Gibt es keine Zähler für steigende und fallende > Flanke? Jein.. fertig gibt es sowas nicht, aber man kann sowas theoretisch basteln, wobei man dann schon sehr genau wissen muss, was man tut, damit es nicht zu Setup-Zeit-Verletzungen kommt oder man wilde Glitches im Design hat. Also von dieser Idee würde ich dir dringend abraten! Was verstehst du unter Jitter? Unter einem Jitter in der Phasenlage verstehe ich, dass der Phasenversatz zwischen Eingang und Ausgang nicht immer gleich ist. Also hin- und her springt. Würde die Phase zwischen Ein- und Ausgang eine konstante Verschiebung aufweisen, dann würde ich vom Skew reden.
Die CoolRunner II haben spezielle FlipFlops, die auf beide Flanken schalten können, das ist da aber eine sehr spezielle Ausnahme, das gibts im Normalfall nicht. Jitter bekommst du durch das Schaltverhalten des Ausgangs-FF rein, die sind nicht drauf ausgelegt, jitterarm einen Takt auszugeben. Schon, wenn man am FPGA einen Takt von einem externen Quarz-Oszillator wieder am Ausgang mit einem ODDR-FF ausgibt, bekommt man beachtlichen Jitter rein, ich meine, da mal einige 100ps gemessen zu habenn. Welche Auflösung soll der ADC senn haben? Dann kann man z.B. mit dem Jitter Calculator auf der Maxim Homepage den maximalen Jitter ausrechnen.
Christian R. schrieb: > Die CoolRunner II haben spezielle FlipFlops, die auf beide Flanken > schalten können, das ist da aber eine sehr spezielle Ausnahme, das gibts > im Normalfall nicht. Ah, danke für die Info. > Jitter bekommst du durch das Schaltverhalten des Ausgangs-FF rein, die > sind nicht drauf ausgelegt, jitterarm einen Takt auszugeben. Schon, wenn > man am FPGA einen Takt von einem externen Quarz-Oszillator wieder am > Ausgang mit einem ODDR-FF ausgibt, bekommt man beachtlichen Jitter rein, > ich meine, da mal einige 100ps gemessen zu habenn. Was für einen Jitter erwartet man denn,wenn man die Frequenzteiler mit einzelnen ICs realisiert? Im Datenblatt vom 74HC390 finde ich das Wort "Jitter" jedenfalls nicht :-( nur "propagation delay" ist erwähnt, was mich aber nicht stört - ich will nur die Phase feststehend haben. Der absolute Wert ist nicht wichtig. > Welche Auflösung soll der ADC senn haben? Dann kann man z.B. mit dem > Jitter Calculator auf der Maxim Homepage den maximalen Jitter > ausrechnen. Den Rechner werde ich mir ansehen. Der 16 Bit ADC ist auf ner Steckkarte im PC und wird mit den 65536 Hz getriggert( http://www.generalstandards.com/view-products2.php?BD_family=16ai32ssc ). Als Anforderung an den Jitter würde ich definieren, dass es mit CPLD nicht schlechter ist, als mit diskreter IC Logik.
Michael Born schrieb: > Was für einen Jitter erwartet man denn,wenn man die Frequenzteiler mit > einzelnen ICs realisiert? Im Datenblatt vom 74HC390 finde ich das Wort > "Jitter" jedenfalls nicht :-( nur "propagation delay" ist erwähnt, was > mich aber nicht stört - ich will nur die Phase feststehend haben. Der > absolute Wert ist nicht wichtig. richtig! Man bekommt einen Skew aber keinen Jitter. Der Skew ist eben so lange, wie der "propagation delay", ist aber konstant. Das heißt, du bekommst eine Phasenverschiebung, welche aber konstant ist. Also nicht jittert.
Solange es nur Skew ist, ist das ja OK. Aber jedes Bauteil in einer Takt-Kette bringt zusätzlichen Jitter ins den Takt, weil die Schaltschwellen eben nicht perfekt immer an der gleichen Stelle sind, das streut auch mit Temperatur, Betriebsspannung... Ich hab vorhin mal gemessen, die 200MHz vom Quarzoszillator (laut Datenblatt <1ps Phasenjitter) auf dem SP605 über ein ODDR2 auf eine SMA Buchse ausgegeben, der Jitter liegt meistens bei +- 30ps, gibt aber auch Ausreißer bis hin zu > 100 ps. Sagt jedenfalls der Wave Pro 760.
Schlumpf schrieb: > Michael Born schrieb: >> Was für einen Jitter erwartet man denn,wenn man die Frequenzteiler mit >> einzelnen ICs realisiert? Im Datenblatt vom 74HC390 finde ich das Wort >> "Jitter" jedenfalls nicht :-( nur "propagation delay" ist erwähnt, was >> mich aber nicht stört - ich will nur die Phase feststehend haben. Der >> absolute Wert ist nicht wichtig. > > richtig! > Man bekommt einen Skew aber keinen Jitter. > Der Skew ist eben so lange, wie der "propagation delay", ist aber > konstant. Das heißt, du bekommst eine Phasenverschiebung, welche aber > konstant ist. Also nicht jittert. Du beziehst Dich jetzt auf diskrete Teiler ICs, wie den 74HC390, oder? Ich vermute mal, dass die auch Jittern, aber anscheinend (weil sie ja für PLLs verwendet werden) sehr wenig. Leider habe ich kein Gefühl, was "sehr wenig Jittern" bedeutet. Die von Christian R. erwähnten einige 100ps sind ja eigentlich auch nicht viel, wenn ich meine ca. 15µs (65536 Hz Samplingrate) damit vergleiche.
Michael Born schrieb: > Du beziehst Dich jetzt auf diskrete Teiler ICs, wie den 74HC390, oder? > Ich vermute mal, dass die auch Jittern, aber anscheinend (weil sie ja > für PLLs verwendet werden) sehr wenig. > Leider habe ich kein Gefühl, was "sehr wenig Jittern" bedeutet. Die von > Christian R. erwähnten einige 100ps sind ja eigentlich auch nicht viel, > wenn ich meine ca. 15µs (65536 Hz Samplingrate) damit vergleiche. Ich bezog mich auf gar keinen Baustein, sondern auf deine Aussage, dass du eine feststehende Phase willst. Und dass ein CPLD am Ausgang mehrere 100ps jittert, glaub ich einfach nicht. Aber das kannst ja mal nachmessen.
Schlumpf schrieb: > Michael Born schrieb: >> Du beziehst Dich jetzt auf diskrete Teiler ICs, wie den 74HC390, oder? >> Ich vermute mal, dass die auch Jittern, aber anscheinend (weil sie ja >> für PLLs verwendet werden) sehr wenig. >> Leider habe ich kein Gefühl, was "sehr wenig Jittern" bedeutet. Die von >> Christian R. erwähnten einige 100ps sind ja eigentlich auch nicht viel, >> wenn ich meine ca. 15µs (65536 Hz Samplingrate) damit vergleiche. > > Ich bezog mich auf gar keinen Baustein, sondern auf deine Aussage, dass > du eine feststehende Phase willst. > Und dass ein CPLD am Ausgang mehrere 100ps jittert, glaub ich einfach > nicht. Aber das kannst ja mal nachmessen. Ich bin gerade erst in der Planungsphase. Wenn ein CPLD Ausgang stark Jittert, werde ich mir gar keinen zulegen, den ich nachmessen könnte. Zumal ich mich dafür erst mal in die Benutzung/Programmierung einarbeiten müsste, nur um festzustellen, dass der CPLD mein Problem nicht lösen kann. Deshalb frage ich ja hier nach und bin froh, wenn mir so ein Irrweg erspart bleibt.
Wie gesagt: Ich sehe keinen Grund, warum ein CPLD-Ausgang so jittern sollte, dass es einen Einfluss auf deine Schaltung haben könnte.
Was noch an deiner PLL jittern koente ist deine sehr tiefe Refernzfrequenz von nur 128 Hz. Da kann zwischen 2 Phasenvergleichen dein VCO sehr viel jittern bis der wieder zur Ordnung gerufen wird. Das wuerde ich als grosseres Problem ansehen. Wenn es geht mach die Vergleichfrequenz hoeher. Dann jitter der VCO weniger und du hast ein schnelleres einschwingen der PLL.
Helmut Lenzen schrieb: > Was noch an deiner PLL jittern koente ist deine sehr tiefe > Refernzfrequenz von nur 128 Hz. Da kann zwischen 2 Phasenvergleichen > dein VCO sehr viel jittern bis der wieder zur Ordnung gerufen wird. Das > wuerde ich als grosseres Problem ansehen. Wenn es geht mach die > Vergleichfrequenz hoeher. Dann jitter der VCO weniger und du hast ein > schnelleres einschwingen der PLL. Die niedrigen 128 Hz kommen daher, weil ich die 65536 Hz Samplingfrequenz vorgegeben habe und langzeitstabile Referenzen hauptsächlich als 10 MHz Signal (GPS-Empfänger, Rubidium-Uhr, DCF77) daher kommen. Der größte gemeinsame Teiler von den 10 MHz und 65536 Hz sind die 128 Hz.
Ich kenn deine Applikation nicht, aber wenn du von deinen 65536 Hz geringügig abweichen könntest, dann könntest du einfach die 10MHz teilen und wärst fertig... Aber darüber hast du vermutlich auch schon selber nachgedacht.
Schlumpf schrieb: > Ich kenn deine Applikation nicht, aber wenn du von deinen 65536 Hz > geringügig abweichen könntest, dann könntest du einfach die 10MHz teilen > und wärst fertig... > Aber darüber hast du vermutlich auch schon selber nachgedacht. Ja, das geht leider nicht. (die Software auf dem PC zählt die ADC Zyklen mit und vergleicht die mit NTP Zeit. Bei längerer Datenerfassung laufen dann die Zeiten auseinander. Änderungen an der Software sind nicht möglich.)
Schau die mal hier um, da gibts es sicher etwas passendes, (Si5324 sieht auf den ersten Blick gut aus). http://www.silabs.com/products/clocksoscillators/pages/default.aspx
Christian R. schrieb: > Welche Auflösung soll der ADC senn haben? Dann kann man z.B. mit dem > Jitter Calculator auf der Maxim Homepage den maximalen Jitter > ausrechnen. Ich habe in den Rechner mal meine Daten eingegeben http://www.maximintegrated.com/design/tools/calculators/general-engineering/jitter.cfm 16 Bit ADC und 1000 Hz Signal -> 2,4 ns Jitter sind dann tolerabel. Wenn ich die Beschreibung des Rechners verstanden habe, wird dort mit idealisierten Werten gearbeitet. Mein ADC hat real wohl eher 14 Bit, wodurch schon knapp 10 ns Jitter ok sind... damit wären 100 ps Jitter vom CPLD tolerabel. Hmm, darüber muss ich mal schlafen. Danke für die vielen Anregungen, Michael
Michael Born schrieb: > Leider habe ich kein Gefühl, was "sehr wenig Jittern" bedeutet. Die von > Christian R. erwähnten einige 100ps sind ja eigentlich auch nicht viel, > wenn ich meine ca. 15µs (65536 Hz Samplingrate) damit vergleiche. Naja, bei 16 Bit sieht das schon wieder anders aus. Kommt halt drauf an, ob du die wirklich erreichen willst/kannst bei deinem Aufbau. Wenn man den Maxim Jitter Calculator* hernimmt, und 16 Bit sowie maximale Frequenz von 32767Hz (fs/2) eingibt, kommt man auf 7.41e-11 s maximalen Aperture Jitter. Das müssten 71ps sein, wenn ich mich nicht verrechnet hab. Das geht schon noch und ist evtl. auch mit CPLD/FPGA Ausgang machbar. Bei höheren Abtast- und Signalfrequenzen kommt man dann ganz schnell in den Femtosekundenbereich, da geht das nicht mehr. * http://www.maximintegrated.com/design/tools/calculators/general-engineering/jitter.cfm Edit: Achso, nur 1kHz Signalfrequenz. Na dann
Leute seit ihr eigentlich sicher das euch der Jitter Calculator da nicht etwas zu kleinen Jitter ausgibt. Dieser Jitter des Taktsignales gilt doch nur wenn der ADC keine S+H Stufe hat. Wenn man jetzt bei einem ADC der gerade mal 1kHz abtasten soll einen Takt braucht der im ps Bereich bloss jittern darf wie soll das den erst bei ADCs aussehen die im GHz bereich arbeiten. Da haette man ja astronomische Anforderungen an den Takt. In de Regel betreibt man einen ADC mit einer S+H bzw. sind die meistens mit eingebaut.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.