RP2040 पर मल्टीचैनल HDA कोडेक
HDA Link इंटरफ़ेस, जिसे Azalia भी कहते हैं, आमतौर पर केवल PC चिपसेट में मिलता है। Habr के एक लेख के लेखक यह जाँचना चाहते थे कि Raspberry Pi Pico पर लगा RP2040 माइक्रोकंट्रोलर इस इंटरफ़ेस का होस्ट बन सकता है या नहीं। फ़ायदा साफ़ है: मल्टीचैनल HDA ऑडियो कोडेक I²S से कहीं ज़्यादा चैनल देते हैं।
प्रोजेक्ट PIO ब्लॉक वाले RP2040 और बोर्ड पर लगे Realtek ALC889 कोडेक के इर्द-गिर्द बना है। यह बोर्ड STM32F103 और Spartan-3 के साथ पहले की असफल कोशिश से बचा हुआ है। BCLK सिग्नल 24 MHz पर स्थिर होना चाहिए, इसलिए इसे सॉफ़्टवेयर से नहीं बनाया जा सकता। इंटरफ़ेस चार लाइनों का इस्तेमाल करता है: BCLK, SYNC, SDO और SDI। 1000 बिट का एक फ़्रेम 48 kHz देता है; 96 और 192 kHz के लिए प्रति फ़्रेम नमूनों की संख्या बढ़ती है।
इम्प्लीमेंटेशन चार PIO स्टेट मशीनों से होता है: SDO आउटपुट, SYNC आउटपुट, BCLK जनरेशन वाला SDI इनपुट, और कोडेक को पता देने वाली मशीन। डेटा DMA से जाता है, जबकि RP2040 का दूसरा कोर नमूने और कमांड पैक करता है और कोडेक के जवाब पढ़ता है। डेमो प्रोजेक्ट पाँच स्टीरियो DAC पर साइन वेव बनाता है, और तीसरी हार्मोनिक लगभग −123 dB पर है।
कोडेक 192 kHz सैंपल रेट पर चला। RP2040 को 32 MHz (256 kHz) तक ओवरक्लॉक करना भी काम आया, पर कोडेक काफ़ी गरम हो गया। बोर्ड 3.3 V पर 150 से 270 mA खींचता है। सीमाएँ भी हैं: बिल्ट-इन फ़िल्टर लगभग 4 Hz कट-ऑफ वाले प्रथम-क्रम हाई-पास फ़िल्टर की तरह काम करते हैं, और HDA इनपुट बैंडविड्थ 24/192 के तीन स्टीरियो चैनल एक साथ नहीं देता।
लेखक को DMA, USB और XIP सैंपलिंग एक साथ चलने पर RP2040 में एक सिंक्रोनाइज़ेशन बग भी मिला, जिसका कारण Raspberry Pi के विशेषज्ञों ने पहचाना। जटिल प्रोसेसिंग के लिए वे DSP निर्देशों वाले RP2350 की सलाह देते हैं। मुझे अच्छा लगा कि प्रोजेक्ट नतीजे और कमज़ोरियाँ दोनों ईमानदारी से दिखाता है।
स्रोत: Habr
प्रोजेक्ट PIO ब्लॉक वाले RP2040 और बोर्ड पर लगे Realtek ALC889 कोडेक के इर्द-गिर्द बना है। यह बोर्ड STM32F103 और Spartan-3 के साथ पहले की असफल कोशिश से बचा हुआ है। BCLK सिग्नल 24 MHz पर स्थिर होना चाहिए, इसलिए इसे सॉफ़्टवेयर से नहीं बनाया जा सकता। इंटरफ़ेस चार लाइनों का इस्तेमाल करता है: BCLK, SYNC, SDO और SDI। 1000 बिट का एक फ़्रेम 48 kHz देता है; 96 और 192 kHz के लिए प्रति फ़्रेम नमूनों की संख्या बढ़ती है।
इम्प्लीमेंटेशन चार PIO स्टेट मशीनों से होता है: SDO आउटपुट, SYNC आउटपुट, BCLK जनरेशन वाला SDI इनपुट, और कोडेक को पता देने वाली मशीन। डेटा DMA से जाता है, जबकि RP2040 का दूसरा कोर नमूने और कमांड पैक करता है और कोडेक के जवाब पढ़ता है। डेमो प्रोजेक्ट पाँच स्टीरियो DAC पर साइन वेव बनाता है, और तीसरी हार्मोनिक लगभग −123 dB पर है।
कोडेक 192 kHz सैंपल रेट पर चला। RP2040 को 32 MHz (256 kHz) तक ओवरक्लॉक करना भी काम आया, पर कोडेक काफ़ी गरम हो गया। बोर्ड 3.3 V पर 150 से 270 mA खींचता है। सीमाएँ भी हैं: बिल्ट-इन फ़िल्टर लगभग 4 Hz कट-ऑफ वाले प्रथम-क्रम हाई-पास फ़िल्टर की तरह काम करते हैं, और HDA इनपुट बैंडविड्थ 24/192 के तीन स्टीरियो चैनल एक साथ नहीं देता।
लेखक को DMA, USB और XIP सैंपलिंग एक साथ चलने पर RP2040 में एक सिंक्रोनाइज़ेशन बग भी मिला, जिसका कारण Raspberry Pi के विशेषज्ञों ने पहचाना। जटिल प्रोसेसिंग के लिए वे DSP निर्देशों वाले RP2350 की सलाह देते हैं। मुझे अच्छा लगा कि प्रोजेक्ट नतीजे और कमज़ोरियाँ दोनों ईमानदारी से दिखाता है।
स्रोत: Habr
टिप्पणियाँ 0
पहली टिप्पणी लिखिए, किसी भी भाषा में।
टिप्पणी करने के लिए लॉग इन करें