3 पॉइंट द्वारा GN⁺ 2025-11-01 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-11-01
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 किया जाएगा

    • सही, यह ‘Wheel of Reincarnation’ वाला concept है. लेकिन इसे सबसे पहले Bell ने नहीं, बल्कि Sutherland और Myer ने व्यवस्थित किया था, और यह 1968 में प्रकाशित paper है
      Design of Display Processors (1968)
    • सच कहूँ तो, उन शब्दों में से मैं आधे ही समझ पाया
  • आजकल के MCU वाकई कमाल के हैं. कुछ डॉलर में powerful microcontroller मिल जाता है
    पहले TCP Offload Engine(TOE) जैसे dedicated card की ज़रूरत पड़ती थी, लेकिन अब वही ज़्यादातर काम छोटे chip कर लेते हैं

    • अब तो कुछ cent वाले MCU भी मिल जाते हैं. बस Taiwan war या counterfeit parts जैसी समस्याओं की वजह से यह दौर बहुत लंबे समय तक रहे, यह ज़रूरी नहीं
    • सोच रहा हूँ कि hardware से परिचित न होने वाले लोगों के लिए कोई अच्छा beginner project सुझाया जा सकता है क्या. कुछ बनाना चाहता हूँ, लेकिन ideas कम हैं
    • अब भी हैरानी होती है. जो chip पहले सिर्फ PIC-स्तर के काम करते थे, वही अब WiFi built-in MCU के रूप में कुछ डॉलर में मिल जाते हैं. खासकर Pico का IO coprocessing वाकई बहुत ताकतवर है
    • क्या आजकल NIC भी बहुत हद तक यही भूमिका नहीं निभाते?
  • PDM mic को PIO से सीधे पढ़ने वाला project सच में बहुत शानदार है
    microphone-library-for-pico
    यह ‘bit-banging’ से ज़्यादा PIO के जरिए high-speed control जैसा लगता है

    • फिर भी व्यापक अर्थ में यह bit-banging ही है. बस PIO उसे ज़्यादा तेज़ और स्थिर बना देता है
  • लगता है यह सिर्फ transmission (TX) को संभालता है. reception (RX) तो कहीं ज़्यादा मुश्किल हिस्सा होगा, है न?

    • सही, यह TX-only है. लेख के बीच में साफ़ लिखा है. मैंने भी पहले यह बात मिस कर दी थी
  • इसके आधार पर 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 करना होगी

    • RGMII में 4-bit bus होती है, इसलिए प्रति सेकंड 25 करोड़ state transitions चाहिए होते हैं.
      clock तो 125MHz है, लेकिन DDR mode होने की वजह से PIO को 250MHz पर चलना होगा. थोड़ा overclock करने पर शायद यह संभव हो
    • शानदार project है. धन्यवाद!
  • क्या यह PIO के बिना संभव होता?

    • Pico पर तो नहीं. PIO के बिना GPIO pin को हर 3~4 CPU clocks में बदलना व्यवहारिक तौर पर बहुत मुश्किल है
      PIO लगभग ‘ultimate peripheral’ जैसा है, इसलिए इसे bit-banging कहना भी थोड़ा अजीब लगता है.
      सिर्फ CPU से 100Mbit/s संभालने के लिए लगभग 500MHz-स्तर का MCU चाहिए होगा, और तब bus characteristics या cache latency जैसी समस्याएँ सामने आएँगी
    • SPI जैसे सामान्य protocol भी आम तौर पर 10MHz के आसपास होते हैं, इसलिए इसकी सीधी तुलना करना मुश्किल है
  • “Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet” — Siemens unit से तो Ohm बेहतर रहता

  • स्क्रीन पर GNU Radio दिख रहा था, इसलिए मैं उलझ गया. RPi में power, दो TX lines, और एक तीसरी line भी है — वह क्या है?

    • वह Ethernet में बदले जा रहे signal input line है. अंदरूनी ADC से WBFM IF signal को digitize करने वाला हिस्सा है, लेकिन ठीक-ठीक कौन-सा signal है, यह मुझे भी नहीं पता