Forum: Digitale Signalverarbeitung / DSP / Machine Learning STM32F071 Performance Schätzung für einfache DSP-Tasks


von adDesigner (Gast)


Lesenswert?

Hallo liebe Forumsgemeinde

Folgende Frage:
Ich brauche eine Abschätzung, ob es Sinn macht eine simple DSP Aufgabe 
auf dem obengenannten Cortex-M0 zu implementieren.

Controller: 48MHz, 32kB Flash, 16kB RAM

Samplerate: max. 2 kHz, 10 bit ADC

Aufgabe: Alles Fixed Point, Impulstrigger (Erkennung ob ein Impulskommt 
über Schwellwert), FIR Tiefpassfilter des Impulses, Berechnung der 
Leistung des Impulses (Integral der Fläche unter der Kurve).

Zeit zwischen Impulsen: 1s
Abschluss der Berechnung innerhalb 0.25s nach dem Impuls


Bevor ich dazu einen dsPIC bemühe, würde mich interessieren, ob es 
plausibel ist, dazu diesen kleinen Controller zu verwenden, der sonst 
nichts anderes macht. Mein Gefühl sagt mir, dass die tiefe Samplerate 
und lange Reaktionszeit die DSP-Anforderungen so tief setzen, dass dies 
ein solch kleiner SMT32 stemmen könnte..

Klar, die effektive Antwort, werden wir erst bei einem Test erfahren, 
jedoch wäre eine Einschätzung ob dies überhaupt realistisch ist noch 
spannend, da wir so einige Zeit sparen können...

Vielen Dank für jeden Input.

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

Naja, so ein dsPic ist jetzt auch wirklich kein Wunderding...

Wenn du nicht gerade den 40bit akku brauchen kannst, sehe ich wirklich 
keine Einschränkung beim STM32... gut, etwas langsamer ist der takt, 
aber sonst...

Der M0 in deinem STM32 kann single-cycle 32bitx32bit multiplikationen... 
das würde ich für dich als vorteil sehen.

Wenn du nicht ein riesen FIR filter hast, sollte sich das locker 
ausgehen.

73

von Gunnar F. (gufi36)


Lesenswert?

es gibt von STM eine AppNote mit Zahlen dazu

von MaNi (Gast)


Lesenswert?

adDesigner schrieb:
> Samplerate: max. 2 kHz, 10 bit ADC

Keine große Sache, der ADC kann ja 1MSPS.

adDesigner schrieb:
> Abschluss der Berechnung innerhalb 0.25s nach dem Impuls

Du hast nicht geschrieben wie lange so ein "Impuls" ist, also kann man 
auch nur schwer was sagen wie viel Zeit nach dem Impuls überhaupt noch 
für die Berechnungen zur Verfügung steht.

adDesigner schrieb:
> Klar, die effektive Antwort, werden wir erst bei einem Test erfahren,
> jedoch wäre eine Einschätzung ob dies überhaupt realistisch ist noch
> spannend, da wir so einige Zeit sparen können...

Wenn du den ADC fest abtasten und der DMA die Daten einfach in einen 
Ringpuffer schreiben lässt, dann hast du während des Aufzeichnen 0% 
Prozessorlast. Über den eingebauten Komparator/DAC kannst Du die 
Triggerschwelle/Zeitpunkt bestimmen ab wann der Impuls als erkannt gilt. 
Dann noch eine Feste (oder mit dem 2. Komparator bzw. angepasster 
Schwelle des 1. Komparator) Nachlaufzeit. Dann kommt ein Interrupt, DMA 
umhängen auf einen 2. Puffer und du hast alle Zeit der Welt um die Daten 
auszurechnen währen die Hardware schon wieder bereit ist den nächsten 
Impuls aufzuzeichnen.
Die CPU wird also nicht arg viel mehr zu tun haben als die Werte 
auszurechnen.

Mit der Annahme dass so ein Impuls deutlich kürzer ist als 250ms ist, 
denn da muss die Berechnung ja schon fertig sein, und mit 2kHz 
Abtastrate sind es ja deutlich unter 500 Werten.

Hört sich jetzt nicht so schwierig an.

von π X 👍 / ☩ (Gast)


Lesenswert?

adDesigner schrieb:
> FIR Tiefpassfilter des Impulses

welche Steilheit und damit wieviel taps?

von adDesigner (Gast)


Lesenswert?

Gut, das tönt doch schonmal vielversprechend!
Zumindest genug um einen Testaufbau zu machen! Vielen Dank, Jungs!


Noch zu den Fragen:

Ja, die Imuplslänge ist natürlich wichtig:
Die liegt bei ca. 100ms inkl. Ausschwingen.

Somit, sollte das Klappen vom Timing her.

Zu den Anzahl Taps und FIR Ordnung: Kann ich noch nicht genau sagen, 
aber wird nicht so krass werden. Es geht hier nur um etwas 
Tiefpass-Wirkung.

von Cartman (Gast)


Lesenswert?

> Der M0 in deinem STM32 kann single-cycle 32bitx32bit multiplikationen...

Das Ergebnis muss aber in 32 bit passen.

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.