Actualmente estoy investigando un sistema que tenga la capacidad de reproducir múltiples archivos de sonido desde una tarjeta SD, agregarlos y luego enviar la señal a un DAC. Básicamente, estoy buscando especificaciones sobre qué tan rápido debería ser el puerto SPI de cualquier microcontrolador DSP dado para reproducir 16 pistas (o alternativamente 1 pista * 16) simultáneamente, la frecuencia de muestreo es de calidad de CD estándar de 44.1 kHz para cada pista. Y si alguien conoce un buen microcontrolador (con una sólida documentación de desarrollo) 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 es 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 mediante un ADC y almacenar .wav en la tarjeta SD. También habrá una función de bucle, pero no creo que requiera memoria interna adicional, ya que puede transmitirse directamente desde la tarjeta SD.
Hagamos algunas 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 solo puerto serie. Se puede hacer, con un reloj adecuado, pero necesita una tarjeta SD rápida ( ver aquí para la velocidad ).
Luego está el microcontrolador: debe agregar 16 pistas y enviarlas a través de un DAC, por lo que tiene 44 * 2 kmuestras para cada pista, o
Las sumas de 16 bits para cada muestra (probablemente con algo de escala para evitar el desbordamiento) dan como resultado aproximadamente 1,4 millones de operaciones por segundo, que pueden ser manejadas por un buen microcontrolador de 32 bits. Probablemente un Cortex-M3, o mejor M4 (pero M3 probablemente esté mejor documentado) pueda funcionar para usted.
Acabo de ver esto que puede ser sincronizado 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ía optar por un convertidor externo, diseñado específicamente para audio (lo que probablemente significa 16 bits).
No está tan claro cómo vas a administrar las 16 pistas diferentes en la SD:
Compruebe la interfaz I 2 S , que es un protocolo serie de 4 hilos especialmente diseñado para aplicaciones de audio.
Dijiste que también quieres grabar pistas y guardarlas en la tarjeta SD: ¿quieres 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 menor.
La función de bucle NECESITARÁ algo de memoria intermedia (también puede usar la memoria interna) porque el bucle requiere una 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 las demoras.
La serie dsPIC33E de Microchip es un controlador + DSP, con hasta 512K flash, 52K RAM, cuatro módulos SPI de 15 Mbps, DMA y puede funcionar a 60 MIPS. Las características de DSP incluyen MAC de hardware, multiplicación de ciclo único de (16 × 16) bits, cambio de barril, inversión de bits y dos acumuladores de 40 bits.
Alrededor de $12 en cantidades individuales en Digi-Key.
Eche un vistazo a la serie XCore www.xmos.com . Tienen una pequeña curva de aprendizaje, pero son extremadamente potentes y vienen con herramientas de desarrollo (relativamente) baratas y un IDE gratuito. También hay una comunidad en xcore.com.
ospho
ospho
leon heller
clabacchio
ospho
clabacchio
stevenvh