Wie kann man entscheiden, auf welcher Plattform die Echtzeit-Audioverarbeitung am besten implementiert werden kann?

15

Bei der Entwicklung von Produkten entwerfe ich alle Algorithmen in Matlab. Sie sind normalerweise ziemlich einfach, ein IIR- oder FIR-Filter oder zwei, ein paar FFTs usw. Wenn es darum geht, sie in eine eingebettete Umgebung zu verschieben, fällt es mir immer schwer, zu entscheiden, auf welcher Plattform sie ausgeführt werden soll. Ich denke normalerweise an diese (breiten) Plattformen:

  • DSP-Kern
  • FPGA
  • Mikrocontroller
  • ARM

Welche Faktoren sollte ich berücksichtigen, wenn ich versuche, diese Entscheidung zu treffen?

Kellenjb
quelle
2
Warum unterscheidet man "ARM" von "Microcontroller"? Versuchen Sie, die DSP + ARM-Teile von TI zu kategorisieren? Versuchen Sie, kleine Geräte mit geringem Stromverbrauch von größeren Mikroprozessoren zu trennen? (In diesem letzten Fall sollten Sie wahrscheinlich MIPS und herstellerspezifische 32-Bit-Kerne einbeziehen.)
Kevin Vermeer,
Wenn ich an Mikrocontroller denke, denke ich an PIC, Atmel usw., aber ich nehme an, dass ARM auch darunter fallen kann. Ich habe nicht versucht zu sagen, dass dies alle Optionen sind, sondern nur gefragt, welche Faktoren berücksichtigt werden sollten.
Kellenjb
1
Was bestimmst du als "am besten"? Bist du von der Macht begrenzt? Kosten? Einfache Programmierung? Flexibilität?
Oliver Charlesworth
@Oli Das ist die ganze Frage, welche Faktoren bei der Entscheidungsfindung berücksichtigt werden sollten.
Kellenjb
3
@Kellen: Im Moment ist diese Frage ein bisschen wie "Wie kann man entscheiden, welches Auto am besten ist?", Ohne weitere Einschränkungen.
Oliver Charlesworth

Antworten:

13

Wenn Sie sich an "Standardalgorithmen" wie IIR, FIR, Radix-2 oder 4 FFT halten (dh Dinge, die gut zu DSP-Architekturen passen, ohne viel Kontrollfluss), können Sie dies versuchen:

Zählen Sie, wie viele "Multiplikatoren" Sie in all Ihren Algorithmen pro Sekunde benötigen.

  • <10 Millionen können Sie wahrscheinlich einen schnellen Mikrocontroller für die Arbeit bekommen (oder sogar einen langsamen, wenn Sie <1 Million sind)
  • <100M ist leichtes DSP-Territorium
  • <1G ist wahrscheinlich schnelles DSP-Territorium
  • 1G-10G ist die Schnittstelle zwischen DSP und FPGA
  • > 10G ist mehrere DSPs oder FPGA
Martin Thompson
quelle
2
Dies ist eigentlich eine sehr schöne Liste als Referenz!
Kellenjb
3
Denken Sie daran, alle paar Jahre oder so 10x zu multiplizieren :)
Martin Thompson
Können Sie ein Beispiel für einen "schnellen Mikrocontroller" nennen?
Endolith
1
@endolith: Nicht mit der Wahrscheinlichkeit, dass es das nächste Mal aktuell ist, sehen wir uns das an :) Anfang 2014 vielleicht so etwas wie der LPC1768 (der mit 100 MHz taktet - schiebe es ein bisschen für 10MMACS, denke ich)
Martin Thompson
@MartinThompson: DSP-Bibliothek für LPC1700 sagt, dass der Cortex-M3 "2-Zyklus (32x32) +32 -> 32 vorzeichenbehaftete Multiplikationen akkumuliert", also 50 MMACs?
Endolith
11

Meines Wissens sollte ARM eher als Architektur denn als Plattform betrachtet werden. Die Frage ist jedoch ziemlich relevant, welche Plattform für die RT-Signalverarbeitung (in diesem Fall Audio) verwendet werden soll.

Sie könnten damit beginnen, folgende Fragen zu stellen, nicht in strikter Reihenfolge:

  • Wie viel Zeit habe ich für die Implementierung?
  • Was sind meine Leistungsbeschränkungen?
  • Welche mathematischen Operationen brauche ich? Möglicherweise werden viele Multiplikatoren gleichzeitig benötigt, sodass Sie nur eine eingeschränkte Auswahl treffen können.
  • Wie viel Speicher brauche ich? (Die meisten MCUs sind begrenzt)
  • [Wichtig] Wie häufig ist mein Betrieb? Wie viel kann ich innerhalb der Abtastperiode einpressen, um die Betriebsfrequenz niedrig zu halten?
  • Welche Bibliotheken stehen für die von mir gewählte Implementierung zur Verfügung?

Ich würde zuallererst den Algorithmus betrachten. Wenn Sie zum Beispiel viele FFTs und MAC-Operationen benötigen, können Sie wahrscheinlich die meisten Mikrocontroller ausschließen und sich mehr auf DSP-Kerne konzentrieren. Beachten Sie, dass es auch MCUs mit eingebetteten DSP-Kernen gibt.

Ein weiterer wichtiger Gesichtspunkt wäre Ihre Fähigkeit und Ihr Fachwissen im Bereich der Implementierung. Die meisten Leute scheuen FPGA, weil Sie für die Implementierung eine HDL verwenden müssen. Ein weiterer Grund, sich vor FPGAs zu scheuen, ist der Strombedarf.

anasimtiaz
quelle
2

Wenn Sie nur die Informationen angeben, die Sie zur Auswahl haben, handelt es sich wahrscheinlich um ARM (einfache IIRs und FIRs). Es sind jedoch noch weitere Faktoren zu berücksichtigen, z Hatte eine Netzwerkverbindung und eine API, um DSP-Parameter im Feld zu ändern?

Haben Sie darüber nachgedacht, Ihr Optionsangebot auf Smartphones oder Kompaktcomputer wie das Beagle Board zu erweitern? Möglicherweise stellen Sie fest, dass die Signalverarbeitung nur einen kleinen Teil des gesamten Problems darstellt, das Sie lösen.

Aurelio
quelle