RP2040 üzerinde çok kanallı HDA kodek
HDA Link arayüzü, yani Azalia, genellikle yalnızca PC yonga setlerinde bulunur. Bir Habr yazarı, Raspberry Pi Pico'daki RP2040 mikrodenetleyicisinin bu arayüzün ana cihazı olup olamayacağını denemek istedi. Cazibesi açık: çok kanallı HDA ses kodekleri, I²S'e kıyasla çok daha fazla kanal sunuyor.
Proje, PIO bloklarına sahip bir RP2040 ile kartta bulunan Realtek ALC889 kodeği etrafında kurulu. Kart, STM32F103 ve Spartan-3 ile yapılan önceki başarısız denemeden kalmış. BCLK sinyalinin 24 MHz'de kararlı olması gerekiyor, bu yüzden yazılımla üretilemez. Arayüz BCLK, SYNC, SDO ve SDI olmak üzere dört hat kullanıyor; 1000 bitlik bir çerçeve 48 kHz veriyor, 96 ve 192 kHz'de ise çerçeve başına örnek sayısı artıyor.
Uygulamada dört PIO durum makinesi kullanılıyor: SDO çıkışı, SYNC çıkışı, BCLK üretimini de içeren SDI girişi ve kodeğe adres atayan bir makine. Veri DMA ile taşınırken RP2040'ın ikinci çekirdeği örnekleri ve komutları paketleyip kodekin yanıtlarını çözümlüyor. Demo projesi beş stereo DAC üzerinde sinüs dalgaları üretiyor; üçüncü harmonik yaklaşık −123 dB seviyesinde.
Kodek 192 kHz örnekleme hızında çalıştı. RP2040'ı 32 MHz'e (256 kHz) overclock etmek de işe yaradı, ancak kodek epey ısındı. Kart 3,3 V'ta 150 ila 270 mA çekiyor. Sınırlamalar da var: dahili filtreler yaklaşık 4 Hz kesim frekanslı birinci dereceden bir yüksek geçiren filtre gibi davranıyor ve HDA girişinin bant genişliği, 24/192 üç stereo kanalı aynı anda desteklemiyor.
Yazar ayrıca DMA, USB ve XIP örneklemesi birlikte çalışırken RP2040'ta bir senkronizasyon hatası buldu; nedenini Raspberry Pi'deki uzmanlar tespit etti. Karmaşık işlemler için DSP komutlarına sahip RP2350'yi öneriyor. Projenin hem sonuçları hem de zayıf noktaları dürüstçe göstermesini beğendim.
Kaynak: Habr
Proje, PIO bloklarına sahip bir RP2040 ile kartta bulunan Realtek ALC889 kodeği etrafında kurulu. Kart, STM32F103 ve Spartan-3 ile yapılan önceki başarısız denemeden kalmış. BCLK sinyalinin 24 MHz'de kararlı olması gerekiyor, bu yüzden yazılımla üretilemez. Arayüz BCLK, SYNC, SDO ve SDI olmak üzere dört hat kullanıyor; 1000 bitlik bir çerçeve 48 kHz veriyor, 96 ve 192 kHz'de ise çerçeve başına örnek sayısı artıyor.
Uygulamada dört PIO durum makinesi kullanılıyor: SDO çıkışı, SYNC çıkışı, BCLK üretimini de içeren SDI girişi ve kodeğe adres atayan bir makine. Veri DMA ile taşınırken RP2040'ın ikinci çekirdeği örnekleri ve komutları paketleyip kodekin yanıtlarını çözümlüyor. Demo projesi beş stereo DAC üzerinde sinüs dalgaları üretiyor; üçüncü harmonik yaklaşık −123 dB seviyesinde.
Kodek 192 kHz örnekleme hızında çalıştı. RP2040'ı 32 MHz'e (256 kHz) overclock etmek de işe yaradı, ancak kodek epey ısındı. Kart 3,3 V'ta 150 ila 270 mA çekiyor. Sınırlamalar da var: dahili filtreler yaklaşık 4 Hz kesim frekanslı birinci dereceden bir yüksek geçiren filtre gibi davranıyor ve HDA girişinin bant genişliği, 24/192 üç stereo kanalı aynı anda desteklemiyor.
Yazar ayrıca DMA, USB ve XIP örneklemesi birlikte çalışırken RP2040'ta bir senkronizasyon hatası buldu; nedenini Raspberry Pi'deki uzmanlar tespit etti. Karmaşık işlemler için DSP komutlarına sahip RP2350'yi öneriyor. Projenin hem sonuçları hem de zayıf noktaları dürüstçe göstermesini beğendim.
Kaynak: Habr
Yorumlar 0
İlk yorumu bırak, hangi dilde olursa olsun.
Yorum yapmak için giriş yap