Forum: Digitale Signalverarbeitung / DSP / Machine Learning DSP für Signalauswertung eines liear Arrays


von Franz Neumann (Gast)


Lesenswert?

Hi,

bei meinem Thema gehts um die Erweiterung meiner bisherigen Arbeit in 
der Uni zur Signalauswertung von Daten eines Fotodiodenarrays (TAOS). 
Bisher lief der Aufbau mit einem Atmega32 was allerdings den Nachteil 
hat, dass meine Messungen aufgrund der extrem langsamen Berechnung der 
Kreuzkorrelation halt nur stichprobenartig sind und nichts mit Echtzeit 
zu tun haben. In der Erweiterung soll auch die FFT benutzt werden 
(deshalb DSP).

Nun soll die ganze Anordnung um einen DSP erweitert werden und da das 
Thema DSP für mich neu ist, hätte ich ein paar Fakten zur Wahl:

- Möglichkeit der Entwicklung unter Linux (bzw. wine/ extremfall 
virtualisierung von windows 2000 im virtualbox) mit C
- ein sehr schneller AD Wandler, 8...10bit Genauigkeit egal, hauptsache 
Geschwindigkeit was geht in seiner Klasse
- wünschenswert ein Datenspeicher von mind. 2kByte und Programmspeicher 
von ca. 32kByte ... sprich die Klasse Atmega32
- usb und rs232
- sowie 2x 8Bit IO Ports

mehr benötige ich nicht. Die Frage stellt sich nun bei welcher Marke ich 
anfangen soll. Ich hatte bisher auch schon mit dem TI MSP430 zu tun und 
war sehr angetan von den Tools und Dokumentationen welche TI 
bereitgestellt hat. Da gibts dann z.B. den C2000, speziell den 
TMS320LF2403A. Aber ich seh halt den Controller etwas als overkill im 
64pin Package.

Gibts es für meinen zwek was kleineres, leichteres, was auch das Design 
herum erleichtert? Ich habe eine ganz spezifische Aufgabe und benötige 
den Rest so gut wie nicht. Zudem wären fertige Developmentboards 
hilfreich?

Also ich würde ich sehr über alternative Vorschläge freuen!

Grüße
Franz

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Die wichtigste Information fehlt: was genau soll wie schnell 
berechnet werden? Wie schnell muss der AD-Wandler sein? Dann kann man 
sich überlegen ob man einen AVR, ARM, dsPIC, C2000 oder sonst was nimmt. 
FFT kann der AVR und jeder andere Controller auch, das alleine ist kein 
Grund einen DSP zu verwenden.

von Franz Neumann (Gast)


Lesenswert?

Also wie gesagt ich berechne aus jeweils 2 Datensätzen je 128Byte 
kommend von dem Fotodiodenarray die Verschiebung über die 
Kreuzkorrelation beider Signale. Das mache ich derzeit über die 
Berechnung der Faltungssumme ohne FFT auf einem Atmega32. Dabei ist der 
Zeitaufwand der Berechnung zur Messwerterfassung etwa 1:20 (hab jetzt 
keine genauen Zahlen im Kopf). Das heißt, ich bekomme einen Großteil der 
Geschehnisse vor dem Array nicht mit.

Aktuell erfasse ich die Daten mit einer Samplezeit von ca. 3µs (Der 
Atmega AD Wandler läuft dabei mit nem Teilungsfaktor von 4 und damit mit 
4MHz). Das ist eigentlich hinreichend, könnte schneller gehen, muss aber 
nicht für meine Anwendung.

Also viel wesentlicher ist die Bearbeitungsgeschwindigkeit der 
Korrelationsberechnung! Daher hab ich das als wesentlicher gesehen! 
Dafür ist leider der 8bit Atmega nicht wirklich geeignet, zumal ich auch 
auf 16bit Integer zurückgreifen muss. Daher meine Wahl für einen 
Signalprozessor - es geht um reine Verarbeitung.

Danke schonmal für die Hilfe!

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Du lässt den armen ADC im AVR wirklich mit 4 MHz laufen? Dass das weit 
abseits jeder Spezifikation ist weißt du? So schnelle ADCs findet man 
normalerweise nicht in Controllern integriert, dsPIC hat z.B. nur 
Wandler bis 1 MSPS.

Wie schnell muss denn nun konkret die Korrelation berechnet werden?

von Franz Neumann (Gast)


Lesenswert?

Ja ich weiß, dass das außerhalb der Spezifikation ist. Genauigkeit 
spielt keine so große Rolle - es geht um reine Objekterkennung in 
Kanälen. Der Aufbau ist auch eher experimentell um zu sehen was machbar 
ist.

Wenn der AD Wandler langsamer sein sollte, kann ich auch auf einen 
externen ausweichen.

Ich hätte die Korrelation schon gerne weit unter 1ms berechnet. Ich weiß 
aber auch gar nicht wie schnell das mittels DSP i.Allg. möglich ist. 
Daher habe ich mich auch an dieses Forum gewandt, da dass ja sehr 
praxisbezogen ist. Ich sag mal so, optimal ist das bestmögliche, was ein 
Controller her gibt, der obige Bedingungen erfüllt.

von Frank (Gast)


Lesenswert?

Hi,

schau Dir doch mal die "Stamp" Boards für die Analog Devices Blackfin 
DSP an - das ist die "open source"-Variante der Evaluation Boards für 
die Blackfin DSPs. Analog unterstützt den Einsatz von uClinux und einer 
gcc-Toolchain.

Du bekommst für ca. 160 EUR ein Evaluation Board mit einem 500 MHz-DSP, 
der bis zu 1000 MIPS auf 16 Bit Operationen schafft, und auf dem ein 
embedded linux-System läuft. Du kannst deine Applikation dann ganz 
einfach in C programmieren und unter Linux auf dem DSP laufen lassen.
Für optimale Performance müsstes Du natürlich einiges an 
Optimierungsarbeit einplanen (Portierung der rechenintensiven 
Operationen nach ASM), aber wenn Dein Algorithmus bisher auf einem 8-bit 
Microcontroller läuft, sollte es möglich sein, das ganze ohne großen 
Optimierungsaufwand komfortabel und mit der gewünschten Performance auf 
einem solchen Prozessor laufen zu lassen.

Du müßtest natürlich noch einen externen A/D-Wandler anschließen - ohne 
jeden Hardware-Entwicklungsaufwand könntest Du ein "Daughter-Board" mit 
dem AD7476A hinzukaufen (ca. 25 EUR), welches direkt auf das Eval-Board 
gesteckt wird und 1 Mega-Sample/s bei 12 Bit Auflösung liefert.

Nähere Infos zur Entwicklungsumgebung findest Du unter 
http://blackfin.uclinux.org, die Boards kannst Du bei 
http://www.digikey.de beziehen (einfach nach "STAMP" suchen).

Natürlich ist das ganze finanziell deutlich teuerer als ein 8-bit-uC, 
den man auch auf eine Lochrasterplatine löten kann - wenn es aber nicht 
darum geht, ein serienreifes Produkt zu entwickeln, sondern Du möglichst 
schnell zu ansehnlichen Ergebnissen kommen möchtest, könnte sich dieser 
finanzielle Aufwand durchaus lohnen.

Gruß
Frank

von Franz Neumann (Gast)


Lesenswert?

Hi,

danke für den Tipp. Habs mir mal angesehen (BF533). Das ist aber immer 
noch das gleiche Problem. Extrem überladen mit Funktionen, die ich nicht 
brauche. Ich muss meinen Betreuer ja überzeugen, einen geeignete 
Anschaffung zu tätigen.

Mir fehlt irgendwo die schlanke Alternative.

Würde mich noch über weiteres Tipps freuen!

Grüße
Franz

von Franz Neumann (Gast)


Lesenswert?

So bins nochmal. Hab mir mal privat das LPC2103 Board hier aus dem Shop 
zum Basteln bestellt. Wenn mir das zusagt, dann denk ich mal ist so ein 
kleiner ARM7 die Wahl.

Trotzdem freue ich mich über weitere Tipps!

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Blackfin ist extremst Overkill! Der AVR schafft die FFT ja schon in < 10 
ms, um da noch einen Faktor 10 draufzulegen wird ein kleiner ARM locker 
reichen. Ansonsten würde ich mich mal in Richtung dsPIC oder C2000 
umschauen.

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.