Forum: Digitale Signalverarbeitung / DSP / Machine Learning dsPIC, was taugen die?


von EncoDat (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von EncoDat (Gast)


Lesenswert?

Danke für diese erste Einschätzung.

von Sascha (Gast)


Lesenswert?

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

von EncoDat (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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).

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

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

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.