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
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.
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!
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?
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.
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
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
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!
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.