¿Cómo decidir en qué plataforma es mejor implementar el procesamiento de audio en tiempo real?

15

Cuando desarrollo productos, hago todo el diseño de mi algoritmo en Matlab. Por lo general, son bastante básicos, un filtro IIR o FIR o dos, un par de FFT, etc. Cuando llega el momento de moverlo a un entorno incrustado, siempre me cuesta decidir en qué plataforma ejecutarlo. Normalmente pienso en estas plataformas (amplias):

  • Núcleo DSP
  • FPGA
  • Microcontrolador
  • BRAZO

¿Qué factores debo tener en cuenta al intentar tomar esta decisión?

Kellenjb
fuente
2
¿Por qué distingue "BRAZO" de "Microcontrolador"? ¿Intenta categorizar las piezas DSP + ARM de TI? ¿Estás tratando de separar cosas pequeñas de baja potencia de microprocesadores más grandes? (En este último caso, probablemente debería incluir MIPS y núcleos de 32 bits específicos del proveedor)
Kevin Vermeer
Cuando pienso en el microcontrolador, pienso en PIC, Atmel, etc., pero supongo que ARM también puede caer en eso. No estaba tratando de decir que esas eran todas las opciones, solo preguntaba qué factores deberían considerarse.
Kellenjb
1
¿Qué determina "mejor"? ¿Estás limitado por el poder? ¿Costo? Facilidad de programación? ¿Flexibilidad?
Oliver Charlesworth
@Oli Esa es toda la pregunta, qué factores deben tenerse en cuenta al intentar decidir.
Kellenjb
3
@Kellen: Por el momento, esta pregunta es un poco como "¿Cómo decidir qué automóvil es el mejor?", Sin más restricciones.
Oliver Charlesworth

Respuestas:

13

Si mantiene "algoritmos estándar" como IIR, FIR, radix-2 o 4 FFT (es decir, cosas que se adaptan bien a las arquitecturas DSP sin mucho flujo de control), puede intentar esto:

Cuente cuántas "acumulaciones múltiples" necesita por segundo en todos sus algoritmos.

  • <10 millones probablemente pueda obtener un microcontrolador rápido para hacer el trabajo (o incluso uno lento si es <1M)
  • <100M es territorio DSP fácil
  • <1G es probable que sea territorio DSP rápido factible
  • 1G-10G es donde viene el cruce entre DSP y FPGA
  • > 10G son múltiples DSP o FPGA
Martin Thompson
fuente
2
¡Esta es realmente una lista muy buena para referencia!
Kellenjb
3
Solo recuerda multiplicar por 10 veces cada dos años más o menos :)
Martin Thompson
¿Puedes dar un ejemplo de un "microcontrolador rápido"?
Endolith
1
@endolith: no es probable que sea actual la próxima vez que miremos :) A principios de 2014, tal vez algo así como el LPC1768 (que funciona a 100MHz, supongo que lo empuja un poco para 10MMACS, supongo)
Martin Thompson
@MartinThompson: la biblioteca DSP para LPC1700 dice que el Cortex-M3 hace "2 ciclos (32x32) +32 -> 32 con signo de acumulación múltiple", ¿entonces 50 MMAC?
endolito el
11

Hasta donde yo sé, ARM debería considerarse una arquitectura en lugar de una plataforma. Sin embargo, la pregunta es bastante relevante en cuanto a qué plataforma utilizar para el procesamiento de la señal RT (en este caso, audio).

Puede comenzar haciendo las siguientes preguntas, no en un orden estricto:

  • ¿Cuánto tiempo tengo para la implementación?
  • ¿Cuáles son mis limitaciones de poder?
  • ¿Qué operaciones matemáticas necesito? Podría terminar requiriendo muchos multiplicadores en paralelo y, por lo tanto, limitar su elección.
  • ¿Cuánta memoria necesito? (la mayoría de las MCU son limitadas)
  • [Importante] ¿Cuál es mi frecuencia de operación? ¿Cuánto puedo meter dentro del período de muestreo manteniendo baja la frecuencia de operación?
  • ¿Qué bibliotecas están disponibles para mi elección de implementación?

Comenzaría mirando el algoritmo en primer lugar. Si, por ejemplo, necesita muchas operaciones FFT y MAC, probablemente pueda descartar la mayoría de los microcontroladores y centrarse más en los núcleos DSP. Tenga en cuenta que también hay MCU con núcleos DSP integrados.

Otra consideración importante sería su capacidad y experiencia en el área de implementación. La mayoría de las personas evitan FPGA porque debe usar un HDL para la implementación. Otra razón para evitar los FPGA es el requisito de energía.

anasimtiaz
fuente
2

Con solo la información que proporciona, la opción es probablemente ARM (IIR y FIR simples), pero hay otros factores a tener en cuenta, como los requisitos de alimentación, los requisitos de E / S, las características adicionales que espera implementar: cuánto tiempo de desarrollo ahorraría si este dispositivo ¿Tenía una conexión de red y una API para modificar los parámetros DSP en el campo?

¿Ha considerado expandir su gama de opciones a teléfonos inteligentes o computadoras compactas como la Beagle Board? Puede darse cuenta de que el procesamiento de la señal es solo una pequeña parte del problema completo que está resolviendo.

Aurelio
fuente