Arduino y Raspberry Pi

Códec HDA multicanal sobre RP2040

La interfaz HDA Link, también llamada Azalia, suele encontrarse solo en los chipsets de los PC. El autor de un artículo en Habr quiso comprobar si el microcontrolador RP2040 de la Raspberry Pi Pico podía actuar como host de esa interfaz. La ventaja es evidente: los códecs de audio HDA multicanal tienen muchos más canales que I²S.

El proyecto se basa en un RP2040 con bloques PIO y en un códec Realtek ALC889 soldado en la placa, una placa que quedó de un intento anterior fallido con un STM32F103 y un Spartan-3. La señal BCLK debe ser estable a 24 MHz, así que no se puede generar por software. La interfaz usa cuatro líneas: BCLK, SYNC, SDO y SDI, y una trama de 1000 bits da 48 kHz; para 96 y 192 kHz aumenta el número de muestras por trama.

La implementación usa cuatro máquinas de estado PIO: salida SDO, salida SYNC, entrada SDI con generación de BCLK y una máquina de estado que asigna la dirección al códec. Los datos viajan por DMA, mientras que el segundo núcleo del RP2040 empaqueta muestras y comandos y analiza las respuestas del códec. El proyecto de demostración genera senos en cinco DAC estéreo, con el tercer armónico alrededor de −123 dB.

El códec funcionó a 192 kHz. Subir el RP2040 a 32 MHz (256 kHz) también funcionó, pero el códec se calentó bastante. La placa consume entre 150 y 270 mA a 3,3 V. También hay límites: los filtros integrados actúan como un paso alto de primer orden con una frecuencia de corte de unos 4 Hz, y el ancho de banda de entrada HDA no permite tres canales estéreo de 24/192 simultáneamente.

El autor encontró además un fallo de sincronización del RP2040 cuando funcionan a la vez DMA, USB y el muestreo desde XIP; su causa la identificaron especialistas de Raspberry Pi. Para procesamiento complejo recomienda el RP2350, que tiene instrucciones DSP. Me gusta que el proyecto muestre con honestidad tanto los resultados como los puntos débiles.

Fuente: Habr

Comentarios 0

Deja el primer comentario, en el idioma que quieras.

Inicia sesión para comentar