আর্ডুইনো ও রাস্পবেরি পাই

RP2040-এ মাল্টিচ্যানেল HDA কোডেক

HDA Link ইন্টারফেস, যাকে Azalia-ও বলা হয়, সাধারণত শুধু PC চিপসেটেই পাওয়া যায়। Habr-এর এক লেখক দেখতে চেয়েছিলেন, Raspberry Pi Pico-র RP2040 মাইক্রোকন্ট্রোলার এই ইন্টারফেসের হোস্ট হতে পারে কি না। সুবিধাটি স্পষ্ট: মাল্টিচ্যানেল HDA অডিও কোডেক I²S-এর তুলনায় অনেক বেশি চ্যানেল দেয়।

প্রকল্পটি PIO ব্লকযুক্ত একটি RP2040 এবং বোর্ডে থাকা Realtek ALC889 কোডেকের ওপর দাঁড়িয়ে আছে। বোর্ডটি STM32F103 ও Spartan-3 দিয়ে আগের একটি ব্যর্থ চেষ্টার অবশিষ্ট। BCLK সংকেত স্থিরভাবে ২৪ MHz হতে হবে, তাই সফটওয়্যারে এটি তৈরি করা যায় না। ইন্টারফেসে চারটি লাইন ব্যবহৃত হয়: BCLK, SYNC, SDO ও SDI। ১০০০ বিটের একটি ফ্রেমে ৪৮ kHz পাওয়া যায়; ৯৬ ও ১৯২ kHz-এ প্রতি ফ্রেমে নমুনার সংখ্যা বাড়ে।

বাস্তবায়নে চারটি PIO স্টেট মেশিন আছে: SDO আউটপুট, SYNC আউটপুট, BCLK তৈরিসহ SDI ইনপুট, এবং কোডেককে ঠিকানা দেওয়ার মেশিন। ডেটা DMA-র মাধ্যমে চলে, আর RP2040-র দ্বিতীয় কোর নমুনা ও কমান্ড প্যাক করে এবং কোডেকের উত্তর বিশ্লেষণ করে। ডেমো প্রকল্প পাঁচটি স্টেরিও DAC-এ সাইন তরঙ্গ তৈরি করে; তৃতীয় হার্মোনিক প্রায় −১২৩ dB।

কোডেক ১৯২ kHz নমুনা হারে কাজ করেছে। RP2040-কে ৩২ MHz (২৫৬ kHz) পর্যন্ত ওভারক্লক করাও কাজ করেছে, তবে কোডেক অনেক গরম হয়েছে। ৩.৩ V-তে বোর্ড ১৫০ থেকে ২৭০ mA টানে। সীমাবদ্ধতাও আছে: অন্তর্নির্মিত ফিল্টার প্রায় ৪ Hz কাটঅফের প্রথম-ক্রমের হাই-পাস ফিল্টারের মতো কাজ করে, আর HDA ইনপুটের ব্যান্ডউইডথ একসঙ্গে ২৪/১৯২-এর তিনটি স্টেরিও চ্যানেল দেয় না।

লেখক DMA, USB ও XIP স্যাম্পলিং একসঙ্গে চললে RP2040-এর একটি সিঙ্ক্রোনাইজেশন ত্রুটিও খুঁজে পেয়েছেন; এর কারণ Raspberry Pi-র বিশেষজ্ঞরা চিহ্নিত করেছেন। জটিল প্রসেসিংয়ের জন্য তিনি DSP নির্দেশযুক্ত RP2350-এর পরামর্শ দেন। প্রকল্পটি ফলাফল ও দুর্বলতা দুটোই সৎভাবে দেখায়, এটা আমার ভালো লেগেছে।

সূত্র: Habr

মন্তব্য 0

যেকোনো ভাষায় প্রথম মন্তব্যটি করুন।

মন্তব্য করতে লগ ইন করুন