رابط انتقال سریال پرسرعت (HSTX) در میکروکنترلر Raspberry Pi RP2350 بیشتر برای انتقال دادهها طراحی شده است. از این رابط معمولاً برای ارسال سیگنالهای ویدیویی به نمایشگرها استفاده میشود. HSTX فقط توانایی ارسال داده را دارد و نمیتواند دادهها را دریافت کند. این باعث شده که نتوانیم از آن برای برخی کارها مانند ارتباط دوطرفه یا جمعآوری داده از سنسورها استفاده کنیم.
با این حال استیو مارکگراف توانست یک مورد استفاده دیگر برای رابط HSTX پیدا کند: دریافت داده با سرعت بالا. در واقع او با ترکیب برد رزبریپای پیکو 2، برد DVI Sock مخصوص Pico و یک دانگل ضبط ویدیوی ارزانقیمت مبتنی بر تراشه MS2130 (HDMI به USB 3.0)، موفق شد دادهها را به وسیله یک پورت USB 3.0 با سرعت حداکثر 75 مگابایت بر ثانیه از میکروکنترلر RP2350 به یک کامپیوتر میزبان ارسال کند. البته استیو مارکگراف با اورکلاک کردن RP2350 توانست سرعت انتقال داده را به 75 مگابایت بر ثانیه برساند. احتمالاً برد HSTX متعلق به Adafruit Feather RP2350 نیز برای این کار مناسب است اما هنوز تست نشده است.
فریموری که استیو مارکگراف از آن برای دریافت دادههای HDMI استفاده کرد، hsdaoh-rp2350 نام دارد. این فریمور بر اساس نمونه کد dvi_out_hstx_encoder در پروژههای رزبریپای طراحی شده است. این کد نمونه، قابلیت استفاده از رابط HSTX را برای خروجی DVI فراهم میکند. Shuichi Takano هم کدی است که از آن برای رمزگذاری دادههای HDMI (به نام Data Island Encoding) استفاده میشود. این رمزگذاری برای ارسال فریمهای خاص HDMI (مانند صدا و متادیتا) ضروری است. Data Island Encoding بخشی از پروتکل HDMI است که اطلاعات غیر تصویری (مانند صوت و دادههای اضافی) را در همراه با دادههای ویدیویی منتقل میکند. در نهایت از رابط HSTX در RP2350 برای شبیهسازی سیگنال DVI استفاده شده که در کنار رمزگذاری HDMI سبب میشود که بتوانیم دادهها را از طریق HDMI ارسال کنیم.
کار اصلی را در این پروژه کتابخانه libpicohsdaoh انجام میدهد. در واقع libpicohsdaoh بخش اصلی معماری نرمافزاری این پروژه است که دادهها را از یک بافر حلقهای (Ring Buffer) میخواند و از طریق پورت HSTX به کارت کپچر HDMI ارسال میکند. برای کسب اطلاعات بیشتر میتوانید نمونههایی که در GitHub منتشر شدهاند را بررسی کنید:
- counter: این برنامه یک شمارنده 16 بیتی تولید میکند که میتوان از آن برای کارهای مختلفی مانند سنجش زمان یا شمارش پالسها استفاده کرد. استفاده از PIO (Programmable I/O) در RP2350 سبب شده که این شمارنده را بتوانیم به نحو مناسبی برنامهریزی کنیم.
- internal_adc: این برنامه برای دریافت داده از ADC رزبریپای طراحی شده است. سرعت پیشفرض 3.33 میلیون نمونه در ثانیه است، اما با اورکلاک کردن و استفاده از تکنیکهای پیشرفتهتر (مانند USB PLL و افزایش ولتاژ)، میتوان سرعت را تا 7.9 میلیون نمونه در ثانیه افزایش داد. این قابلیت برای پروژههایی که به دادههای بلادرنگ نیاز دارند، بسیار مفید است.
- external_adc: این برنامه با استفاده از PIO دادهها را از یک ADC 12 بیتی که به پینهای GPIO متصل است (GP0-GP11) جمعآوری میکند. پین GP22 در این برنامه برای ارسال سیگنال کلاک به ADC استفاده میشود و دادهها را به فرمت 16 بیتی بستهبندی میکند تا سرعت انتقال داده را به حداکثر برساند. این برنامه بهطور خاص برای کار با بردهای AD9226 ADC طراحی شده که یکی از ADCهای محبوب برای جمعآوری دادهها با سرعت بالا است.
MS2130 میتواند دادهها را با سرعت 298.5 MB/s جمعآوری کند که بسیار سریع است. این نشان میدهد که پتانسیل دستگاه برای انتقال دادهها بالاست. Raspberry Pi Pico 2 به دلیل محدودیتهای خود در پردازش دادهها و انتقال آنها به سیستمهای دیگر، یک عامل محدودکننده محسوب میشود. استفاده از بردهای ارزانقیمت FPGA مانند Sipeed Tang Nano 20K عملکرد را بهبود میبخشد زیرا FPGAها برای پردازش دادهها با سرعت بالا طراحی شدهاند.
این بردها در پردازش دادهها سریعتر از Pico 2 عمل میکنند. استیو به همین شیوه یک رادیوی نرمافزاری (SDR) ساخته است. SDRها ابزارهایی هستند که به شما این امکان را میدهند که سیگنالهای رادیویی را پردازش کنید. در این پروژه، دادهها با استفاده از برنامه fosphor ضبط میشوند. برای دسترسی به کتابخانه hsdaoh به GitHub مراجعه کنید. این کتابخانه برای جمعآوری دادهها با سرعت بالا از طریق HDMI طراحی شده است
این پروژه به دلیل قیمت پایین سختافزارهای استفادهشده، برای کسانی که میخواهند وارد دنیای جمعآوری دادههای با سرعت بالا یا پردازش سیگنالها شوند، گزینهای عالی و مقرونبهصرفه است. Raspberry Pi Pico 2 را با قیمت ۵ دلار و دانگل MS2130 HDMI به USB 3.0 را با قیمت ۵ دلار میتوانید در AliExpress (و با قیمت کمی بیشتر در Amazon) خریداری کنید. این قیمت برای شروع مناسب است، اما برای اجرای یک پروژه مفید به سختافزارهای بیشتری نیاز خواهید داشت. برای مثال، ماژول ADC 12 بیتی AD9226 که در بالا به آن اشاره کردیم را میتوانید با قیمت حدود ۱۶ دلار تهیه کنید.
منبع : cnx-software