- Raspberry Pi Pico ने बिना किसी dedicated hardware के 100 Mbit/s Ethernet transmission को सॉफ़्टवेयर के ज़रिए लागू किया
- डेवलपर Steve Markgraf ने PIO और DMA का उपयोग करके MLT-3 encoding, 4B5B line coding, और scrambling किया
- यह implementation 125 MHz symbol rate पर काम करता है और UDP के माध्यम से लगभग 11MB/s transfer हासिल करता है
- उदाहरणों में ADC streamer, counter, और PCM1802-आधारित audio demo शामिल हैं, तथा RP2040 और RP2350 दोनों समर्थित हैं
- यह कम-कीमत microcontroller के साथ high-speed data streaming और measurement applications की संभावना दिखाने वाली एक तकनीकी प्रगति है
RP2040 और RP2350 पर 100 Mbit/s bit-banged Ethernet implementation
- Steve Markgraf ने Pico-100BASE-TX प्रोजेक्ट के माध्यम से 100 Mbit/s Fast Ethernet transmitter को पूरी तरह सॉफ़्टवेयर-आधारित तरीके से लागू किया
- RP2040 और RP2350(Pico 2) दोनों समर्थित हैं
- PIO(Programmable I/O) और DMA का उपयोग करके MLT-3 encoding, 4B5B line coding, और scrambling को प्रोसेस किया जाता है
- नतीजतन UDP के जरिए लगभग 11MB/s streaming संभव है, और real-time audio तथा ADC data transmission का प्रदर्शन किया गया
- यह implementation केवल transmission(proof of concept) के रूप में है, और PoE उपकरणों से सीधे कनेक्ट नहीं करना चाहिए
- pulse transformer या Ethernet switch के माध्यम से isolation की सिफारिश की गई है
प्रोजेक्ट की पृष्ठभूमि
- 3 साल पहले kingyoPiyo के Pico-10BASE-T प्रोजेक्ट ने केवल कुछ resistors के साथ 10 Mbit/s Ethernet लागू करके ध्यान आकर्षित किया था
- 2023 में bit-banged USB implementation ने RP2040 के PIO performance limits को और आगे बढ़ाया
- यह प्रोजेक्ट उसी का विस्तार है, जो 100 Mbit/s speed हासिल करके software-defined hardware की संभावनाओं को तलाशता है
GitHub repository और उदाहरण
- GitHub repository: Pico-100BASE-TX
- शामिल उदाहरण:
- counter
- built-in ADC streamer
- PCM1802(75 kHz) audio demo
- इसे standard Pico SDK से build किया जा सकता है, और RP2040 तथा RP2350 दोनों के साथ compatible है
तकनीकी महत्व
- मुख्य बात यह है कि dedicated PHY chip के बिना सिर्फ microcontroller से 100 Mbit/s Ethernet transmission लागू किया गया
- यह low-cost high-speed data acquisition और streaming डिवाइसों के विकास की संभावना दिखाता है
- software-defined hardware दृष्टिकोण की विस्तार-क्षमता की ओर संकेत करता है
1 टिप्पणियां
Hacker News राय
यह computing के cyclical structure की एक क्लासिक कहानी है
शुरुआत में चीज़ें CPU पर की जाती हैं, फिर उन्हें बस के बाहर एक dedicated card पर ले जाया जाता है, और अगर वह card धीमा पड़ जाए तो उसके अंदर फिर से CPU डाल दिया जाता है, और आखिर में bus-to-bus communication को optimize करने के लिए CPU के भीतर special logic जोड़ दी जाती है
लगता है लगभग 10 साल बाद हम ऐसे दौर में होंगे जहाँ RPi core को छोटा करके chiplet के अंदर रखा जाएगा, और terabit network driver को general-purpose CPU model से program किया जाएगा
Design of Display Processors (1968)
आजकल के MCU वाकई कमाल के हैं. कुछ डॉलर में powerful microcontroller मिल जाता है
पहले TCP Offload Engine(TOE) जैसे dedicated card की ज़रूरत पड़ती थी, लेकिन अब वही ज़्यादातर काम छोटे chip कर लेते हैं
PDM mic को PIO से सीधे पढ़ने वाला project सच में बहुत शानदार है
microphone-library-for-pico
यह ‘bit-banging’ से ज़्यादा PIO के जरिए high-speed control जैसा लगता है
लगता है यह सिर्फ transmission (TX) को संभालता है. reception (RX) तो कहीं ज़्यादा मुश्किल हिस्सा होगा, है न?
इसके आधार पर USB Ethernet NIC बनाना भी दिलचस्प हो सकता है
खासकर Nintendo Switch द्वारा supported gigabit NIC की नकल करके, और negotiation fail होने पर इसे 100Mbps पर चलाने जैसे उपयोग किए जा सकते हैं
संदर्भ के लिए, शुरुआती RPi (rev B) लगभग 6MB/s की SSH speed देता था. तुलना के लिहाज़ से यह काफ़ी दिलचस्प है
Steve Markgraf का काम सच में प्रभावशाली है.
वह High Speed Data Acquisition over HDMI project के लिए जाने जाते हैं, और Pico2 को transmitter की तरह इस्तेमाल करके 175MB/s तक हासिल कर चुके हैं
hsdaoh-rp2350 version भी है
लेकिन bit-banging से 100Mbit शायद सीमा हो. 1Gbit में 125MHz clock इस्तेमाल होती है, लेकिन वह full duplex है, इसलिए echo cancellation चाहिए.
अगली चुनौती शायद $1 वाले RTL8211 PHY का इस्तेमाल करके RGMII PHY implement करना होगी
clock तो 125MHz है, लेकिन DDR mode होने की वजह से PIO को 250MHz पर चलना होगा. थोड़ा overclock करने पर शायद यह संभव हो
क्या यह PIO के बिना संभव होता?
PIO लगभग ‘ultimate peripheral’ जैसा है, इसलिए इसे bit-banging कहना भी थोड़ा अजीब लगता है.
सिर्फ CPU से 100Mbit/s संभालने के लिए लगभग 500MHz-स्तर का MCU चाहिए होगा, और तब bus characteristics या cache latency जैसी समस्याएँ सामने आएँगी
“Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet” — Siemens unit से तो Ohm बेहतर रहता
स्क्रीन पर GNU Radio दिख रहा था, इसलिए मैं उलझ गया. RPi में power, दो TX lines, और एक तीसरी line भी है — वह क्या है?