Hallo,
ich möchte gern in die DSP-Programmierung einsteigen, jahrelange
Benutzung von Matlab/Octave sowie die thematische Beschäftigung mit
optischen Drehgebern (sin/cos-Signale) bewegen mich dazu.
Nun gibt es von Microchip diese dsPICs, doch wie schlagen sie sich im
direkten Vergleich zu DSPs von TI und AD? Sind sie gleichwertig oder
eine Lösung angesiedelt zwischen Microcontroller und "echten" DSPs?
Die Anforderungen an die Plattform für das Thema mit dem ich mich
beschäftigen möchte dürften relativ eindeutig sein, es geht um
brauchbare ADCs - gute Linearität, hohe Auflösung (>=12bit), hohe
Abtastrate (bis zu 500kSps), synchrone Abtastung von (>4) Kanälen
gleichzeitig (sin/cos, -sin/-cos, Referenz), vorzugsweise mit
differentiellen Eingängen - und ausreichend Performance des DSPs selbst
um Signalkorrekturen (Amplitudenkorrektur, Offsetkorrektur,
Phasenkorrektur) vornehmen zu können, zu interpolieren und die Position
an verschiedenen Schnittstellen zur Verfügung zu stellen und das alles
möglichst zu einem akzeptablen Preis (<10,-€/Stück).
Mir sind natürlich Interpolations-ASICs bekannt, die Drehgeber mit denen
ich mich allerdings beschäftigen möchte sind nicht von der Stange
sondern eine Eigenentwicklung und bringen Herausforderungen mit sich,
die kommerzielle Systeme nicht aufweisen.
Mein bisheriger Ansatz war Messdaten mit einen DSO aufzunehmen und meine
Auswertealgorithmen offline auf die Daten loszulassen, dass soll künftig
online und echtzeitfähig werden, sprich mittels DSP.
Ich würde mich freuen, wenn mir jemand Tipps und Erfahrungsberichte
geben könnte, mit welcher Plattform man da gut beraten ist und da eine
Plattform nicht nur aus dem DSP selbst besteht sondern auch aus der
zugehörigen Entwicklungsumgebung möglichst Tipps unter Berücksichtigung
des Gesamtpaketes.
Herzlichen Dank.
Die dsPICs sind eher Mikrocontroller mit DSP-Erweiterungen. Die
"richtigen" DSPs von TI und AD sind nochmal eine ganz andere Klasse,
sowohl von der Rechenleistung als auch vom Entwicklungsaufwand
insbesondere bei der Hardware. Wobei ... Zu meiner Studienzeit war der
dsp56002 insbesondere für Audioapplikationen sehr angesagt. Der lief mit
bis zu 40 MHz. Die dsPIC33F sind heutzutage genauso schnell, die
dsPIC33EP laufen mit 70 MHz (Opcode Cycles, nicht Clock
Cycles/Quarztakt(Faktor 2 höher)). Also Spaß haben kannst Du damit
schon.
Der Compiler erzeugt standardmäßig nur Code für PIC24, benutzt also die
DSP-Erweiterung nicht. Die sprichst Du mit speziellen Intrinsics an, die
dann die passenden Opcodes erzeugen). Steht alles im Compilermanual oder
bei Microchip.
dsPICs sind gut für Motorsteuerungen (BLDC), Regelungssysteme, einfache
Audioanwendungen etc etc. Bei Deiner gewünschten Abtastrate habe ich
jedoch ernste Zweifel.
Deine Anforderungen an die ADCs kannst Du sehr wahrscheinlich nur mit
externen ADCs erfüllen - egal welchen DSP Du nimmst. Fast alle DSPs
haben eben nicht n ADCs an Board, sondern eben nur einen mit einem
Multiplexer davor. (Ausnahme: einige TI MSP430F6xxx für Energy Metering,
die haben tatsächlich bis zu 7 24-BIT ADCs, die synchron abtasten, aber
nur mit einigen kSmp, mehr braucht man für die 50/60 Hz Netze nicht).
fchk
Hallo,
wär in etwa so also würde man einen Cortex M4F als DSP bezeichnen. Womit
ich damit sehr gute Ergebnisse erzielt habe. Und der ARM mit seinen
64Bit Befehlen oder FPU doch schon leistungsstärker ist. Siehe Cortex
M4F von ST oder Analog Device. Es gibt natürlich noch mehr Hersteller
aber das sind momentan sehr schnelle Derivaten.
Gruß Sascha
Danke auch für deine Einschätzung. Ich tu mich aktuell schwer damit
abzuschätzen, ob Algorithmen die ich offline in Matlab/Octave auf meine
Messwerte loslasse auch in vernünftiger Geschwindigkeit auf solchen
Plattform laufen werden. Sowas wie die DSPLib von STM ist mir schon
durch das Ohr gewandert, aber kann das einen echten DSP ersetzen? Ich
weiß es offen gestanden nicht. Bin ich mit einem "echten" DSP besser
beraten? Daher auch meine Frage an euch, die ihr euch damit vielleicht
besser auskennt.
Die Anregung einen externen ADC für simultanious sampling zu verwenden
fiel ja schon.
Herzlichen Dank.
EncoDat schrieb:> Danke auch für deine Einschätzung. Ich tu mich aktuell schwer damit> abzuschätzen, ob Algorithmen die ich offline in Matlab/Octave auf meine> Messwerte loslasse auch in vernünftiger Geschwindigkeit auf solchen> Plattform laufen werden.
erster Schritt: C-Implementation mit doubles
zweiter Schritt: floating point -> fixpoint
Wenn Du so weit bist, dann zählst Du einfach mal die Additionen und
Multiplikationen in einem Durchlauf und hast eine erste Abschätzung über
die notwendige Rechenleistung.
In diesem Stadium hast Du natürlich in Deinem Code keine Division, keine
Wurzel und keine anderen mathematischen Funktionen mehr, denn der DSP
wird so etwas auch nicht haben, oder wenn, dann wird es langsam sein.
letzter Schritt: Portierung auf die Zielplattform
fchk
PS: die meisten "richtigen" DSPs haben ohnehin keine eingebauten ADCs.
Es ist fertigungstechnisch einfach nicht möglich, schnelle
Digitaltechnik und exakte Analogtechnik auf einem Chip unterzubringen,
ohne Kompromisse einzugehen. Gute ADCs sind daher IMMER separate Chips,
und schnelle DSPs haben daher keine analogen Schaltungsteile und auch zB
kein EEPROM (auch da sind wieder andere Halbleiterprozesse
erforderlich).
Hallo,
oh durchaus der Cortex M4F kann mit der FPU Wurzelziehen.
Quadrieren ist ja einfach.
Aber wenn du Sinus und Cosinus rechnen willst wirds etwas schwerer. Man
kann aber durchaus mit Tabelleninterpolation arbeiten.
Ist die Abtastrate dann auch die mathematische durchlaufzeit ?
PS. in Assembler kann man aus dem Cortex M4F wahre Wunder herausholen,
wenn man das CCM (Memory) richtig nutzt.
Gruß Sascha