www.mikrocontroller.net

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


Autor: Marcus Günther (theguenni)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: 1234 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus Günther (theguenni)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rasfunk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus Günther (theguenni)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.