Einfache Frage: Gegeben CPLD (ohne PLL) und Crystal Osilator mit 250 Mhz als input clock Benötigt wird in CLK_OUT mit zB. 80 MHZ und 50% Duty Cycle Mit einem simplen Prescaler kann ich nur 1/2, 1/4 , 1/8 etc der Eingangsfrequenz erstellen. Mit einem Counter kann ich fast beliebige Frequenz ausgeben, aber ohne 50% Duty Cylce Bedienung. Mein ADC, das mit CPLD (ALTERA MAXII) betriggert wird braucht aber diese 50% DC. Gibt es irgedwelche Tricks,die mir weiterhelfen können?
Böser Kommunist schrieb: > Mit einem Counter kann ich fast beliebige Frequenz ausgeben, aber ohne > 50% Duty Cylce Bedienung. 160MHz und dahinter ein Flipflop für die 50%?
160 MHz mit Flip-Flop wird nicht gehen. Aus 250 MHz lassen sich keine 160 MHz erreichen. Also ich sehe ohne PLL keine Möglichkeit, die 80 MHz zu bekommen. Gruß Marius
Böser Kommunist schrieb: > Mit einem simplen Prescaler kann ich nur 1/2, 1/4 , 1/8 etc der > Eingangsfrequenz erstellen. Man kommt auch auf 1/3 oder 1/5 (siehe Anhang). Aber 250/80 = 3,125. Da wirst Du entweder an den 250 MHz oder den 80 MHz drehen müssen. Duke
Zum Überlegen: Wenn du durch 25 dividieren kannst (sollte gehen), dann musst du mit 8 multiplizieren (sollte auch gehen). Es ist nur die Frage, ob dein CPLD genügend Resourcen hat.
Davis schrieb: > Zum Überlegen: Wenn du durch 25 dividieren kannst (sollte gehen), dann > musst du mit 8 multiplizieren (sollte auch gehen). Es ist nur die Frage, > ob dein CPLD genügend Resourcen hat. .. klar, wenn die Frequenz als integer vorliegt, kann man das locker machen :-)
Schlumpf schrieb: > Davis schrieb: >> Zum Überlegen: Wenn du durch 25 dividieren kannst (sollte gehen), dann >> musst du mit 8 multiplizieren (sollte auch gehen). Es ist nur die Frage, >> ob dein CPLD genügend Resourcen hat. > > .. klar, wenn die Frequenz als integer vorliegt, kann man das locker > machen :-) Quatschkopf. Duke hat zwei PFDs (s. o.) verlinkt. Durchlesen! @ Der Das Orginalsignal einmal direkt an ein EOR-Gatter führen und einmal verzögert. --- Einfacher ist es, die 250 MHz zweimal durch 2,5 zu teilen (ergibt 40 MHz) und dann zu verdoppeln um 80 MHz zu erhalten (siehe u. a. Beitrag "Re: Aus 250 Mhz input Clock 80 Mhz utput clock herauszabubern?").
Davis schrieb: > > Das Orginalsignal einmal direkt an ein EOR-Gatter führen und einmal > verzögert. > > --- > > Einfacher ist es, die 250 MHz zweimal durch 2,5 zu teilen (ergibt 40 > MHz) und dann zu verdoppeln um 80 MHz zu erhalten (siehe u. a. > Beitrag "Re: Aus 250 Mhz input Clock 80 Mhz utput clock herauszabubern?"). Ich bezweifle dass man auf diese Weise eine Clock bekommt die den Ansprüchen des ADC's an Jitter und Stabilität des Dutycycles genügt.
Davis schrieb: > musst du mit 8 multiplizieren Davis schrieb: > Quatschkopf. Duke hat zwei PFDs (s. o.) verlinkt. Durchlesen! Dann erklär doch mal bitte anhand der verlinkten PDFs, wie du mit 8 multiplizierst... Ich konnte da jedenfalls keinen Hinweis darauf finden. PLL gilt nicht!
Lattice User schrieb: > Davis schrieb: > >> >> Das Orginalsignal einmal direkt an ein EOR-Gatter führen und einmal >> verzögert. >> >> --- >> >> Einfacher ist es, die 250 MHz zweimal durch 2,5 zu teilen (ergibt 40 >> MHz) und dann zu verdoppeln um 80 MHz zu erhalten (siehe u. a. >> Beitrag "Re: Aus 250 Mhz input Clock 80 Mhz utput clock herauszabubern?"). > > Ich bezweifle dass man auf diese Weise eine Clock bekommt die den > Ansprüchen des ADC's an Jitter und Stabilität des Dutycycles genügt. Bei erhöhten Ansprüchen empfiehlt es sich, die Frequenz zu vervierfachen und dann per FF durch 2 zu dividieren.
Schlumpf schrieb: > Davis schrieb: >> musst du mit 8 multiplizieren > > Davis schrieb: >> Quatschkopf. Duke hat zwei PFDs (s. o.) verlinkt. Durchlesen! > > Dann erklär doch mal bitte anhand der verlinkten PDFs, wie du mit 8 > multiplizierst... Ich konnte da jedenfalls keinen Hinweis darauf finden. > PLL gilt nicht! @ Schlumpf Bitte nicht nur die PFDs lesen, sondern auch die anderen Beiträge (siehe meine Antwort an Der). Mitdenken & mitlesen!
@Davis: Ein EOR (vermutlich meinst du XOR) macht noch lange keine Multiplikation mit 8. Da wäre diese Schaltung mehrfach notwendig. Daher wäre es angebracht, dass du, bevor du den anderen hier so wertvolle Hinweise wie 'Denken!' gibst, einfach mal selber vollständige Antworten auf Fragen gibst und dich nicht darauf beschränkst, nur mit Teilinformationen rumzufaseln... Was die technische Realisierbarkeit in einem CPLD angeht, schließe ich mich der Meinung von Lattice User an. Aber vermutlich liegt es wieder daran, dass ich schneller Schreiben, als denken kann, wenn ich befürchte, dass dir so ein DC von 50% nicht gelingt.
Schlumpf schrieb: > @Davis: > > Ein EOR (vermutlich meinst du XOR) macht noch lange keine Multiplikation > mit 8. Da wäre diese Schaltung mehrfach notwendig. > Daher wäre es angebracht, dass du, bevor du den anderen hier so > wertvolle Hinweise wie 'Denken!' gibst, einfach mal selber vollständige > Antworten auf Fragen gibst und dich nicht darauf beschränkst, nur mit > Teilinformationen rumzufaseln... Wenn ich EOR schreibe, dann meine ich EOR (Exclusive OR). Wir beide wissen was gemeint ist "nitpicker". > Was die technische Realisierbarkeit in einem CPLD angeht, schließe ich > mich der Meinung von Lattice User an. Aber vermutlich liegt es wieder > daran, dass ich schneller Schreiben, als denken kann, wenn ich > befürchte, dass dir so ein DC von 50% nicht gelingt. Du schreibts viel & schnell ;) Wenn du mit LTSpice o. ä. umgehen kannst, dann solltest du dich hinsetzen und einen Schaltplan eingeben und mit dem Simulieren anfangen. Stand der Diskussion: Eingangsfrequenz : 250 MHz Teiler 1 : 2,5 Teiler 2 : 2,5 Zwischenfrequenz 1: 40 MHz Multiplikation 1 : 2 Multiplikation 2 : 2 Zwischenfrequenz 2: 160 MHz Teiler FF-Stufe DC: 2 Ausgangsfrequenz : 80 MHz
Für ein paar XORs und FF brauch ich kein Spice. Das kann ich auch noch im Kopf. Dumm nur, dass das CPLD deine Spice Simulation nicht sonderlich beeindrucken wird. Simulier's doch mal mit anderen Phasenverschiebungen als 90° an den XOR Eingängen....
Schlumpf schrieb: > Für ein paar XORs und FF brauch ich kein Spice. Das kann ich auch noch > im Kopf. Dumm nur, dass das CPLD deine Spice Simulation nicht sonderlich > beeindrucken wird. > Simulier's doch mal mit anderen Phasenverschiebungen als 90° an den XOR > Eingängen.... Was für einen Beruf übst du aus? Bitte nicht antworten. Lass mich raten: Konditor. Und - liege ich richtig? Dachte ich mir. Leg dich schlafen, du musst morgen früh raus.
Auf solche Leute regiere ich gar nicht mehr....
Böser Kommunist schrieb: > Gibt es irgedwelche Tricks,die mir weiterhelfen können? Um die Diskussion mal wieder ein bissel sachlicher zu machen: Es gibt keine Tricks und es braucht auch keine. Stattdessen guck lieber bei Texas zu den "Clocks and Timers". Dort finden sich dutzende IC's, die fü genau solche Aufgaben gedacht sind, mit LVDS oder TTL, single oder mehrfach und so weiter. Das Prinzip ist zumeist, auf dem Chip einen Oszillator im GHz Bereich zu haben, der per PLL auf den angelegten Referenztakt synchronisiert wird und dann aus dieser recht hohen Frequenz die benötigten Takte herunterzuteilen. Die Chips kosten nicht die Welt, also such dir den raus, der dir am besten gefällt. W.S.
Danke für ihre Antworten.Wie ich auch vermutet habe, muss ich wohl mit 62.5 Mhz auskommen.
Du könntest versuchen, zwei Zähler im CPLD parallel laufen zu lassen. Der eine zählt mit der steigenden Flanke des Taktes und der andere mit der fallenden. Beide Zähler zählen immer von 0..2 und fangen dann wieder von vorne an. Damit hast du eine Zeitbasis von 12 ns, die eine Periode eines 83,3 MHz Taktes ergeben würde. Durch die beiden Zähler hast du eine Granularität von 2ns. Mit der steigenden Flanke setzt du ein Register auf '1' , wenn beide Zähler den Wert 2 erreicht haben. Wenn der Zähler, der mit der steigenden Flanke zählt, auf 1 steht und der, der mit der fallenden Flanke zählt, auf 0 steht, dann setzt du damit ein weiteres Register mit der fallenden Flanke für EINEN Takt. Den Ausgang dieses Registers führst du auf den asynchronen Reset des Registers, welches mit der steigenen Flanke gesetzt wurde. Damit kannst du zumindest ungefähr einen DC von 50% erreichen.. TAKT ---- ---- ---- -- ---- ---- -- Zähler A 220000000011111111222222 Zähler B 222222000000001111111122 Hilfsregister 000000000000001111111100 Ausgangsreg. 001111111111110000000000 Hilfsregister wir mit der fallenden Flanke bei Zähler A = 1 und Zähler B = 0 gesetzt und bei Zähler A = 2 und Zähler B = 1 zurückgesetzt. Ausgangsregister wird mit der steigenden Flanke gesetzt, wenn beide Zähler = 2 sind. Das Hilfsregister setzt das Ausgangsregister asynchron zurück, wenn es auf 1 steht. Hoff, ich hab da keinen Denkfehler drin. Aber das sollte einen 83,3 MHz Takt mit einem DC von UNGEFÄHR 50% ergeben..
Ich verstehe die Diskussion nicht. Warum schlagen sich die Leutz die Köppe ein statt vernüftig zu diskutiere und warum werden nicht die 80MHz benutzt, wenn die Antwort auf dem Tisch liegt? Ich hätte noch einen alternativen Vorschlag, der braucht aber ein wenig Analogtechnik ausserhalb des PLD: Man stimmt mit einem Regelkreis einen Oszilator so ab, dass sein 1/8tel genau dem 1/25tel des Eingangs entspricht. (Phasenvergleich, langsame Nachführung). Der Oszillator wird per Schmitttrigger auf den PLD rückgeführt.
Mark F. schrieb: > Ich verstehe die Diskussion nicht. Warum schlagen sich die Leutz die > Köppe ein statt vernüftig zu diskutiere Verstehe ich auch nicht ;-)
UPS! Deinen Vorschlag sehe ich ja eben erst - den hatte ich gestern übersehen: Du kannst damit 83MHz? Ich bezog mich mit "Vorschlag auf dem Tisch" auf die Dokumente, die oben als PDF gelinkt waren, sehe aber nun, dass dort doch keine 80MHz zu machen sind. Geht es also nun oder doch nicht?
@ Mark: Wenn man 250 durch 3 teilt, erhält man 83,333 Mein Vorschlag war neben den in den PFDs genannten, ein weiterer, wie eine Division mit 3 realisierbar wäre. Den Vorschlag von Davis halte ich aus folgendem Grund nicht in einem CPLD realisierbar: FÜr die Funktion der mehrstufigen Multiplizierer ist es erforderlich, dass die Takte an den Eingängen der XORs exakt 90° phasenverschoben sind. Und so exakte Delays lassen sich in einem CPLD nicht ohne weiteres erzeugen. Was passiert, wenn das nicht der Fall ist, kann man recht einfach mit einem Stück Papier und nem Bleistift "simulieren".. Erster "Verdoppler" mit undefinierter Phasenlage der Eingänge: --------- --------- A (XOR1) -- --------- ------ --------- --------- B (XOR1) ---- --------- ---- -- -- -- -- Q (XOR1) -- ------- ------- ------- --- Zweiter "Verdoppler" mit undefinierter Phasenlage der Eingänge: -- -- -- -- A (XOR2) -- ------- ------- ------- --- -- -- -- -- B (XOR2) --- ------- ------- ------- -- - - - - - - - - Q (XOR2) -- - ------ - ------ - ------ - --- Und das nachgeschaltete T-FF macht daraus folgendes: --- --- --- --- Q (TFF) -- ------ ------ ------ --- Für mich sieht ein DC von 50% jedenfalls anders aus. Aber falls ich bei meinen Überlegungen etwas übersehen habe, möge man es mir nachsehen. Ich bin schon wieder so müde, da ich immer um drei aufstehen muss, dass die Regale gefüllt sind, wenn die Leute um sechs in meiner Bäckerei stehen :-)
Hallo böser Kommunist, die Frage, wie man die Frequenzteilung vornehmen könnte, ist zwar an sich sehr interessant, aber ich würde Dich gern nochmal auf die Aussage von Lattice User hinweisen: >> >> Ich bezweifle dass man auf diese Weise eine Clock bekommt die den >> Ansprüchen des ADC's an Jitter und Stabilität des Dutycycles genügt. Dazu schrieb Davis: > > Bei erhöhten Ansprüchen empfiehlt es sich, die Frequenz zu vervierfachen > und dann per FF durch 2 zu dividieren. Es stimmt zwar, daß man damit die Fehler mindern kann, man wird aber nicht die Qualität erreichen, die für Deinen ADC notwendig ist, falls dieser hochqualitativ (14 ... 16 Bit @80Mhz, vermutlich bereits darunter) ist. Resultat wird ein erhöhtes Rauschen sein. Von Analog Devices gibt es das Buch "The Data Conversion Handbook" von Walt Kester (auch kostenlos als PDF: http://www.analog.com/library/analogDialogue/archives/39-06/data_conversion_handbook.html ). Dort werden die Details besprochen und für unterschiedliche ADC-Bittiefen werden die Jitteranforderungen erläutert. Du wirst eine hochqualitative Taktquelle und ein gutes Taktverteilungsnetz benötigen. Durch ein FPGA oder CPLD sollte der Takt dabei niemals laufen. Viel Erfolg flipsi
Hm... mein Projekt (hobby) hat einen CPLD (ALTERA MAX II) und 3 ADC mit max 200 MSPS und 8 Bit Auflösung. Außerdem will ich einen Quarzoszillator als Taktquelle verwenden (die ich netterweise als Samples bekommen habe:). Zur Auswahl stehen http://www.maximintegrated.com/datasheet/index.mvp/id/5539 DS4300 (300MHZ) oder http://www.foxonline.com/pdfs/FXO_HC73.pdf die Version mit 250 MHZ Und ich dachte mir, ich kann mit meinem CPLD den CLK für die ADC erstellen, und so die Samplerate (fast) beliebig variiren. Sieht aber so aus, als brauche ich doch einen richtigen CLK distributor und eine PLL Einheit. Mein Projekt wird immer komplizierter:) Aber gut, so lernt man auch was
Böser Kommunist schrieb: > Und ich dachte mir, ich kann mit meinem CPLD den CLK für die ADC > erstellen, und so die Samplerate (fast) beliebig variiren. > > Si514/Si570/Si598 könnte das sein was du suchst http://www.silabs.com/products/clocksoscillators/xo/Pages/default.aspx
Lattice User schrieb: > Böser Kommunist schrieb: > >> Und ich dachte mir, ich kann mit meinem CPLD den CLK für die ADC >> erstellen, und so die Samplerate (fast) beliebig variiren. >> >> > > Si514/Si570/Si598 könnte das sein was du suchst > > http://www.silabs.com/products/clocksoscillators/x... Den habe ich auch sschon gesehen. Leider: "Currently, Silicon Labs offers free samples only to corporate customers." :(
Böser Kommunist schrieb: > "Currently, Silicon Labs offers free samples only.. Ja, es ist ein Problem, daß man als Bastler so oft auf's Schnorren angewiesen ist, bloß weil die hiesigen Distris einem nix verkaufen wollen. Nochmal mein Rat: Guck dich bei TI um und suche dann bei dem Farnell-Ableger oder Ebay. W.S.
Das wäre aber nun eine Lösung mit Neugeneration des Taktes. Wie wird das dann synchronisiert?
Davis schrieb: > Multiplikation 2 : 2 > > Zwischenfrequenz 2: 160 MHz > > Teiler FF-Stufe DC: 2 > > Ausgangsfrequenz : 80 MHz Wofür wird erst 2x nach oben und dann wieder runtergeteilt?
Ich werde das Problem einfach mit Prescaler lösen. D.h . rein gehen 250 Mhz, und ich kann mit meiem CPLD 125MHz, 62.5Mhz, 31.25 Mhz etc . erzeugen. Zumindest habe ich es mit meinem FPGA und 50 Mhz Input Clock erfolgreich getestet. Am Ausgang kriege ich saubere stabile Frequenzen.
Du könntest von 250MHz mit dieser Methode auf 240MHz runtergehen und dann durch 3 teilen: Beitrag "Re: Frequenz verschieben" Wobei Du im PLD manuell instanziierte Delays verwenden musst, da der Trick mit den IO-Zellen nur bei FPGAs funktioniert. Ist natürlich nur eine Lösung, um überhaupt 80MHz hinzubekommen, der Jitter liegt immer noch bei einigen %ten. >50 Mhz Input Clock erfolgreich Warum nimmst Du nicht die mal 8 und teilst durch 5?
Ehm, wie kann ich den Clock multiplizieren, ohne PLL zu benutzen?
Böser Kommunist schrieb: > Ehm, wie kann ich den Clock multiplizieren, ohne PLL zu benutzen? Du musst ja nicht multiplizieren, nur teilen.
> Mit einem Counter kann ich fast beliebige Frequenz ausgeben, aber ohne > 50% Duty Cylce Bedienung. Du gibts mit dem Counter das Doppelte aus und gibt es auf ein FF. 50% d.c. stellen sich automatisch ein.
> Danke für ihre Antworten.Wie ich auch vermutet habe, muss ich wohl mit > 62.5 Mhz auskommen. 250/1,5=166,7; 166,7/2=83,333_ Wenn Deine Schaltung 4,2% Übertaktung verträgt wohl die einfachste Lösung. Grüße Löti
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.