Arduino & Raspberry Pi

Codec HDA multikanal di RP2040

Antarmuka HDA Link, juga disebut Azalia, biasanya hanya ada di chipset PC. Penulis sebuah artikel di Habr ingin memeriksa apakah mikrokontroler RP2040 pada Raspberry Pi Pico dapat berperan sebagai host antarmuka ini. Keuntungannya jelas: codec audio HDA multikanal menawarkan jumlah kanal jauh lebih banyak daripada I²S.

Proyek ini dibangun di sekitar RP2040 dengan blok PIO dan codec Realtek ALC889 yang ada di papan, papan yang tersisa dari percobaan sebelumnya yang gagal dengan STM32F103 dan Spartan-3. Sinyal BCLK harus stabil di 24 MHz, sehingga tidak bisa dibuat melalui perangkat lunak. Antarmuka memakai empat jalur: BCLK, SYNC, SDO, dan SDI; satu frame 1000 bit menghasilkan 48 kHz, dan untuk 96 serta 192 kHz jumlah sampel per frame bertambah.

Implementasinya memakai empat state machine PIO: output SDO, output SYNC, input SDI dengan pembangkitan BCLK, dan state machine yang memberi alamat ke codec. Data dikirim lewat DMA, sementara core kedua RP2040 mengemas sampel dan perintah serta membaca respons codec. Proyek demo menghasilkan gelombang sinus pada lima DAC stereo, dengan harmonik ketiga sekitar −123 dB.

Codec berjalan pada laju sampel 192 kHz. Meng-overclock RP2040 hingga 32 MHz (256 kHz) juga berhasil, tetapi codec menjadi sangat panas. Papan mengonsumsi 150 hingga 270 mA pada 3,3 V. Ada pula batasan: filter bawaan bekerja seperti high-pass orde satu dengan frekuensi cutoff sekitar 4 Hz, dan bandwidth input HDA tidak mendukung tiga kanal stereo 24/192 sekaligus.

Penulis juga menemukan bug sinkronisasi pada RP2040 saat DMA, USB, dan sampling XIP berjalan bersamaan; penyebabnya diidentifikasi oleh spesialis Raspberry Pi. Untuk pemrosesan yang kompleks ia menyarankan RP2350 yang memiliki instruksi DSP. Saya menyukai cara proyek ini jujur menampilkan hasil sekaligus kelemahannya.

Sumber: Habr

Komentar 0

Tinggalkan komentar pertama, dalam bahasa apa pun.

Masuk untuk berkomentar