Ist Raspberry PI 2 B für eine Echtzeit-Audioeffektanwendung geeignet?

8

Ich bin dabei, an einem Projekt zu arbeiten, das Echtzeit-Audioverarbeitung für eine Audioeffektanwendung umfasst. Die Anwendung soll Audio von 8 einzelnen Audioeingangskanälen mit einer Abtastrate von 48 kHz erfassen und verarbeiten. Der Audioverarbeitungsalgorithmus erzeugt Audio für 8 einzelne Audioausgangskanäle. Das Audio-Sample-Format ist 16-Bit-signiertes LPCM. Da es sich um eine Echtzeit-Audioeffektanwendung handelt, ist auch die Latenz wichtig. Wenn Audio ohne Verarbeitung von Eingang zu Ausgang geschleift wird, sollte die Round-Trip-Latenz 12 ms nicht überschreiten.

Die Anwendung sollte alle 5,33 ms 256 * 8 Eingangsabtastwerte empfangen (über einen Audio-Rückruf), diese Abtastwerte verarbeiten und 256 * 8-Ausgangsabtastwerte (auch über einen Rückruf) senden. Die 256 * 8 Samples werden in einer Art "Interleaved" -Format empfangen / gesendet.

Ich recherchiere derzeit an verschiedenen Hardwareplattformen und habe mich gefragt, ob der Raspberry PI 2 B eine geeignete Wahl sein könnte. Das Board selbst scheint viel Leistung zu haben (900 MHz Quad Core ARM-CPU), hat aber nur Audioeingang. Meine Fragen sind also:

  1. Ist der Raspberry PI 2 B für die Echtzeit-Audioverarbeitung geeignet?
  2. Wenn die Antwort auf 1 Ja lautet, würde ich gerne wissen, ob es auf dem Markt zusätzliche Audiokarten für den Raspberry PI 2 B mit 8 Eingangskanälen und 8 Ausgangskanälen gibt. Die Karte muss eine Abtastrate von 48 kHz unterstützen.
  3. Wenn die Antwort auf 1 oder [2] Nein lautet, welche HW-Plattform würden Sie empfehlen?

Der Grund, warum ich mir den Raspberry PI 2 B anschaue, ist der attraktive Preis, aber es gibt möglicherweise andere Arten von Boards auf dem Markt, die für diese Art von Anwendung besser geeignet sind.

Blockdiagramm

user1884325
quelle
"Die Round-Trip-Latenz sollte 12 ms nicht überschreiten." .... "Samples alle 5,33 ms." Sind Sie sicher, dass dies überhaupt auf einem PC möglich ist? Es ist nicht die Rechenleistung, die ein Problem darstellt, sondern dies geschieht vollständig in Userland-Software auf einem Nicht-Echtzeit- Betriebssystem. Ich denke, die Latenz wird viel mehr als 12 ms betragen. Wenn Sie sich bei dieser Frage nicht sicher sind, lautet die Antwort wahrscheinlich Nein, und es gibt keine Alternativen zwischen Allzweck-SBCs. Wenn Sie jedoch wissen, dass dies mit einem PC möglich ist, besteht eine Chance.
Goldlöckchen

Antworten:

4

Die kurze Antwort lautet ja, nein und hängt davon ab, die lange Antwort lautet wahrscheinlich nein, kann aber je nach Ansatz ja sein. Als Hardware ist der Pi ziemlich schnell und kann wahrscheinlich die Verschiebung von Daten von Eingabe zu Ausgabe relativ schnell bewältigen. Das Standard-Setup von Raspian Linux ist jedoch keine Echtzeitplattform. Außerdem haben Sie nicht angegeben, welchen DSP Sie ausführen möchten. Als ich an der Universität war, in den Tagen von 386s und Windows 3.1, brauchte man einen externen DSP-Chip, um alles zum Laufen zu bringen, wenn man ernsthafte Soundverarbeitung machen wollte.

Wenn dies auf dem Pi funktionieren soll, haben Sie einige Optionen. Die erste Option, wahrscheinlich die beste, wäre die Hardware mit Interrupts und einem separaten DSP-Modul. Ich bin mir nicht sicher, was da draußen ist, aber es lohnt sich zu bedenken, dass der Pi hauptsächlich mit USB verbunden ist und Bandbreitenbeschränkungen aufweist, sodass Sie möglicherweise trotzdem kein Glück haben. Zweitens versuchen Sie, es als Kernelmodul zu codieren, und sehen Sie, welche Art von Durchsatz- / Verarbeitungsleistung Sie aus dem Pi herausholen können. Linux im Benutzermodus ist nicht in Echtzeit und wird zwar ein nützlicher Proof of Concept sein (im Usermode mit a hohe Prozesspriorität) müssen Sie möglicherweise in den Kernel gehen, um mehr Geschwindigkeit herauszuholen. Schließlich macht der Linux-Kernel, selbst in seiner abgespeckten Pi-Version, eine Menge Dinge, die Sie für ein einfaches DSP-Gerät nicht benötigen. Ich glaube, ich habe irgendwo da draußen einen Kernel gesehen, der Ihren PC in einen Netzwerkrouter verwandeln würde. Etwas Grundlegendes ist alles, was Sie brauchen, aber Sie müssen sich mit etwas C-Kernel-Hacking schmutzig machen.

Wenn Sie die Summen machen und versuchen möchten, alles herauszufinden, müssen Sie den Assembler für alles schreiben, was Ihr Prozessor mit den Daten tun wird, und herausfinden, wie viele Prozessanweisungen zum Laden der Daten erforderlich sind, und sie ändern und schreiben Sie es auf und sehen Sie, ob das multipliziert mit 48k * 2 900M überschreiten wird, und wenn nicht, um welchen Spielraum (alles andere, was das Gerät tut, muss in diesem Spielraum funktionieren, daher empfehle ich Ihnen, dies durch Verlust zu minimieren das normale Kernel-Zeug). Ich halte es für sehr wahrscheinlich, dass es nicht funktioniert, aber es hängt wirklich davon ab, welche Verarbeitung Sie durchführen möchten. Möglicherweise können Sie Ihren eigenen Kernel mit nichts außer Ihrem eigenen Kernelmodul kompilieren und haben gerade genug Speicherplatz. Sie müssen es versuchen und sehen.

Sibaz
quelle
Sie sind sich nicht sicher, was Sie versuchen (im Wege der Verarbeitung), aber schauen Sie sich st.com/web/en/catalog/sense_power/FM125/CL935/SC534/PF185827 an, das anscheinend über eine SPI-Controller-Schnittstelle verfügt passen gut mit dem Pi und onsemi.com/PowerSolutions/product.do?id=BELASIGNA%20200
sibaz