Codec HDA đa kênh trên RP2040
Giao diện HDA Link, còn gọi là Azalia, thường chỉ có trên chipset của máy tính cá nhân. Tác giả một bài viết trên Habr muốn kiểm tra xem vi điều khiển RP2040 trên Raspberry Pi Pico có thể làm máy chủ điều khiển giao diện này không. Lợi ích rõ ràng: codec âm thanh HDA đa kênh cung cấp số kênh nhiều hơn hẳn I²S.
Dự án xoay quanh RP2040 với các khối PIO và codec Realtek ALC889 gắn trên bo mạch, bo mạch còn lại từ một lần thử trước đó thất bại với STM32F103 và Spartan-3. Tín hiệu BCLK phải ổn định ở 24 MHz nên không thể tạo bằng phần mềm. Giao diện dùng bốn đường tín hiệu: BCLK, SYNC, SDO và SDI, và một khung 1000 bit cho 48 kHz; ở 96 và 192 kHz, số mẫu trên mỗi khung tăng lên.
Cách triển khai dùng bốn máy trạng thái PIO: xuất SDO, xuất SYNC, nhập SDI kèm tạo BCLK, và một máy gán địa chỉ cho codec. Dữ liệu truyền qua DMA, trong khi nhân thứ hai của RP2040 đóng gói mẫu và lệnh, đồng thời phân tích phản hồi của codec. Dự án minh họa tạo sóng sin trên năm DAC stereo, với sóng hài bậc ba khoảng −123 dB.
Codec hoạt động ở tần số lấy mẫu 192 kHz. Ép xung RP2040 lên 32 MHz (256 kHz) cũng chạy được, nhưng codec nóng lên đáng kể. Bo mạch tiêu thụ từ 150 đến 270 mA ở 3,3 V. Cũng có giới hạn: bộ lọc tích hợp hoạt động như bộ lọc thông cao bậc một với tần số cắt khoảng 4 Hz, và băng thông đầu vào HDA không cho phép ba kênh stereo 24/192 cùng lúc.
Tác giả còn phát hiện lỗi đồng bộ của RP2040 khi DMA, USB và lấy mẫu XIP chạy đồng thời; nguyên nhân được các chuyên gia của Raspberry Pi xác định. Với xử lý phức tạp, ông khuyên dùng RP2350 có lệnh DSP. Tôi thích cách dự án trung thực cho thấy cả kết quả lẫn điểm yếu.
Nguồn: Habr
Dự án xoay quanh RP2040 với các khối PIO và codec Realtek ALC889 gắn trên bo mạch, bo mạch còn lại từ một lần thử trước đó thất bại với STM32F103 và Spartan-3. Tín hiệu BCLK phải ổn định ở 24 MHz nên không thể tạo bằng phần mềm. Giao diện dùng bốn đường tín hiệu: BCLK, SYNC, SDO và SDI, và một khung 1000 bit cho 48 kHz; ở 96 và 192 kHz, số mẫu trên mỗi khung tăng lên.
Cách triển khai dùng bốn máy trạng thái PIO: xuất SDO, xuất SYNC, nhập SDI kèm tạo BCLK, và một máy gán địa chỉ cho codec. Dữ liệu truyền qua DMA, trong khi nhân thứ hai của RP2040 đóng gói mẫu và lệnh, đồng thời phân tích phản hồi của codec. Dự án minh họa tạo sóng sin trên năm DAC stereo, với sóng hài bậc ba khoảng −123 dB.
Codec hoạt động ở tần số lấy mẫu 192 kHz. Ép xung RP2040 lên 32 MHz (256 kHz) cũng chạy được, nhưng codec nóng lên đáng kể. Bo mạch tiêu thụ từ 150 đến 270 mA ở 3,3 V. Cũng có giới hạn: bộ lọc tích hợp hoạt động như bộ lọc thông cao bậc một với tần số cắt khoảng 4 Hz, và băng thông đầu vào HDA không cho phép ba kênh stereo 24/192 cùng lúc.
Tác giả còn phát hiện lỗi đồng bộ của RP2040 khi DMA, USB và lấy mẫu XIP chạy đồng thời; nguyên nhân được các chuyên gia của Raspberry Pi xác định. Với xử lý phức tạp, ông khuyên dùng RP2350 có lệnh DSP. Tôi thích cách dự án trung thực cho thấy cả kết quả lẫn điểm yếu.
Nguồn: Habr
Bình luận 0
Hãy là người bình luận đầu tiên, bằng bất kỳ ngôn ngữ nào.
Đăng nhập để bình luận