Hallo, Ich benötige für ein Projekt zwei Clocks, welche mit einem Frequenzunterschied von ca. 1% laufen. Auf einen zweiten Oszillator würde ich gerne aus Platzgründen verzichten. Gibt es eine elegante Methode aus einer PLL zwei Signale zu gewinnen, welche so nahe beieinander liegen. Mit Frequenz multiplizieren / dividieren ist das ja eher nicht zu erreichen. grüße pleung
Meine Glaskugel is leider grade kaputt, daher mehr Infos.
Es geht ganz einfach: Man zählt die Impulse mit und überspringt jedem 100sten.
Z.B: PLL mit 200 MHz taktet zwei Counter. Der eine Counter zählt immer auf 100 und toggelt dann ein Register Der andere Counter zählt immer auf 99 und toggelt dann ein Register. Die Ausgänge der beiden Register sind dann Rechtecksignale mit 1MHz.. bzw 0,99MHz
.. Ähh sorry.. natürlich nicht 0,99 MHz sondern 1,01 MHz ;-)
Der TE scheint verschwunden, kann die Frage nach den benötigten Frequenzen wohl nicht beantworten.
Weltbester FPGA-Pongo schrieb im Beitrag #4575211: > Der TE scheint verschwunden, kann die Frage nach den benötigten > Frequenzen wohl nicht beantworten. Vielleicht eine Troll-Attacke; der Username "Blähung" richt danach.
Falls doch jemand sowas braucht: Das Takteinsparen und Beschleunigen kann man bei FPGA mit den IOs und den Delays machen und dann eine zweite PLL nachschalten, die die Sprünge glättet: http://www.96khz.org/oldpages/frequencyshifter2.htm
Entschuldigung, war verreist und konnte deshalb den Thread nicht mehr verfolgen. Erst mal Danke für die vielen Antworten. Die Frequenzen die ich benötige sind ca. 4MHz und als 2. Frequenz 4.05MHz wobei die genauen Werte nicht entscheidend sind. Die Anwendung ist folgende: PLL_1 triggert an jeder Flanke ein Signal, welches sehr hochfrequent (im GHz Bereich) ist und somit nicht vom ADC abgetastet werden kann. PLL_2 triggert eine Sample-And-Hold Schaltung, um dieses periodische Signal zeitsequentiell (sozusagen das Moiré) abzutasten.
Wäre da nicht eine Phasenverschiebung sinnvoller?
@tokuhila eine lineares Phasenschieben wäre natürlich auch möglich. mit
und
wobei das dann ja mit linearem
auf
rausläuft, was wieder einer Frequenzänderung entspricht. Dazu müsste mann dann bei jedem Takt die Phase um wenige ns verschieben. Ist sowas machbar?
pleung schrieb: > Dazu müsste mann dann bei jedem Takt die Phase um wenige ns verschieben. > Ist sowas machbar? Angeblich können schon die kleineren TI C2000er Delays von einigen 100 ps erzeugen. Selbst mit einem Wald- und Wiesencontroller neuerer Bauart (z.B. STM32F4 auf Disco-Board) kann man mit ca 5 bis 6 ns am Timer rumschubsen. Wenn der sonst nichts zu tun hat :-)
> Dazu müsste mann dann bei jedem Takt die Phase um wenige ns verschieben. > Ist sowas machbar? Ist das nicht üblich um periodische Signale größer Samplefrequenz zu erfassen? Oszis nennen das Random Sampling. Du brauchst ja für dein zeitversetztes Sampling eh einen Zeitverzug den du so hast. Im FPGA machbar, im uC ebenso Bei zwei verschiedenen Frequenzen wirds aufwändiger.
Bei zwei PLLen wird es eh jittern wie Hund. Sowas macht man mit einem digitalen Monoflop.
@Karl: Ok wenn das einfach machbar ist, dann werde ich mich da mal einlesen. Noch eine verstädnis Frage. Wie funktioniert denn das technisch. Wenn ich eine Taktfrequnez von 16MHz habe ich ja eine Taktperiode von 250 ns. Wie kann ich damit ein delay im ps Bereich erreichen. @tokuhila: danke für den Hinweis auf das Random-Sampling, das schaue ich mir mal an @frimark: Mit einem Monoflop kann ich doch nur ganze Takte hochzählen oder? Da wird ein Delay von wenigen ns bei 4Mhz Taktfrequenz nicht machbar sein.
An Pleung: ich nehme mal an, dass dein abzutastendes Signal periodisch ist und du aus der Schwebung eine Rekonstruktion machst oder gezielt versetzt abtastest. Klingt etwas nach Radartechnik. Mit PLLs wird sowas ein bisschen zum Roulette, wenn du nicht eine gute Referenzquelle (GPS, etc.) hast. Am besten funktionieren meine Meinung nach die verschiedenen Lösungen von variablen Delays, aber da wird's dann sehr FPGA-spezifisch. Auf den Spartanern kannst du mit dem DCM bzw. den IODELAYs was machen, ansonsten bleibt dir immer noch die manuelle Plazierung von LUTs für ganz kleine Delta-T, das machen offenbar auch die Teilchenphysiker so (Google mal zum Thema TDC und Cern). Knifflig wirds nur, wenn die Phase sehr schnell variieren muss, aber das dürfte bei 4 MHz noch gnädig sein. Und sonst musst du halt mehrere Delays instanziieren, wird dann nur mit der MUXerei des Triggers etwas gefährlich. Grüsse, - Strubi
Hm, ist sowas nicht mit einem schnellen Zähler lösbar? Takt per PLL auf 100 oder 200 MHz erhöhen, damit auf einen Zähler, welcher dann im 10ns/20ns Raster zählt. Verknüpft mit dem 4 MHz Signal erhalte ich dann das Sample-Signal und weiß sogar die zeitliche Zuordnung?
Clock Synthesizer IC wie cdce... von Ti wurden für sowas entwickelt. Es gibt auch eine kostenlose Software dafür: ClockPro(TM) Programming Software
pleung schrieb: > Wie kann ich damit ein delay im ps Bereich erreichen. Durch die Hinzuschaltung eines UND-Gatters (bei dem beide Eingänge verbunden sind) Oder zwei UND-Gatter. Oder drei ... oder noch mehr .... Für sowas braucht man kein FPGA ... sondern "Logik" :-)
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.