Transferencia de datos de audio entre dos DSP, problema de sincronización de reloj

0

Tengo un sistema con dos módulos DSP. El audio se enruta desde DSP1 a DSP2 y luego de vuelta a DSP1, que a su vez lo envía inmediatamente a DAC. Es un sonido estéreo de alta calidad a 44.1KHz.

Este es un requisito, debe haber dos DSP y el enrutamiento no se puede cambiar.

El problema son los relojes. Cada módulo DSP tiene su propio reloj interno, que no se puede sincronizar idealmente. Establecí la tasa numéricamente en ambos, pero el resultado es que obtengo un sonido ligeramente defectuoso, por razones obvias.

Una solución sería, por supuesto, alimentar el reloj de un DSP a otro, pero en este momento esto es un poco problemático para mí.

¿Hay otra manera de evitar esto? P.ej. ¿Un algoritmo relativamente simple que puede compensar pequeñas diferencias entre los relojes? ¿Alguna otra idea?

Editar : la conexión entre los DSP es I2S. Cualquiera de los módulos puede funcionar en modo maestro, pero no ayuda.

    
pregunta mojuba

1 respuesta

1

Si ambos DSP no pueden ser esclavizados al mismo oscilador por alguna razón, debe usar la conversión de frecuencia de muestreo. Esto se debe a que después de un tiempo, inevitablemente tendrá 1 muestra más o 1 menos debido a las velocidades de reloj ligeramente desajustadas. Puede usar una interpolación simple o métodos SRC basados en sinc más complejos para un rendimiento de audio mucho mejor (consulte este documento por ejemplo). Alternativamente, normalmente es posible que el reloj de audio (por ejemplo, un reloj I2S o AC97) sea asíncrono del reloj de procesamiento interno del DSP, pero esto dependerá en gran medida de si el DSP tiene hardware interno para cruzar ese dominio del reloj (básicamente, necesita un reloj dual FIFO). Algunos DSP diseñados para audio (por ejemplo, la serie SHARC de Analog Devices) incorporarán módulos de conversión de frecuencia de muestreo para este propósito exacto.

    
respondido por el Zuofu

Lea otras preguntas en las etiquetas