- 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
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
Design of Display Processors (1968)
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
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
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ı?
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
Saat 125MHz ama DDR yöntemiyle çalıştığından PIO’nun 250MHz’de çalışması gerekir. Biraz overclock ile mümkün olabilir
PIO olmadan bunu yapmak mümkün olur muydu?
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
“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?