Forum: Digitale Signalverarbeitung / DSP / Machine Learning Pulsgenerator bis 4MHz steuerbar mit DSP


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kai Z. (liquidsteel)


Lesenswert?

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.

von PittyJ (Gast)


Lesenswert?

FPGA?

von Hotti (Gast)


Lesenswert?

Kai Zung schrieb:
> 4MHz betragen.
> Die Genauigkeit muss midestens 0.001% sein,
1/0,00001 -> 10000   x 4MHz = 400GHz

???

von Kai Z. (liquidsteel)


Lesenswert?

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.

von Nop (Gast)


Lesenswert?

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?

von Kai Z. (liquidsteel)


Lesenswert?

Leider nicht, trotzdem Danke fuer den Tip.

von Jens (Gast)


Lesenswert?

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

von Jens (Gast)


Lesenswert?

Fällt gerade noch auf:

0,001% von 800Hz sind nicht 0,8Hz!

von BerndB (Gast)


Lesenswert?

0,1%

von Kai Z. (liquidsteel)


Lesenswert?

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.

von ./. (Gast)


Lesenswert?

So wie das klingt, versuchst du Decimation von hinten
durchs Auge in die Brust...

von Detlef _. (detlef_a)


Lesenswert?

>>>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

von Purzel H. (hacky)


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.