Ein Entwickler hat eine Methode vorgestellt, um auf einem Raspberry Pi Pico oder RP2350-Mikrocontroller eine 100 MBit/s Fast-Ethernet-Übertragung zu realisieren. Die als Bit-Banging bekannte Technik ermöglicht es, Daten mit etwa 11 MByte/s zu streamen. Dies stellt einen Fortschritt gegenüber früheren Implementierungen dar, die meist auf 10 MBit/s beschränkt waren.
Wichtige Punkte
- 100 MBit/s Fast Ethernet: Erfolgreiche Implementierung auf Raspberry Pi Pico.
- Bit-Banging-Technik: Datenübertragung ohne dedizierten Hardware-Controller.
- Übertragungsrate: Erreicht etwa 11 MByte/s.
- Komplexe Kodierung: Nutzung von drei Spannungspegeln und 4b5b-Kodierung.
- Nur Senden: Die aktuelle Version unterstützt ausschließlich die Datenübertragung.
Ein technischer Durchbruch auf dem Raspberry Pi Pico
Der Raspberry Pi Pico ist bekannt für seine Vielseitigkeit und Leistungsfähigkeit. Dennoch überrascht die jüngste Entwicklung, eine bit-gebaggte 100 MBit/s Fast-Ethernet-Verbindung auf dieser Platine zu implementieren. Die Bibliothek namens Pico-100BASE-TX, entwickelt von [Steve], ermöglicht es dem RP2040- oder RP2350-Mikrocontroller, Daten mit einer Geschwindigkeit von rund 11 MByte/s zu senden. Diese Leistung reicht aus, um eine vollständige 100 MBit/s Fast-Ethernet-Übertragung zu realisieren.
Bisherige Projekte auf dem Pico konzentrierten sich oft auf 10BASE-T-Ethernet. Die Umstellung auf 100BASE-T erfordert jedoch deutlich mehr als nur eine höhere Bitrate. 10BASE-T verwendet zwei Spannungspegel und eine Manchester-Kodierung. Im Gegensatz dazu nutzt 100BASE-T drei Spannungspegel und eine wesentlich komplexere Kodierung.
Faktencheck: Geschwindigkeiten
- 100 MBit/s: Dies entspricht 12,5 MByte/s.
- 11 MByte/s: Die tatsächlich erreichte Übertragungsrate in [Steve]s Implementierung.
- Diskrepanz: Die Differenz entsteht durch Overhead und die Art der Datenpaketierung.
Die technischen Details der Implementierung
[Steve] hat die Herausforderung der drei Spannungspegel auf dem Pico geschickt gelöst. Er verwendet hierfür zwei GPIOs (General Purpose Input/Output Pins) des Mikrocontrollers. Die Implementierung basiert auf einer komplexen 4b5b-Kodierung, die für 100BASE-T erforderlich ist. Details zu dieser Technik sowie Beispielanwendungen sind im Repository des Projekts verfügbar.
„Nach meinem Kenntnisstand ist dies die erste bit-gebaggte 100 MBit/s Ethernet-Implementierung mit einem Mikrocontroller“, erklärt [Steve].
Die Bibliothek ist derzeit auf die Übertragung beschränkt. Das Empfangen von Datenpaketen ist eine wesentlich komplexere Aufgabe. Es bleibt abzuwarten, ob findige Entwickler auch hierfür eine Lösung finden werden.
Unterschiede zu 10BASE-T
Der Übergang von 10BASE-T zu 100BASE-T ist technisch anspruchsvoll. 10BASE-T, auch als Fast Ethernet bekannt, überträgt Daten mit 10 Megabit pro Sekunde. Es nutzt eine einfachere Kodierung, die Manchester-Kodierung. Bei dieser Kodierung wird jedes Bit durch einen Übergang in der Mitte des Bit-Intervalls dargestellt. Dies vereinfacht die Synchronisation zwischen Sender und Empfänger.
100BASE-T hingegen, auch als Fast Ethernet bekannt, erreicht 100 Megabit pro Sekunde. Es verwendet eine komplexere Kodierung, die als 4B5B-Kodierung in Kombination mit MLT-3-Modulation bekannt ist. Diese Kombination ermöglicht eine höhere Datenrate bei gleichzeitiger Begrenzung der Bandbreite und der elektromagnetischen Emissionen. Die Implementierung erfordert präzisere Timing-Kontrolle und die Fähigkeit, drei unterschiedliche Spannungspegel zu erzeugen und zu interpretieren.
Hintergrund: Bit-Banging
Bit-Banging ist eine Technik, bei der Software verwendet wird, um serielle Kommunikationsprotokolle zu implementieren, die normalerweise dedizierte Hardware erfordern. Anstatt spezielle Peripheriegeräte zu nutzen, steuert die CPU direkt die GPIO-Pins, um die Signale zu erzeugen. Dies ist flexibel, aber oft langsamer und ressourcenintensiver als Hardware-basierte Lösungen.
Community-Reaktionen und zukünftige Möglichkeiten
Die Veröffentlichung hat in der Entwicklergemeinschaft großes Interesse geweckt. Diskussionen konzentrieren sich auf die genaue Übertragungsrate und die Unterscheidung zwischen MBit/s und MByte/s. [Steve] bestätigte, dass die 11 MByte/s korrekt sind. Die Implementierung kann die volle 100BASE-TX-Geschwindigkeit erreichen, indem Ethernet-Frames mit maximaler MTU (Maximum Transmission Unit) hintereinander gesendet werden, unter Berücksichtigung der erforderlichen 12 Byte Interframe Gap.
Einige Kommentatoren wiesen auf frühere 10BASE-T-Implementierungen hin, die bereits Sende- und Empfangsfunktionen sowie einen IP-Stack wie lwIP boten. Die aktuelle 100BASE-TX-Lösung konzentriert sich jedoch auf die höhere Geschwindigkeit und die komplexere Physical Layer Implementierung. Ein Nutzer namens Puff Kitty erwähnte eine eigene 10BASE-T-Implementierung aus dem Jahr 2022, die ebenfalls den PIO (Programmable I/O) des Pico nutzte und mit nur drei Pins auskam.
Potenzielle Anwendungsbereiche
Die Fähigkeit, Daten mit 100 MBit/s über Ethernet zu senden, eröffnet neue Möglichkeiten für den Raspberry Pi Pico. Ein Anwendungsfall könnte die sichere Protokollierung von Daten sein. Wenn ein Gerät nur Daten senden, aber keine empfangen kann, bietet dies eine erhöhte Sicherheit. Sensible Protokolldaten könnten an einen zentralen Server gesendet werden, ohne dass ein Angreifer über das Netzwerk Befehle an das Gerät zurücksenden kann.
Weitere Anwendungen könnten in Bereichen liegen, wo einfache, schnelle Datenübertragung ohne komplexen Netzwerk-Stack benötigt wird. Zum Beispiel in industriellen Steuerungen oder Überwachungssystemen, die Daten an einen zentralen Punkt senden müssen.
PIO (Programmable I/O) des RP2040
- Der RP2040-Chip des Raspberry Pi Pico verfügt über zwei PIO-Blöcke.
- Jeder PIO-Block enthält vier State-Machines.
- Diese State-Machines können unabhängig voneinander laufen.
- Sie ermöglichen die Implementierung benutzerdefinierter Hardware-Peripherie in Software.
- Dies ist entscheidend für die präzise Timing-Kontrolle beim Bit-Banging.
Die Herausforderungen der Zukunft
Die Implementierung von 100 MBit/s Ethernet durch Bit-Banging ist ein bemerkenswerter Erfolg. Die nächste Stufe, 1 GBit/s Ethernet, stellt jedoch noch größere Herausforderungen dar. 1 GBit/s verwendet eine Taktrate von 125 MHz. Es erfordert zudem Vollduplex-Kommunikation mit Echokompensation. Dies macht eine einfache Bit-Banging-Lösung unwahrscheinlich. Externe PHY-Chips (Physical Layer Transceiver) wären hierfür wahrscheinlich notwendig.
Ein weiterer Schritt wäre die Implementierung von GRMII (Gigabit Reduced Media Independent Interface) PHY-Unterstützung für kostengünstige 1 GBit/s Chips wie den RTL8211. Dies würde den Raspberry Pi Pico in die Lage versetzen, mit noch höheren Geschwindigkeiten zu kommunizieren, was seine Anwendungsbereiche weiter erweitern würde.
Die Arbeit von [Steve] zeigt das Potenzial von Mikrocontrollern wie dem Raspberry Pi Pico auf. Sie demonstriert, dass auch komplexe Protokolle mit cleveren Software-Lösungen umgesetzt werden können. Die Community wird diese Entwicklung aufmerksam verfolgen und möglicherweise eigene Beiträge zur Verbesserung oder Erweiterung leisten.





