Jak zdecydować, na której platformie najlepiej wdrożyć przetwarzanie dźwięku w czasie rzeczywistym?

15

Tworząc produkty, cały projekt algorytmu wykonuję w Matlabie. Zazwyczaj są one dość podstawowe, filtr IIR lub FIR, dwa, kilka FFT itp. Kiedy przychodzi czas na przeniesienie go do środowiska osadzonego, zawsze trudno mi zdecydować, na jakiej platformie go uruchomić. Zwykle myślę o tych (szerokich) platformach:

  • Rdzeń DSP
  • FPGA
  • Mikrokontroler
  • RAMIĘ

Jakie czynniki powinienem wziąć pod uwagę, podejmując decyzję?

Kellenjb
źródło
2
Dlaczego odróżniasz „ARM” od „mikrokontrolera”? Próbujesz skategoryzować części DSP + ARM firmy TI? Czy próbujesz oddzielić małe rzeczy małej mocy od większych mikroprocesorów? (W tym ostatnim przypadku prawdopodobnie powinieneś dołączyć MIPS i rdzenie 32-bitowe specyficzne dla dostawcy)
Kevin Vermeer
Kiedy myślę o mikrokontrolerze, myślę o PIC, Atmelu itp., Ale przypuszczam, że ARM również może się do tego objąć. Nie próbowałem powiedzieć, że to były wszystkie opcje, tylko pytałem, jakie czynniki należy wziąć pod uwagę.
Kellenjb,
1
Co określasz jako „najlepszy”? Czy jesteś ograniczony mocą? Koszt? Łatwość programowania? Elastyczność?
Oliver Charlesworth,
@Oli To jest całe pytanie, jakie czynniki należy wziąć pod uwagę przy podejmowaniu decyzji.
Kellenjb,
3
@Kellen: W tej chwili to pytanie jest trochę jak „Jak zdecydować, który samochód jest najlepszy?”, Bez dalszych ograniczeń.
Oliver Charlesworth

Odpowiedzi:

13

Jeśli trzymasz się „standardowych algorytmów”, takich jak IIR, FIR, radix-2 lub 4 FFT (tj. Rzeczy, które dobrze pasują do architektury DSP bez większego przepływu kontroli), możesz spróbować:

Policz, ile „zwielokrotnia”, potrzebujesz na sekundę we wszystkich swoich algorytmach.

  • <10 milionów, prawdopodobnie możesz uzyskać szybki mikrokontroler do wykonania zadania (lub nawet powolny, jeśli masz mniej niż 1 milion)
  • <100 mln to łatwe terytorium DSP
  • <1G prawdopodobnie będzie wykonalnym szybkim terytorium DSP
  • 1G-10G to miejsce, w którym pojawia się skrzyżowanie DSP i FPGA
  • > 10G to wiele procesorów DSP lub FPGA
Martin Thompson
źródło
2
To jest naprawdę bardzo ładna lista w celach informacyjnych!
Kellenjb,
3
Pamiętaj tylko, aby pomnożyć przez 10 razy co kilka lat :)
Martin Thompson
Czy możesz podać przykład „szybkiego mikrokontrolera”?
endolith
1
@endolith: nie ma żadnego prawdopodobieństwa, że ​​będzie obecny następnym razem, gdy spojrzymy :) Na początku 2014 roku może coś takiego jak LPC1768 (który taktuje przy 100 MHz - myślę, że to trochę na 10MMACS)
Martin Thompson
@MartinThompson: Biblioteka DSP dla LPC1700 mówi, że Cortex-M3 wykonuje „2- cyklowe (32x32) +32 -> 32 wielokrotne kumulacje”, więc 50 MMAC?
endolith
11

O ile mi wiadomo, ARM należy uważać raczej za architekturę niż platformę. Jednak pytanie jest dość istotne, jakiej platformy użyć do przetwarzania sygnału RT (w tym przypadku audio).

Możesz zacząć od zadawania następujących pytań, a nie w ścisłej kolejności:

  • Ile mam czasu na wdrożenie?
  • Jakie są moje ograniczenia mocy?
  • Jakich operacji matematycznych potrzebuję? Może się zdarzyć, że będziesz potrzebować wielu mnożników równolegle, a zatem ograniczysz swój wybór.
  • Ile pamięci potrzebuję? (większość MCU jest ograniczona)
  • [Ważne] Jaka jest moja częstotliwość operacji? Ile mogę wcisnąć w okresie próbkowania, utrzymując niską częstotliwość roboczą?
  • Jakie biblioteki są dostępne dla mojego wyboru implementacji?

Zacznę od spojrzenia na algorytm przede wszystkim. Jeśli na przykład potrzebujesz wielu operacji FFT i MAC, prawdopodobnie możesz wykluczyć większość mikrokontrolerów i skupić się bardziej na rdzeniach DSP. Pamiętaj, że istnieją MCU z wbudowanymi rdzeniami DSP.

Kolejną ważną kwestią byłoby twoje umiejętności i wiedza specjalistyczna w zakresie wdrażania. Większość ludzi unika FPGA, ponieważ do implementacji należy użyć HDL. Innym powodem, dla którego należy unikać FPGA, jest zapotrzebowanie na moc.

anasimtiaz
źródło
2

Podając tylko informacje, które podajesz, prawdopodobnie jest to ARM (proste IIR i FIR), ale należy wziąć pod uwagę inne czynniki, takie jak wymagania dotyczące zasilania, wymagania IO, dodatkowe funkcje, które spodziewasz się wdrożyć: Ile czasu programowania byś zaoszczędził, gdyby to urządzenie miał połączenie sieciowe i interfejs API do modyfikowania parametrów DSP w terenie?

Czy rozważałeś rozszerzenie swojej oferty na smartfony lub komputery kompaktowe, takie jak Beagle Board? Możesz zdać sobie sprawę, że przetwarzanie sygnału to tylko niewielka część całego problemu, który rozwiązujesz.

Aurelio
źródło