به گفته hackster.io:
کتابخانه Pico-100BASE-TX از زیرسیستم Programmable I/O (PIO) در Raspberry Pi Pico 2 استفاده میکند تا یک فرستنده Fast Ethernet را با روش بیتبنگینگ (bit banging) بسازد.
وقتی برای پروژه بعدیتان یک برد توسعه انتخاب میکنید، یکی از مهمترین معیارها، رابطهای موجود روی آن است. آیا SPI دارد؟ UART یا I2C چطور؟ همین رابطها کانال ارتباطی با دنیای بیروناند؛ اگر سنسوری که میخواهید استفاده کنید با زبان برد توسعه شما هماهنگ نباشد، عملاً بلااستفاده است.
اما اگر مشکلی با انجام پروژه به شکل «سخت» ندارید، همیشه گزینه دیگری هم هست — بیتبنگینگ (bit banging). همانطور که از نام GPIO پیداست، «عمومی» است و میشود با آن پروتکلهای استاندارد ارتباطی را شبیهسازی کرد. اگر GPIO بهقدر کافی سریع باشد تا با مشخصات زمانی پروتکل هماهنگ شود، هیچ مانعی برای نوشتن کدی که الگوی سیگنال هر رابط موجود را بازتولید کند وجود ندارد.
برخی پروتکلها مثل UART شبیهسازی دشواری ندارند؛ اما بعضیها هم واقعاً سختاند — مثل Fast Ethernet که هکر سختافزار، Steve Markgraf، بهتازگی برایش یک کتابخانه بیتبنگینگ نوشته است. سرعت ارتباط در اینجا بسیار بالا است و همگامسازی با GPIO عادی را چالشبرانگیز میکند، اما Markgraf با تکیه بر Raspberry Pi Pico 2 این مانع را دور زده؛ سختافزار اختصاصی این برد میتواند با سرعتهای بسیار بالا پینها را درایو کند.
کتابخانه جدید او، یعنی Pico-100BASE-TX، زیرسیستم PIO را هوشمندانه به کار میگیرد. با این زیرسیستم، داده با نرخ حدود 11 MB/s استریم میشود و عملاً یک فرستنده Ethernet با نرخ 100 Mbit/s، بهصورت کامل و صرفاً از مسیر بیتبنگینگ، ساخته میشود. البته اگر به دریافت هم نیاز دارید، باید به سراغ راهحل دیگری بروید — قابلیت RX هنوز پیادهسازی نشده است.

بستههای دریافتی از پیکو
پس از حل مشکل سرعت، نوبت به پیادهسازی خودِ پروتکل رسید. Ethernet در حالت 100BASE-TX از کُدگذاری MLT-3 (MLT-3 encoding) استفاده میکند که بین سه سطح ولتاژ در گردش است (1-، 0، 1+). همچنین برای حفظ یکپارچگی سیگنال و جلوگیری از رگبار طولانی بیتهای یکسان، از کُدگذاری 4B5B (4B5B encoding) و اسکرمبلینگ بهره میبرد. اسکرمبلر مبتنی بر یک ثبات بازخورد خطی 11-بیتی یا LFSR (Linear Feedback Shift Register) است که به جدولهای جستوجو ازپیشمحاسبه تبدیل شده و حدود 10 KB از RAM را اشغال میکند. با اسکرمبلینگ «پیشوارونه» و یک جریان از نمادهای idle، میتوان داده را بهطور کامل از طریق DMA (Direct Memory Access) به PIO تغذیه کرد و بار CPU را به حداقل رساند.
این یک راهحل «اترنتِ آمادهبهکار» نیست. وصل کردن مستقیم یک میکروکنترلر به رابط شبکهای که برای تراشههای تخصصی PHY طراحی شده، ریسک دارد. Markgraf هشدار میدهد که به هیچوجه آن را به تجهیزات Power over Ethernet (PoE) وصل نکنید و برای ایمنی، یا از یک ترانس پالس استاندارد استفاده کنید یا از یک شبکه مقاومتی محافظ. در آزمایشها، گاهی یک جفت مقاومت و یک کابل Ethernet قدیمی کافی بوده، اما نتیجه بسته به سختافزار سمت مقابل متفاوت است.
مخزن GitHub این پروژه چند نمونهبرنامه هم دارد؛ برای آزمون و شروع سریع:
برای اغلب افراد، خرید یک Ethernet HAT برای Pico انتخاب منطقیتری است. بااینحال، اگر عجله دارید و نمیخواهید منتظر رسیدن قطعه جدید بمانید، Pico-100BASE-TX ممکن است دقیقاً همان چیزی باشد که لازم دارید.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.