3 puan yazan GN⁺ 2025-11-01 | 1 yorum | WhatsApp'ta paylaş
  • Raspberry Pi Pico, özel donanım olmadan 100 Mbit/s Ethernet iletimini yazılımla gerçekleştiren bir örnek sundu
  • Geliştirici Steve Markgraf, PIO ve DMA kullanarak MLT-3 kodlama, 4B5B hat kodlaması ve scrambling işlemlerini gerçekleştirdi
  • Bu uygulama 125 MHz sembol hızıyla çalışıyor ve UDP üzerinden yaklaşık 11MB/s aktarım sağlıyor
  • Örnekler arasında ADC streamer, sayaç ve PCM1802 tabanlı ses demosu yer alıyor; ayrıca RP2040 ve RP2350 desteği sunuluyor
  • Düşük maliyetli mikrodenetleyicilerle yüksek hızlı veri akışı ve ölçüm uygulamaları için potansiyel gösteren teknik bir ilerleme

RP2040 ve RP2350 üzerinde 100 Mbit/s bit-bang Ethernet uygulaması

  • Steve Markgraf, Pico-100BASE-TX projesiyle 100 Mbit/s Fast Ethernet vericisini tamamen yazılım tabanlı olarak gerçekleştirdi
    • Hem RP2040 hem de RP2350 (Pico 2) destekleniyor
    • PIO (Programmable I/O) ve DMA kullanılarak MLT-3 kodlama, 4B5B hat kodlaması ve scrambling işleniyor
  • Sonuç olarak UDP üzerinden yaklaşık 11MB/s akış mümkün hale geliyor ve gerçek zamanlı ses ile ADC veri aktarımı gösteriliyor
  • Bu uygulama yalnızca verici yönlü (proof of concept) bir yapıdadır ve PoE ekipmanına doğrudan bağlanmamalıdır
    • Pulse transformer veya Ethernet switch üzerinden yalıtım öneriliyor

Projenin arka planı

  • 3 yıl önce kingyoPiyo tarafından geliştirilen Pico-10BASE-T projesi, yalnızca birkaç dirençle 10 Mbit/s Ethernet’i hayata geçirerek dikkat çekmişti
  • 2023’te ise bit-bang USB uygulamasıyla RP2040’ın PIO performans sınırları daha da genişletilmişti
  • Bu proje de o çizginin devamı olarak, 100 Mbit/s hıza ulaşarak yazılım tanımlı donanımın olanaklarını araştırıyor

GitHub deposu ve örnekler

  • GitHub deposu: Pico-100BASE-TX
  • Dahil edilen örnekler:
    • Sayaç
    • Dahili ADC streamer
    • PCM1802 (75 kHz) ses demosu
  • Standart Pico SDK ile derlenebiliyor ve hem RP2040 hem de RP2350 ile uyumlu

Teknik önemi

  • Temel nokta, özel bir PHY çipi olmadan yalnızca mikrodenetleyiciyle 100 Mbit/s Ethernet iletiminin gerçekleştirilmiş olması
  • Düşük maliyetli yüksek hızlı veri toplama ve akış cihazlarının geliştirilmesine işaret ediyor
  • Yazılım tanımlı donanım (Software-defined hardware) yaklaşımının daha da genişleyebileceğini gösteriyor

1 yorum

 
GN⁺ 2025-11-01
Hacker News görüşleri
  • Bu, hesaplamanın döngüsel yapısına dair klasik bir hikâye
    Önce CPU üzerinde yapılır, sonra veri yolunun dışındaki özel bir karta taşınır, o kart yavaş kalırsa bu kez kartın içine yeniden bir CPU konur ve sonunda veri yolları arası iletişimi optimize etmek için CPU’nun içine özel mantık eklenir
    10 yıl kadar sonra RPi çekirdeğinin küçültülüp bir chiplet’in içine konduğu ve terabit ağ sürücülerinin genel amaçlı CPU modeliyle programlandığı bir döneme gireceğimizi düşünüyorum

    • Evet, bu ‘Wheel of Reincarnation’ kavramı. Ama bunu ilk ortaya koyan Bell değil, Sutherland ile Myer’dı; 1968’de yayımlanan bir makale
      Design of Display Processors (1968)
    • Dürüst olmak gerekirse, o kelimelerin sadece yarısını anladım
  • Günümüz MCU’ları gerçekten inanılmaz. Birkaç dolara güçlü bir mikrodenetleyici satın alabiliyorsunuz
    Eskiden TCP Offload Engine (TOE) gibi özel kartlar gerekirdi, şimdi ise bu işlevlerin çoğunu küçük bir çip hallediyor

    • Artık birkaç sentlik MCU’larla bile mümkün. Ama Tayvan savaşı ya da sahte bileşenler gibi sorunlar yüzünden bu dönem çok uzun sürmeyebilir
    • Donanıma çok aşina olmayan biri için önerebileceğiniz bir başlangıç projesi var mı diye merak ediyorum. Bir şeyler yapmak istiyorum ama aklıma fikir gelmiyor
    • Hâlâ şaşırtıcı. Eskiden yalnızca PIC düzeyinde işler yapan çipler artık birkaç dolara WiFi entegreli MCU olarak alınabiliyor. Özellikle Pico’nun IO ortak işlemcisi gerçekten çok güçlü
    • Bugünün NIC’leri de benzer işlerin çoğunu yapmıyor mu zaten?
  • PDM mikrofonu doğrudan PIO ile okuyan proje gerçekten çok havalı
    microphone-library-for-pico
    Bu, ‘bit-banging’den çok PIO kullanarak yüksek hızlı kontrol yapmaya daha yakın

    • Yine de geniş anlamda bit-banging sayılır. Sadece PIO bunu daha hızlı ve daha kararlı hâle getiriyor
  • Bu sanki yalnızca gönderimi (TX) ele alıyor gibi. Alım (RX) asıl çok daha zor olan kısım olmaz mı?

    • Evet, yalnızca TX. Yazının ortasında açıkça belirtilmiş. Ben de ilk başta bunu kaçırdım
  • Bunu temel alarak bir USB Ethernet NIC yapmak da ilginç olabilir
    Özellikle Nintendo Switch’in desteklediği gigabit NIC’i taklit edip, anlaşma başarısız olursa 100Mbps’de çalışacak şekilde uyarlamak mümkün olabilir

  • Karşılaştırma olsun diye, ilk dönem RPi (rev B) SSH üzerinden yaklaşık 6MB/s hız görüyordu; bunu hatırlatmak ilginç

  • Steve Markgraf’ın işleri gerçekten etkileyici.
    Kendisi High Speed Data Acquisition over HDMI projesiyle tanınıyor ve Pico2’yi verici olarak kullanarak 175MB/s seviyesine ulaşmıştı
    Bir de hsdaoh-rp2350 sürümü var
    Ama bit-banging ile 100Mbit muhtemelen sınırdır. 1Gbit 125MHz saat kullanıyor, ancak full duplex olduğu için echo cancellation gerekiyor.
    Bir sonraki meydan okuma muhtemelen 1 dolarlık RTL8211 PHY kullanarak RGMII PHY gerçekleştirmek olur

    • RGMII 4 bitlik bir veri yolu kullandığı için saniyede 250 milyon durum geçişi gerekiyor.
      Saat 125MHz ama DDR yöntemiyle çalıştığından PIO’nun 250MHz’de çalışması gerekir. Biraz overclock ile mümkün olabilir
    • Harika proje. Teşekkürler!
  • PIO olmadan bunu yapmak mümkün olur muydu?

    • Pico’da mümkün değil. PIO olmadan GPIO pinlerini her 3-4 CPU saat darbesinde bir değiştirmek pratikte çok zor
      PIO aslında ‘en güçlü çevre birimi’ gibi, bu yüzden buna bit-banging demek biraz tuhaf kalıyor.
      100Mbit/s’yi yalnızca CPU ile işlemek için yaklaşık 500MHz sınıfı bir MCU gerekir; o noktada da veri yolu özellikleri veya önbellek gecikmeleri gibi sorunlar ortaya çıkar
    • SPI gibi genel protokoller bile genelde 10MHz civarında olur, dolayısıyla bununla karşılaştırmak zor
  • “Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet” ha; Siemens birimi yerine Ohm daha uygun olurdu

  • Ekranda GNU Radio görünce kafam karıştı. RPi var, iki güç hattı var, bir de üçüncü bir hat görünüyor; o ne?

    • O, Ethernet’e dönüştürülmekte olan sinyal giriş hattı. İç ADC ile WBFM IF sinyalinin dijitalleştirildiği kısım; ama tam olarak hangi sinyal olduğu konusunda ben de emin değilim