Hi, ich bin auf der Suche nach einer Loesung um eine in der DSP (C6747) errechneten Freuqenz in Pulse umzuwandeln. Die Pulsfrequenz kann dabei von 800Hz bis 4MHz betragen. Die Genauigkeit muss midestens 0.001% sein, d.h. Aufloesung von mindestens 0.8Hz!! Um das mit der DSP zu realisieren schein mir bislang unmoeglich. Die internen Timer arbeiten mit 24MHz und koennen somit die Genauigkeit nicht errechen. Hat jemand Vorschlaege wie ich es realisieren kann, am liebsten noch ueber I2C Bus.
Kai Zung schrieb: > 4MHz betragen. > Die Genauigkeit muss midestens 0.001% sein, 1/0,00001 -> 10000 x 4MHz = 400GHz ???
Habe mit FPGAs absolut gar keine Erfahrung. Sagen wir mal ich koennte da noch paar Abstriche machen, wie z.B. nur bis 1MHz Pulse und nur 0.01% Genauigkeit. Welchen FPGA koennte ich da nehmen. Ich frage, weil wenn ich mir die Datenblaetter von verschiedenen FPGAs anschaue komme noch nicht ganz dahinter wie schnell die FPGA dafuer sein muss. Ich habe auch schon an sowas wie eine DDS gedacht, z.B. AD9837. Ueberschreitet meine Anforderung um Weiten und ist dabei einer der billigsten und langsamsten DDS.
Vllt. gibts von denen auch noch ein paar Andere die Deine Anforderungen besser treffen: http://www.silabs.com/products/clocksoscillators/mems/pages/si504.aspx Oder Du kannst mit einem Frequenzoffset leben?
Könntest du etwas genauer beschreiben, was du machen willst. Mir scheint die Anforderung an die Genauigkeit etwas hoch. Ich weiss, dass sind wieder Diskussionen wie "Ich brauche eine 16-bit ADC" und "Nein, brauchst du nicht, das geht mit 10!" Aber vielleicht hast du dich mit deiner Genauigkeit ja verrechnet. Mit deinen reduzierten Anforderungen bist du immer noch bei 10GHz und das ist bei weitem keine Kleinigkeit. Vielleicht gibt es ja ganz andere Lösungsansätze, die auch umsetzbar sind. Aber da fehlen noch die Inforamtionen von deiner Seite. Gruß, Jens
Fällt gerade noch auf: 0,001% von 800Hz sind nicht 0,8Hz!
Ja, mein Fehler ... Ok um klartext zu sprechen: Die DSP errechnet einen Laengenwert und das mit einem Udate-Rate von 1ms. Die Pulse spiegeln die Laenge wieder. Die Genauigkeit bezieht sich also nicht auf die Pulsfrequenz, sondern auf die Pulsanzahl. Die genauigkeit ist also relativ, da es drauf ankommt wie lange man die Pulse zaehlt. Ich generiere die Pulse bislang mit dem internen DSP timer (24 MHz). Dabei aktualisiere ich die Pulsfrequenz jede milisekunde. Bislang erreiche ich mit meinem System eine Genauigkeit von 0.01% bezogen auf die Pulsanzahl. Inzwischen haben sich die Anforderungen veraendert, sodass ich nun mit der Pulsfrequenz bis 1 MHz gehen muss und dabei die Genauigkeit der Pulsanzahl innerhalt 0.01% sein muss. Bislang nutze ich ja 24 MHz timer, und kann gerade mal bis 50kHz im Rahmen der Genauigkeit bleiben. Somit koennte man ja annehmen, dass ich nach der Lehre des Dreisatzes mit 500 MHz timer, Pulse bis 1 MHz generieren kann die meinen Genauigkeitsanforderungen entsprechen. Und da ich wie genagt keine Ahnung von FPGAs habe: gibt es sowas wie ne "kleine schnelle" FPGA die diese "einfache" aufgabe der Pulsgeneration loest.
So wie das klingt, versuchst du Decimation von hinten durchs Auge in die Brust...
>>>Bislang nutze ich ja 24 MHz timer, und kann gerade mal bis 50kHz im
Rahmen der Genauigkeit bleiben.
Nein, Du kommst bis 2400Hz, nämlich 0.01% von 24MHz:
Zähler mit 10000 laden, 2400Hz kommt raus.
Zähler mit 9999 laden, 2400.2400... Hz kommen raus, ca. 0.01% daneben.
Jede höhere Frequenz wird grober aufgelöst.
Nimm ne DDS, das geht.
Wenn die Zahl der Pulse nicht für jeden Millisekunden Intervall mit der
geforderten Genauigkeit stimmen muß, sondern nur 'im Mittel', geht das
auch mit Deiner Hardware. Dann kannst Du den Zählerendwert enstprechend
der Messwerte 'modulieren'. Damit handelst Du Genauigkeit gegen
Geschwindigkeit.
Cheers
Detlef
Natuerlich kann man beliebige Frequenzen erzeugen, die Frage ist dann eben wie schnell die aendern sollen. Standardmaessig nimmt man eine PLL, wenn eine Integer PLL nicht hinkommt eine Fraktionale. Die Loopbandbreite ist dann eben das Limit.
Das kann doch jedes neue CPLD locker. nen MAX2 im 3er speedgrade kann nen 64 Bit Counter mit 200MHz. http://www.altera.com/literature/hb/max2/max2_mii51005.pdf selbst ein EPM7000S kommt auf fCNT von 175.4MHz laut http://www.altera.com/literature/ds/m7000.pdf
Hallo, PLL braucht eine Einschwingzeit und wird bei schnellen Wechseln probleme machen, oder Phase Noise (Jitter) steigt stark an. Ich würde sagen ein CPLD/FPGA ist die einzigste uns preiswerteste Lösung. Mit etwas VHDL kommt man da schon recht weit. Ich habe vor Jahren damit einen PWM mit 500MHz Takt aufgebaut. Eine PLL brauchst du zum Takten vermutlich trotzdem. Gruß Sascha
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.