Buscando un microcontrolador para aplicaciones de audio DSP

3

Actualmente estoy investigando un sistema que tiene la capacidad de reproducir múltiples archivos de sonido desde una tarjeta SD, sumarlos y luego enviar la señal a un DAC. Básicamente estoy buscando especificaciones sobre la rapidez con la que el puerto SPI de cualquier microcontrolador DSP podría ser reproducir 16 pistas (o 1 pista * 16) simultáneamente, la frecuencia de muestreo es de 44.1 kHz de calidad de CD estándar para cada pista. Y si alguien conoce un buen microcontrolador (con una documentación de desarrollo sólida) para esta aplicación ...

Esta hazaña es el único cuello de botella que puedo ver actualmente en el diseño general del sistema. Si puedo superar este obstáculo de reproducción de 16 pistas, todo está cuesta abajo desde aquí.

EDITAR:

El equipo tendrá pistas de audio preestablecidas en la tarjeta SD almacenadas como .wav en FAT32. El equipo también tiene la capacidad de grabar usando un ADC y almacenar .wav en la tarjeta SD. También habrá una función de bucle, pero no creo que requiera más memoria interna, ya que puede transmitirse directamente desde la tarjeta SD

    
pregunta Ospho

3 respuestas

7

Hagamos un poco de matemáticas:

16 tracks * 44 ksample/s *2 channels *16 bit = 22.528 Mbps

Esta es la velocidad mínima que necesita para la interfaz SPI, si desea transmitir todos los datos a través de un único puerto serie. Se puede hacer con un reloj adecuado, pero necesita una tarjeta SD rápida ( vea aquí la velocidad ).

Luego está el microcontrolador: debe agregar 16 pistas y reproducirlas a través de un DAC, de modo que tenga 44 * 2 ksamples para cada pista, o

$$ 44 \ cdot 10 ^ {3} \ cdot 2 \ cdot 16 = 1408 \ cdot 10 ^ {3} $$

Las sumas de 16 bits para cada muestra (probablemente con algún escalado para evitar el desbordamiento) dan como resultado operaciones de aproximadamente 1.4 M / seg, que pueden ser manejadas por un buen microcontrolador de 32 bits. Probablemente un Cortex-M3, o mejor M4 (pero M3 probablemente esté mejor documentado) puede funcionar para usted.

Acabo de ver este que se puede sincronizar hasta 204 MHz, tiene 4 interfaces SPI , hasta 40 MB / s, y también tiene una unidad de punto flotante que puede ayudar en el proceso de acumulación (pero puede ser demasiado lento). También puede usar la estructura de doble núcleo para manejar por separado el procesamiento y la salida.

Pero para el DAC, creo que deberías elegir un convertidor externo, diseñado específicamente para audio (lo que significa probablemente 16 bits).

Actualizar

No está tan claro cómo vas a gestionar las 16 pistas diferentes en la SD:

  • ¿Qué hay de las pistas de precarga en la memoria interna de la MCU?

Verifique la interfaz I 2 S , que es un 4- Protocolo serial de cable especialmente diseñado para aplicaciones de audio.

Pregunta importante:

Dijo que también desea grabar pistas y guardarlas en la tarjeta SD: ¿desea hacer eso al mismo tiempo? Necesita el controlador para codificar el audio en WAV y almacenarlo, y el ancho de banda de escritura de la tarjeta SD es inferior.

La función de bucle NECESITARÁ algo de memoria intermedia (también puede usar la memoria interna) porque el bucle requiere operación en tiempo real, y la tarjeta SD introducirá demasiada latencia. Es posible que necesite una memoria RAM externa, y también puede pensar en almacenar algunos datos allí para reducir los retrasos.

    
respondido por el clabacchio
2

La serie dsPIC33E de Microchip es un controlador + DSP, con hasta 512K de flash, 52K RAM, cuatro módulos SPI de 15 Mbps, DMA, y pueden ejecutarse a 60 MIPS. Las características del DSP incluyen hardware MAC, (16 × 16) bits de multiplicación de un solo ciclo, cambio de barril, inversión de bits y dos acumuladores de 40 bits.

Alrededor de $ 12 en cantidades individuales en Digi-Key.

    
respondido por el tcrosley
2

Eche un vistazo a la serie XCore www.xmos.com . Tienen un poco de una curva de aprendizaje, pero son extremadamente potentes y vienen con devtools baratos (relativamente) y un IDE gratuito. También hay una comunidad en xcore.com.

    
respondido por el Johanness

Lea otras preguntas en las etiquetas