Forum: Digitale Signalverarbeitung / DSP / Machine Learning Digitale Signalverarbeitung optischer Signale


von YouJin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Martin S. (strubi)


Lesenswert?

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

von YouJin (Gast)


Lesenswert?

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

von Martin S. (strubi)


Lesenswert?

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

von YouJin (Gast)


Lesenswert?

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?

von Strubi (Gast)


Lesenswert?

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

von ralf (Gast)


Lesenswert?

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.

von YouJin (Gast)


Lesenswert?

Danke fuer eure Hilfe!! Ich werde mich nun an einen Prototypen setzen. 
Werde natuerlich von Erfolg oder Misserfolg :) unterrichten.

Viele Gruesse

von YouJin (Gast)


Lesenswert?

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 :)?

von ralf (Gast)


Lesenswert?

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.

von YouJin (Gast)


Lesenswert?

Danke fuer den Tip. Der ADS1610 ist aber leider nirgens mehr zu 
bekommen. Kennt da jemand alternativen. Ich suche bereits mehrere Tage 
verzweifelt.

von ralf (Gast)


Lesenswert?


von YouJin (Gast)


Lesenswert?

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.

von YouJin (Gast)


Lesenswert?

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