- 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
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
Design of Display Processors (1968)
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
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
Das scheint nur den Sender (TX) zu behandeln. Der Empfänger (RX) dürfte doch der viel schwierigere Teil sein?
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
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
Wäre das auch ohne PIO möglich gewesen?
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
„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?