Hallo zusammen, ich bin neu im Gebiet der DSP und arbeite mich gerade fuer ein Projekt in das Themengebiet ein. Mir faellt es dementsprechen noch an Erfahrung und hoffe das mir jemand weiterhelfen kann. Und zwar geht es erstmal um die simple Frage, ob die folgende Aufgabe mit einem DSP realisiert werden kann: Mithilfe von mehreren Laserstrahlen und Interferenzmustern wird ein Signal mittels Photodiode aufgenommen. Im Anhang ist das Eingangssignal mit einem digitalen Ossi aufgenommen, wobei mehrere Signaldurchlaeufe ueberlappend dargestellt sind. Das Signal weisst definitif eine stark dominierte Frequenz (Grundfrequenz) auf, aber wie zu sehen (s. Signal1), ist diese mit anderen Frequenzen vermischt. Das zweite Bild im Anhang zeigt das Spektrum, wobei der Linke Peak der 0-Peak ist und der rechte Peak die dominierende Frequenz zeigt. Diese Frequenz variiert dabei dynamisch in einem Frequenzbereich von 70 kHz bis 4 MHz. Die Aufgabe ist es nun die dominierende Frequenz herauszufinden. Das wars :). Bislang wurde diese Aufgabe analog und extrem kompliziert durchgefuehrt. Dabei liegt die Genauigkeit jedoch bei 0.005% bei einer Ausgaberate von von 0.25ms. Laesst sich eine derartig genaue und schnelle Signalverarbeitung mit einem DSP realisieren? Wenn ja, dann habe ich noch ne Frage :D Beste Gruesse
Hi, klingt nach einer Anwendung, die ein digitales DSP-Radio wohl hinbekommen koennte. Allerdings bin ich mir nicht sicher, ob ein einzelner DSP das so exakt schafft, der Knackpunkt waere auch der AD-Wandler. Ich wuerde mir ev. noch ein FPGA als Vorverarbeitungs-Option im Hinterkopf behalten. Hast du dir mal den GnuRadio USRP (oder USRP2) angesehen? Gruesse, - Strubi
Hi, GnuRadio kenn ich leider nicht, aber ich werde es mir mal genauer anschaun. Aber noch was ergaenzendes: Analog ist es zurzeit wiefolgt geregelt: Das Signal wird zuerst parallel mit 4 Kanaelen je 6 bandpaessen gefiltert. Die filter und kanaele ohne Peak werden abgeschaltet bis nur noch ein Bandpass aktiv ist. Diese Methode wurde gewahlt, damit die Grundfrequenz schneller gefunden werden kann, zumindestens beim Start-Up. Sobald die Frequenz gefunden ist, arbeitet ein FM-diskriminator mit einer Bandbreite von nur 2 kHz und verfolgt sozusagen das Signal. Koennte man das nicht auch als Verfahren beim DSP anwenden. Es waehre nicht schlimm wenn bei Start-Up der DSP paar ms braucht um die Frequenz zu finden. Wenn er aber dann die Freuenz hat muesste er dann ja auch, wie im analogen verfahren, nur 2 kHz um die Grundfrequenz "anschaun". Somit muesste der Rechenaufwand stark veringert werden. Das koennte man doch mit mehreren verschachtelten FFTs realisieren oder? Wieso meinst du, dass der Knackpunkt der AD-Wandler waere? Was fuer eine Bit und Sample-Rate muesste er denn haben um die erforderliche Genauigkeit zu liefern? Guresse
Also wenn es dir nur um die Frequenz geht, reichen wohl 8 Bit, und nach Shannon plus etwas "headroom" waerst du mit einem 20 MHz-ADC sicher zumindest fuer deine demodulierte Frequenz bedient. Aber wenn du erst einen groben Search (FFT) machen musst, brauchst du schon einen ADC der deine Traegerfrequenz (wie hoch war die eigentlich?) aufloesen kann. Ich denke mal "laut" mit: FFT klappt sicher zum Auffinden der Frequenz. Fuer den Rest machst du ja doch ansich nur eine FM-Demodulation, richtig? Taete es da nicht ein billiger Demodulatorchip mit Base-Frequenzkonfiguration per i2c o.ae.? Die demodulierte Frequenz koenntest du dann dem obigen, 'billigen' ADC fuettern und per SPORT an einen einigermassen intelligenten Chip raushauen. Also quasi die analog/digitale Hybridloesung. Im Narrow-Band kommst du leider mit der FFT nicht weit, da muesstest du schon eine gaengige digitale FM-Demodulationstechnik anwenden. Vermutlich muesstest du auf der volldigitalen Seite gar nicht viel neu machen, da die Jungs von GNUradio mit dem USRP eine ganz schoene Bibliothek an Verarbeitungsroutinen anbieten. Aber wie leicht man den FPGA-basierten DSP programmiert, weiss ich nicht - die Community ist aber mit Sicherheit gross und wird dir bestimmt helfen :-) Gruesse, - Strubi
Ich bin da eher skeptisch ob ein Demolatorchip schnell genug ist. Wie gesagt ich brauche eine Ausgaberate von 0.25ms und dabei variiert die Eingagsfrequenz dynamisch bis 4 MHz. Hmm, wieso komm ich im Narrow-Band nicht weit mit FFT? Da schein es bei mir paar verstaendnisprobleme zu geben. Also nehmen wir mal den Fall an, dass wir eine Eingangsgrundfrequenz von 3 MHz haben. Nun muss das "Device" ein Spektrum von 0/1 Hz bis 4 MHz abtasten und mir innerhalb von 0.25ms sagen koennen, was die Grundfrequenz ist, und dass mit einem max. Fehler von 0.005%. Ist sowas mit einem schnellen AD-Wandler und DSP machbar?
Hi, sorry, hatte irgendwie im Kopf dass die 70khz-4mhz die aufmodulierte Frequenz seien. Aber ist ja dein "Traeger". Dann ist das ja nicht ein Wahnsinns-Frequenzbereich, das sollte ein Demodulatorchip doch laengst schaffen. Die Frage ist nur, wie schnell das Signal in deinem doch sehr breiten Band herumzappelt, also wie schnell der Search und die Konfiguration des Chips fuers schmale Band vonstatten geht (ich nehme an mit "schnell" meitest du das Tunen des Chips?) Nochmal laut denken: - Modulationsfrequenz 4kHz (^= 0.25 ms) - Erst FFT fuers grobe Band ("search") - Dann FM-Demodulation (PLL? Quadratur?), ev mit vorgeschaltetem Bandpass? Sowas duerfte mit nem simplen DSP-Radio hinzukriegen sein, hab mal vor laenger ne Demo am Messestand von AeroStream gesehen. Da braeuchtest du die FPGA-Power des USRP nicht.. Wegen der FFT im Schmalband: bei einer FFT hast du ja normalerweise alle Frequenzen von 0 bis N im Spektrum. Du willst ja aber nur eine hohe Aufloesung innerhalb [x-e, x+e], richtig? Wenn ich da richtig gewickelt bin, muesstest du die FFT gewaltig modifizieren, um fuer diesen Frequenzbereich in dem kleinen Zeitfenster eine effiziente Berechnungsmethode zu bekommen. Du suchst ja nur die Grundfrequenz, und kennst nach dem "search" das Band, also brauchst du nur noch lokal mittels einer Referenzfrequenz zu demodulieren. Du koenntest auch gleich eine IIR(Goertzel)-Filterbank nehmen, das kostet sehr wenig Rechenaufwand. Also: machbar bestimmt. Die Frage stellt sich im Endeffekt nur nach Algorithmus, Komplexitaet, und verfuegbare MIPS, und dem geeigneten ADC plus gute Quarzreferenz. Letzeres kannste ja aus diversen Referenzapplikationen googeln. Und fuers Prototyping tut's ja erst mal Octave/Matlab. Gruesse, - Strubi
Ja das geht. Zuerst ein analoges Antialiasing-Filter mit 4Mhz Passband und mehr als 40dB Dämpfung ab 8Mhz. Dann mit 12Msps abtasten und kontinuierlich in einen Ringbuffer im DSP schreiben. Der DSP berechnet davon alle 0,25ms eine >=4096 Punkte FFT mit Fensterfunktion. Das Maximum der FFT ergibt die grobe Frequenz. Die genaue Frequenz kann aus der Phasendrehung bei diesem FFT-Koeffizienten zur vorhergehenden FFT berechnet werden.
Danke fuer eure Hilfe!! Ich werde mich nun an einen Prototypen setzen. Werde natuerlich von Erfolg oder Misserfolg :) unterrichten. Viele Gruesse
Ich suche gerade nach einem passenden DSP. Ich habe mich erstmal bei NI's DSP festgesetzt. Mithilfe der NI C6000 Library habe ich mal ausgerechnet wie lange eine FFT dauern wird. Gemaess der Cycles braucht eine Complex FFT Radix4 mit 4096 Punkten und einem DSP mit 600 MMACS 0.1 ms Rechenzeit. Hab da an einem Single Core mit 300 MHz gedacht. NI's TMS320C67x serie bietet da eine gute auswahl. Floating Point ist fuer diese anwendung nicht noetig, richtig?? Bei dem ADC bin ich nicht ganz sicher. Da ich wie gesagt einen sehr geringen Fehler brauche, haette ich da an einen 16 bit (12 Msps) ADC gedacht. Wie ich schon sagte habe ich nicht viel Erfahrung und je mehr ich mich in das thema einarbeite, sehe ich, dass mein Vorhaben eher Kinderkram ist :). Hat jemand vlt. einen Beispielcode fuer einen NI DSP C6000 der direct von einer ADC gespeist wird, so die ersten schritte :)?
Schau dir mal den ADS1610 an. http://focus.ti.com/lit/ds/symlink/ads1610.pdf Bei delta-sigma ADC kannst du dir auch den analogen Antialiasing-Filter sparen und es reichen dann auch 10MSPS für 4.9MHz Bandbreite.
Danke fuer den Tip. Der ADS1610 ist aber leider nirgens mehr zu bekommen. Kennt da jemand alternativen. Ich suche bereits mehrere Tage verzweifelt.
Du kannst bei Ti Muster bestellen. http://focus.ti.com/docs/prod/folders/print/ads1610.html http://focus.ti.com/general/docs/distributorinfo.tsp?countryCode=DE
Auf die Idee bin ich auch schon gekommen :). Klapper schon seit eingen Tagen verschiedene Supplier an. Gluecklicherweise bin ich heute auf ein Unternehmen gestossen, dass den AD noch auf Lager hat. Ich habe von den meisten gehoert dass der AD nicht aktuell und die Nachfrage sehr gering ist. Wundert mich erlichgesagt ein bisschen.
@ ralf Was genau meintest du mit "Die genaue Frequenz kann aus der Phasendrehung bei diesem FFT-Koeffizienten zur vorhergehenden FFT berechnet werden." ? Desweiteren bringt mir ja nichts wenn ich jede 0,25 ms eine FFT machen kann, aber ich 0,4 ms brauche um 4096 Samples aufzunehmen. Ist es eigentlich richtig gedacht, dass wenn ich mit einer hoheren Samplerate arbeite auch die Aufloesung der FFT hoeher wird? Somit wuerde eine hoehere Samplerate zu einer hoeheren Ungenauigkeit fuehren. Ich bin mir da mit dem ganzen Vrohaben nicht mehr so sicher, denn das Sampeln von 4096 Punkten dauert ja mit 10 MSPS bereits 0,4ms und eine hoehere Samplerate wirkt sich aufgrund der FFT-Aufloesung negativ auf die Genauigkeit aus.
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.