Как решить, на какой платформе лучше всего осуществлять обработку звука в реальном времени?

15

При разработке продуктов я делаю все свои алгоритмы в Matlab. Обычно они довольно просты: фильтр БИХ или КИХ, или два, пара БПФ и т. Д. Когда приходит время переместить его во встроенную среду, мне всегда трудно решить, на какой платформе его запускать. Я обычно думаю об этих (широких) платформах:

  • Ядро DSP
  • FPGA
  • микроконтроллер
  • РУКА

Какие факторы я должен учитывать при попытке принять это решение?

Kellenjb
источник
2
Почему вы отличаете «ARM» от «микроконтроллера»? Пытаетесь классифицировать части TI DSP + ARM? Вы пытаетесь отделить маломощные мелочи от больших микропроцессоров? (В этом последнем случае вы, вероятно, должны включить MIPS и 32-разрядные ядра, зависящие от производителя)
Кевин Вермеер
Когда я думаю о микроконтроллере, я думаю о PIC, Atmel и т. Д., Но я полагаю, что ARM также может подойти под это. Я не пытался сказать, что это были все варианты, просто спрашивал, какие факторы следует учитывать.
Kellenjb
1
Что вы определяете "лучший"? Вы ограничены властью? Стоимость? Простота программирования? Гибкость?
Оливер Чарльзуорт
@ Оли Вот и весь вопрос, какие факторы нужно учитывать при попытке решить.
Kellenjb
3
@Kellen: На данный момент этот вопрос немного похож на «Как решить, какой автомобиль лучше?», Без каких-либо дополнительных ограничений.
Оливер Чарльзуорт

Ответы:

13

Если вы придерживаетесь «стандартных алгоритмов», таких как IIR, FIR, radix-2 или 4 FFT (т. Е. Вещи, которые хорошо соответствуют архитектурам DSP без большого потока управления), вы можете попробовать это:

Подсчитайте, сколько «умножить накоплений» вам нужно в секунду во всех ваших алгоритмах.

  • <10 миллионов, вы, вероятно, можете получить быстрый микроконтроллер для выполнения работы (или даже медленный, если вы <1M)
  • <100M - легкая территория DSP
  • <1G, вероятно, будет выполнимой территорией быстрого DSP
  • 1G-10G - это то место, где происходит переход между DSP и FPGA
  • > 10G - это несколько DSP или FPGA
Мартин Томпсон
источник
2
На самом деле это очень хороший список для справки!
Kellenjb
3
Только не забывайте умножать на 10 раз каждые пару лет или около того :)
Мартин Томпсон
Можете ли вы привести пример «быстрого микроконтроллера»?
эндолит
1
@endolith: нет никакой вероятности того, что это будет актуально в следующий раз, когда мы посмотрим :) В начале 2014 года, может быть, что-то вроде LPC1768 (который работает на частоте 100 МГц - немного увеличивая его для 10MMACS, я думаю)
Мартин Томпсон,
@MartinThompson: библиотека DSP для LPC1700 говорит, что Cortex-M3 «умножает накопление с 2 циклами (32x32) +32 -> 32 со знаком», то есть 50 MMAC?
эндолит
11

Насколько я знаю, ARM следует считать архитектурой, а не платформой. Однако вопрос весьма актуален относительно того, какую платформу использовать для обработки сигнала RT (в данном случае аудио).

Вы можете начать задавать следующие вопросы, не в строгом порядке:

  • Сколько у меня есть времени для реализации?
  • Каковы мои ограничения по мощности?
  • Какие математические операции мне нужны? Возможно, вам потребуется параллельное использование большого количества множителей и, следовательно, ограничение вашего выбора.
  • Сколько памяти мне нужно? (большинство MCU ограничены)
  • [Важно] Какова моя частота работы? Сколько я могу выжать в течение периода выборки, поддерживая низкую рабочую частоту?
  • Какие библиотеки доступны для моего выбора реализации?

Я бы начал с рассмотрения алгоритма в первую очередь. Если, например, вам нужно много операций FFT и MAC, вы, вероятно, можете исключить большинство микроконтроллеров и сосредоточиться больше на ядрах DSP. Имейте в виду, что есть MCU со встроенными ядрами DSP.

Еще одним важным фактором будет ваша способность и опыт в области реализации. Большинство людей уклоняются от FPGA, потому что вы должны использовать HDL для реализации. Еще одна причина избегать FPGA - это требования к питанию.

anasimtiaz
источник
2

Имея только ту информацию, которую вы предоставляете, вы, вероятно, выбираете ARM (простые IIR и FIR), но следует учитывать и другие факторы, такие как требования к питанию, требования к IO, дополнительные функции, которые вы ожидаете реализовать: сколько времени вы бы сэкономили, если бы это устройство было сетевое подключение и API для изменения параметров DSP в поле?

Рассматривали ли вы возможность расширения своего ассортимента до смартфонов или компактных компьютеров, таких как Beagle Board? Вы можете понять, что обработка сигналов - это лишь малая часть всей проблемы, которую вы решаете.

Аурелио
источник