DSP für Signalauswertung eines liear Arrays

Gast #769521
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
Gast #769779
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!
Gast #770685
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.
Gast #770699
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
Gast #770847
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren