Arduino e Raspberry Pi

Un codec HDA multicanale su RP2040

L'interfaccia HDA Link, detta anche Azalia, si trova di solito solo nei chipset dei PC. L'autore di un articolo su Habr ha voluto verificare se il microcontrollore RP2040 della Raspberry Pi Pico potesse fare da host per questa interfaccia. Il vantaggio è evidente: i codec audio HDA multicanale offrono molti più canali rispetto a I²S.

Il progetto ruota attorno a un RP2040 con blocchi PIO e a un codec Realtek ALC889 presente sulla scheda, una scheda rimasta da un precedente tentativo fallito con uno STM32F103 e uno Spartan-3. Il segnale BCLK deve essere stabile a 24 MHz, quindi non può essere generato via software. L'interfaccia usa quattro linee: BCLK, SYNC, SDO e SDI, e un frame da 1000 bit dà 48 kHz; per 96 e 192 kHz aumenta il numero di campioni per frame.

L'implementazione usa quattro macchine a stati PIO: uscita SDO, uscita SYNC, ingresso SDI con generazione del BCLK e una macchina che assegna l'indirizzo al codec. I dati viaggiano via DMA, mentre il secondo core dell'RP2040 impacchetta campioni e comandi e interpreta le risposte del codec. Il progetto dimostrativo genera sinusoidi su cinque DAC stereo, con la terza armonica intorno a −123 dB.

Il codec ha funzionato a 192 kHz. Anche l'overclock dell'RP2040 a 32 MHz (256 kHz) ha funzionato, ma il codec si scaldava parecchio. La scheda assorbe da 150 a 270 mA a 3,3 V. Ci sono anche dei limiti: i filtri integrati si comportano come un passa-alto del primo ordine con frequenza di taglio di circa 4 Hz, e la banda di ingresso HDA non consente tre canali stereo a 24/192 contemporaneamente.

L'autore ha inoltre trovato un errore di sincronizzazione dell'RP2040 quando DMA, USB e il campionamento XIP funzionano insieme; la causa è stata individuata dagli specialisti di Raspberry Pi. Per l'elaborazione complessa consiglia l'RP2350, che ha istruzioni DSP. Mi piace che il progetto mostri con onestà sia i risultati sia i punti deboli.

Fonte: Habr

Commenti 0

Lascia il primo commento, in qualsiasi lingua.

Accedi per commentare