Forum: Digitale Signalverarbeitung / DSP / Machine Learning Welche Rechenleistung benötige ich?


von Marcus G. (theguenni)


Lesenswert?

Hallo Leute,

ich bin hinsichtlich DSP und digitalen Filtern ein Anfänger und wäre
für den ein oder anderen Tipp dankbar!

Ich möchte eine Signalverarbeitung durchführen, welche folgende Schritte 
beinhaltet:

1. sampeln eines sinusförmigen Signals, welches zwischen ca. 150Hz und
   1600Hz liegt. Als Samplefrequenz hab ich mal 5kHz festgesetzt.
2. Filtern des Signals mittels Bandpass 4. bis 8. Ordnung. Die
   Filterfrequenz und die Bandbreite sollen variabel sein.
3. Das Nutzsignal sind Sinuspakete, welche dann hinsichtlich der
   Anstiegszeit und der Packetlänge analysiert werden müssen.

Der Aufbau der Hardware ist kein Problem!

Leider hab ich keinen Schimmer, welche Leistung mein DSP haben muss, um 
diese Aufgabe zu bewältigen.

Er sollte natürlich günstig sein und möglichst sehr wenig Leistung 
brauchen.

Hat da jemand ne Idee, in welcher DSP oder uC Klasse ich suchen muss, 
bzw. kann mir aus Erfahrung sagen, was außreichend bzw. nötig ist?

LG
Marcus

von Matthias (Gast)


Lesenswert?

Sollte nich allzu schwer sein. Hast Du schon den Algorithmus für so 
einen Filter?
Damit kannst Du dann prinzipiell den Rechenaufwand (Additionen, 
Multiplationen, etc.) abschätzen und somit auch die ungefähre 
Taktfrequenz, die der DSP braucht. Ach ja, Float oder Integer Werte?

von 1234 (Gast)


Lesenswert?

Integer. Float macht keinen Sinn. Wozu wuerde man den hohen dynamischen 
Bereich  von 10^307 fuer single benoetigen ? Die Mantisse eines signle 
hat weniger Genauikeit wie ein longint, so ganz nebenbei.

von Marcus G. (theguenni)


Lesenswert?

nein, ich hab noch keinen Algorithmus... ist alles noch in der 
Anfangsplanung... es geht auch nicht um die genau benötigte 
Rechenleistung, sondern eher um eine grobe Hausnummer...

Eine 16 oder 32 bit CPU wird wohl schon mal Pflicht sein, denke ich.

Die Auflösung der AD-Werte sollten mit 12 Bit reichen.

Wenn man mit reinen Integer-Werten operiert, dann braucht man ja wohl 
keine FPU. Damit dürfte die CPU wieder was preisgünstiger werden ...

von Matthias (Gast)


Lesenswert?

Schon, es gibt halt DSPs die entweder auf Integer oder auf 
Gleitkommaarithmetik optimiert sind.
Allerdings würde ich mir an deiner Stelle erstmal überlegen, wie der 
Algorithmus zur Lösung der Aufgabe aussehen soll. Dann kannste deine
Hausnummer abschätzen. Andernfalls bräuchtest Du eine Glaskugel....

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Deine zu analysierenden Frequenzen sind im Audiobereich. Kannst du dir 
eventuell eine Lösung mit einem PC und Soundkarte vorstellen? Da hättest 
du eine Samplingrate von 44100 Hz und eine Auflösung von mindestens 16 
bit. Weiterhin hast du die Möglichkeit, alle eintreffenden Samples auf 
Festplatte zu speichern, kannst sie also auch nach der Analyse grafisch 
darstellen usw.

Ein kleines Beispielprogramm kann ich dir gerne per email senden. Damit 
kann man aus einer wählbaren Soundkarte Samples einlesen und ausgeben. 
Du brauchst dafür nur das DirectX SDK und Microsoft Visual Studio.


Grüße,

Peter

von Rasfunk (Gast)


Lesenswert?

> Ich möchte eine Signalverarbeitung durchführen, welche folgende Schritte
> beinhaltet:

> 1. sampeln eines sinusförmigen Signals, welches zwischen ca. 150Hz und
>   1600Hz liegt. Als Samplefrequenz hab ich mal 5kHz festgesetzt.
> 2. Filtern des Signals mittels Bandpass 4. bis 8. Ordnung. Die
>    Filterfrequenz und die Bandbreite sollen variabel sein.
> 3. Das Nutzsignal sind Sinuspakete, welche dann hinsichtlich der
>    Anstiegszeit und der Packetlänge analysiert werden müssen.

> Leider hab ich keinen Schimmer, welche Leistung mein DSP haben muss, um
> diese Aufgabe zu bewältigen.

> Er sollte natürlich günstig sein und möglichst sehr wenig Leistung
> brauchen.

Ich gehe mal davon aus, dass Du IIR-Filter verwenden willst (Achtung: 
nicht-lineare Phase, falls das für Deine Applikation wichtig sein 
sollte!). Die benötigen pro Biquad (Filter 2ter Ordnung) und Sample 5 
multiply-accumulate, oder wahlweise 5 multiply und 4 adds. Wenn Du 5000 
Samples die Sekunde verarbeiten willst, und höchstens 4 biquads brauchst 
(2*4 = 8. Ordnung), dann brauchst Du wohl 4*5*5000 = 100000 MAC/s oder 
4*10*5000 = 200000 IPS (Instructions per Second). Das Ganze wird 
heutzutage in Millionen angegeben, also 0,1 MMACS oder 0,2 MIPS.

Das ist im wesentlichen nix.

Die Randbedingungen für die Filterfrequenzen sehen jetzt nicht so 
schlecht aus, 16Bit könnten schon reichen, möglicherweise solltest Du 
aber auch an einen 24- oder 32Bit DSP denken. [Anmerkung: habs eben 
getestet, es geht in der von Dir angegebenen Konfiguration auch bei 16 
Bit, es wird aber möglicherweise kritisch sobald Du andere Filter 
implementierst].

Die Variabilität in Filterfrequenzen und Bandbreite musst Du durch 
verschiedene Filterkoeffizienten bereitstellen, wobei der Filter 
manchmal stabil ist, und manchmal nicht. Mehr Bitbreite ist natürlich 
besser.

von Marcus G. (theguenni)


Lesenswert?

@pdiener
leider muss das ganze extern laufen

@Rasfunk
vielen Dank für die ausführliche Information... das ist wirklich schon 
mal ne Hausnummer :-)

thanx!!!

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.