3 Punkte von GN⁺ 2025-11-01 | 1 Kommentare | Auf WhatsApp teilen
  • Raspberry Pi Pico hat 100-Mbit/s-Ethernet-Übertragung per Software ohne spezielle Hardware umgesetzt
  • Entwickler Steve Markgraf nutzt PIO und DMA, um MLT-3-Kodierung, 4B5B-Leitungscodierung und Scrambling auszuführen
  • Die Implementierung arbeitet mit einer Symbolrate von 125 MHz und erreicht rund 11 MB/s Übertragung über UDP
  • Die Beispiele umfassen einen ADC-Streamer, einen Zähler und eine Audio-Demo auf Basis von PCM1802; unterstützt werden sowohl RP2040 als auch RP2350
  • Ein technischer Fortschritt, der das Potenzial kostengünstiger Mikrocontroller für High-Speed-Datenstreaming und Messanwendungen zeigt

100-Mbit/s-Bitbang-Ethernet-Implementierung auf RP2040 und RP2350

  • Steve Markgraf hat mit dem Projekt Pico-100BASE-TX einen 100-Mbit/s-Fast-Ethernet-Sender vollständig in Software implementiert
    • Unterstützung für RP2040 und RP2350 (Pico 2)
    • PIO (Programmable I/O) und DMA verarbeiten MLT-3-Kodierung, 4B5B-Leitungscodierung und Scrambling
  • Dadurch sind Streaming-Raten von rund 11 MB/s über UDP möglich; demonstriert wurden Echtzeit-Audio- und ADC-Datenübertragung
  • Die Implementierung ist nur zum Senden gedacht (Proof of Concept); kein direkter Anschluss an PoE-Geräte
    • Isolation über Pulstransformator oder Ethernet-Switch empfohlen

Hintergrund des Projekts

  • Vor drei Jahren sorgte das Projekt Pico-10BASE-T von kingyoPiyo für Aufmerksamkeit, weil es 10-Mbit/s-Ethernet mit nur wenigen Widerständen implementierte
  • 2023 wurde mit einer Bitbang-USB-Implementierung die PIO-Leistungsgrenze des RP2040 weiter ausgereizt
  • Dieses Projekt setzt diese Linie fort und untersucht durch das Erreichen von 100 Mbit/s die Möglichkeiten softwaredefinierter Hardware

GitHub-Repository und Beispiele

  • GitHub-Repository: Pico-100BASE-TX
  • Enthaltene Beispiele:
    • Zähler
    • Integrierter ADC-Streamer
    • PCM1802-(75 kHz)-Audio-Demo
  • Kann mit dem standardmäßigen Pico SDK gebaut werden und ist mit RP2040 und RP2350 kompatibel

Technische Bedeutung

  • Der Kernpunkt ist die Umsetzung von 100-Mbit/s-Ethernet-Übertragung allein mit einem Mikrocontroller, ohne dedizierten PHY-Chip
  • Zeigt das Potenzial für die Entwicklung kostengünstiger High-Speed-Datenerfassungs- und Streaming-Geräte
  • Verdeutlicht die Erweiterbarkeit des Ansatzes softwaredefinierter Hardware (Software-defined hardware)

1 Kommentare

 
GN⁺ 2025-11-01
Hacker-News-Kommentar
  • Das ist eine klassische Geschichte der zyklischen Natur des Computings
    Anfangs wird alles von der CPU erledigt, dann wandert es auf spezialisierte Karten außerhalb des Busses, und wenn diese Karten zu langsam werden, steckt man wieder eine CPU auf die Karte, bis man am Ende spezielle Logik direkt in die CPU integriert, um die Kommunikation zwischen den Bussen zu optimieren
    In etwa zehn Jahren wird man vermutlich verkleinerte RPi-Kerne in Chiplets packen und Terabit-Netzwerktreiber als allgemeines CPU-Modell programmieren

    • Genau, das ist das Konzept des "Wheel of Reincarnation". Allerdings stammt die erste Formulierung nicht von Bell, sondern von Sutherland und Myer, aus einem 1968 veröffentlichten Paper
      Design of Display Processors (1968)
    • Ehrlich gesagt habe ich nur etwa die Hälfte dieser Begriffe verstanden
  • Heutige MCUs sind wirklich beeindruckend. Für ein paar Dollar bekommt man einen leistungsfähigen Mikrocontroller
    Früher brauchte man spezialisierte Karten wie eine TCP Offload Engine (TOE), heute erledigt ein kleiner Chip den Großteil dieser Funktionen

    • Inzwischen geht das sogar mit MCUs für ein paar Cent. Wegen eines möglichen Kriegs um Taiwan oder gefälschter Bauteile könnte diese Ära aber vielleicht nicht ewig andauern
    • Gibt es ein Einsteigerprojekt, das man Leuten ohne Hardware-Erfahrung empfehlen könnte? Ich würde gern etwas bauen, aber mir fehlen die Ideen
    • Immer noch erstaunlich. Chips, die früher nur Dinge auf PIC-Niveau konnten, gibt es heute für ein paar Dollar als MCUs mit integriertem WiFi. Besonders das IO-Coprocessing des Pico ist wirklich stark
    • Übernehmen NICs heute nicht auch viele ähnliche Aufgaben?
  • Das Projekt, ein PDM-Mikrofon direkt per PIO auszulesen, ist wirklich großartig
    microphone-library-for-pico
    Das ist weniger klassisches „bit-banging“ als vielmehr hochgeschwindigkeitsfähige Steuerung mit PIO

    • Im weiteren Sinne ist es trotzdem bit-banging. PIO macht es nur schneller und stabiler
  • Das scheint nur den Sender (TX) zu behandeln. Der Empfänger (RX) dürfte doch der viel schwierigere Teil sein?

    • Genau, es ist nur TX. Das steht ausdrücklich in der Mitte des Artikels. Ich habe das anfangs auch übersehen
  • Darauf aufbauend ein USB-Ethernet-NIC zu bauen, wäre auch spannend
    Besonders interessant wäre es, eine vom Nintendo Switch unterstützte Gigabit-NIC nachzuahmen, die bei gescheiterter Aushandlung dann mit 100 Mbps arbeitet

  • Zur Einordnung: Der frühe RPi (rev B) kam über SSH auf ungefähr 6 MB/s. Als Vergleichswert ist das interessant

  • Die Arbeiten von Steve Markgraf sind wirklich beeindruckend.
    Er ist bekannt für das Projekt High Speed Data Acquisition over HDMI, und mit dem Pico2 als Sender hat er bis zu 175 MB/s erreicht
    Es gibt auch eine Version hsdaoh-rp2350
    Mit bit-banging scheinen 100 Mbit aber wohl die Grenze zu sein. 1 Gbit nutzt zwar einen 125-MHz-Takt, ist aber full duplex, weshalb Echo-Unterdrückung nötig wäre.
    Die nächste Herausforderung wäre wohl, mit einem RTL8211 PHY für 1 US-Dollar einen RGMII-PHY zu implementieren

    • RGMII nutzt einen 4-Bit-Bus, deshalb sind 250 Millionen Zustandswechsel pro Sekunde nötig.
      Der Takt liegt zwar bei 125 MHz, aber wegen DDR müsste die PIO mit 250 MHz laufen. Mit leichtem Overclocking könnte das machbar sein
    • Tolles Projekt. Danke!
  • Wäre das auch ohne PIO möglich gewesen?

    • Auf dem Pico nicht. Ohne PIO ist es praktisch kaum machbar, GPIO-Pins alle 3 bis 4 CPU-Takte umzuschalten
      PIO ist praktisch das ultimative Peripheriegerät, deshalb ist es schwer, das einfach als bit-banging zu bezeichnen.
      Um 100 Mbit/s nur mit der CPU zu verarbeiten, bräuchte man wohl einen MCU mit etwa 500 MHz, und dann kommen Probleme wie Bus-Eigenschaften oder Cache-Latenzen dazu
    • Selbst gängige Protokolle wie SPI liegen meist bei etwa 10 MHz, daher ist das kaum direkt vergleichbar
  • „Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet“ — da wäre die Einheit Ohm wohl passender als Siemens

  • Ich war verwirrt, weil auf dem Bildschirm GNU Radio zu sehen war. Der RPi hat Strom, zwei TX-Leitungen und dann noch eine dritte Leitung — was ist das?

    • Das ist die Signaleingangsleitung, die in Ethernet umgewandelt wird. Darüber wird ein WBFM-IF-Signal mit dem internen ADC digitalisiert, aber ich weiß auch nicht genau, um welches Signal es sich handelt