3 points par GN⁺ 2025-11-01 | 1 commentaires | Partager sur WhatsApp
  • Raspberry Pi Pico implémente en logiciel une transmission Ethernet à 100 Mbit/s sans matériel dédié
  • Le développeur Steve Markgraf utilise le PIO et le DMA pour réaliser le codage MLT-3, le codage de ligne 4B5B et le brouillage
  • Cette implémentation fonctionne à une fréquence symbole de 125 MHz et atteint environ 11 Mo/s via UDP
  • Les exemples incluent un streamer ADC, un compteur et une démo audio basée sur le PCM1802, avec prise en charge des RP2040 et RP2350
  • Une avancée technique qui montre le potentiel des applications de streaming de données à haut débit et d’instrumentation avec des microcontrôleurs à bas coût

Implémentation d’un Ethernet bit-bang à 100 Mbit/s sur RP2040 et RP2350

  • Steve Markgraf a implémenté, via le projet Pico-100BASE-TX, un émetteur Fast Ethernet à 100 Mbit/s entièrement en logiciel
    • Compatible avec RP2040 et RP2350 (Pico 2)
    • Utilise le PIO (Programmable I/O) et le DMA pour gérer le codage MLT-3, le codage de ligne 4B5B et le brouillage
  • Au final, il permet un streaming d’environ 11 Mo/s via UDP, avec démonstration de transmission en temps réel d’audio et de données ADC
  • Cette implémentation est réservée à l’émission (proof of concept) et ne doit pas être connectée directement à des équipements PoE
    • Une isolation via transformateur d’impulsions ou switch Ethernet est recommandée

Contexte du projet

  • Il y a trois ans, le projet Pico-10BASE-T de kingyoPiyo s’était fait remarquer en implémentant un Ethernet 10 Mbit/s avec seulement quelques résistances
  • En 2023, une implémentation de USB bit-bang a repoussé les limites de performance du PIO du RP2040
  • Ce nouveau projet s’inscrit dans cette continuité et explore les possibilités du matériel défini par logiciel en atteignant 100 Mbit/s

Dépôt GitHub et exemples

  • Dépôt GitHub : Pico-100BASE-TX
  • Exemples inclus :
    • Compteur
    • Streamer ADC intégré
    • Démo audio PCM1802 (75 kHz)
  • Peut être compilé avec le Pico SDK standard et est compatible avec RP2040 et RP2350

Portée technique

  • Le point clé est l’implémentation d’une transmission Ethernet à 100 Mbit/s avec un simple microcontrôleur, sans puce PHY dédiée
  • Le projet met en avant le potentiel de développement de dispositifs à bas coût de collecte de données rapide et de streaming
  • Il souligne aussi l’extensibilité de l’approche software-defined hardware

1 commentaires

 
GN⁺ 2025-11-01
Commentaires sur Hacker News
  • C’est un exemple typique du cycle de l’informatique
    Au début, on traite ça sur le CPU, puis on le déplace vers une carte dédiée hors du bus, et quand cette carte devient trop lente, on remet un CPU dedans, avant de finir par intégrer une logique spécialisée directement dans le CPU pour optimiser la communication entre bus
    Dans dix ans, on réduira probablement un cœur de RPi pour l’intégrer dans un chiplet, et on programmera des pilotes réseau térabit selon un modèle de CPU généraliste

    • Oui, c’est le concept de la « Wheel of Reincarnation ». Mais ce n’est pas Bell qui l’a formulé en premier, ce sont Sutherland et Myer, dans un article publié en 1968
      Design of Display Processors (1968)
    • Pour être honnête, je n’ai compris que la moitié de ces mots
  • Les MCU d’aujourd’hui sont vraiment impressionnants. Pour quelques dollars, on peut acheter un microcontrôleur puissant
    Avant, il fallait des cartes dédiées comme les TCP Offload Engine (TOE), alors qu’aujourd’hui une petite puce accomplit l’essentiel de ce travail

    • Maintenant, même des MCU à quelques centimes peuvent le faire. Cela dit, avec une éventuelle guerre à Taïwan ou les problèmes de composants contrefaits, cette époque ne durera peut-être pas éternellement
    • Je me demande s’il existe un projet d’initiation à recommander à quelqu’un qui n’est pas familier du matériel. J’aimerais construire quelque chose, mais je manque d’idées
    • Ça reste bluffant. Des puces autrefois limitées à peu près au niveau des PIC permettent maintenant d’avoir, pour quelques dollars, des MCU avec WiFi intégré. Le coprocesseur d’E/S du Pico est particulièrement puissant
    • Les NIC modernes ne remplissent-elles pas déjà en grande partie ce rôle ?
  • Le projet qui lit directement un micro PDM via PIO est vraiment génial
    microphone-library-for-pico
    On est plus proche d’un pilotage haut débit via PIO que du « bit-banging » au sens strict

    • Ça reste quand même du bit-banging au sens large. C’est juste que le PIO le rend plus rapide et plus fiable
  • On dirait que ça ne traite que l’émission (TX). La réception (RX) doit être la partie vraiment difficile, non ?

    • Exact, c’est TX uniquement. C’est indiqué au milieu de l’article. Je l’avais raté moi aussi au début
  • Ce serait aussi intéressant d’en faire une NIC Ethernet USB
    En particulier en imitant une NIC gigabit prise en charge par la Nintendo Switch, avec un basculement à 100 Mbps si la négociation échoue

  • À titre de comparaison, le RPi d’origine (rev B) atteignait environ 6 Mo/s en SSH. C’est intéressant comme point de repère

  • Les réalisations de Steve Markgraf sont vraiment impressionnantes.
    Il est connu pour le projet High Speed Data Acquisition over HDMI, et il a utilisé le Pico2 comme émetteur pour atteindre jusqu’à 175 Mo/s
    Il existe aussi une version hsdaoh-rp2350
    En revanche, 100 Mbit est probablement la limite en bit-banging. Le 1 Gbit utilise une horloge à 125 MHz, mais comme c’est du full duplex, il faut aussi de l’annulation d’écho.
    Le prochain défi sera sans doute d’implémenter un PHY RGMII à l’aide d’un PHY RTL8211 à 1 $

    • Le RGMII utilise un bus sur 4 bits, donc il faut 250 millions de changements d’état par seconde.
      L’horloge est à 125 MHz, mais comme c’est du DDR, le PIO devrait fonctionner à 250 MHz. Ça semble possible avec un léger overclocking
    • Super projet. Merci !
  • Est-ce que ça aurait été possible sans PIO ?

    • Sur le Pico, non. Sans PIO, changer l’état des broches GPIO tous les 3 à 4 cycles CPU n’est pas réaliste
      Le PIO est en pratique le « périphérique ultime », donc l’appeler bit-banging est un peu discutable.
      Pour traiter du 100 Mbit/s uniquement avec le CPU, il faudrait un MCU autour de 500 MHz, et là on commencerait à avoir des problèmes de caractéristiques de bus ou de latence de cache
    • Même des protocoles classiques comme le SPI tournent généralement autour de 10 MHz, donc la comparaison est difficile
  • « Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet » : quitte à choisir une unité Siemens, j’aurais préféré des ohms

  • J’ai été troublé en voyant GNU Radio à l’écran. Le RPi a l’alimentation, deux lignes TX, et une troisième ligne : c’est quoi ?

    • C’est la ligne d’entrée du signal en cours de conversion vers Ethernet. Il s’agit de la partie qui numérise, via l’ADC interne, un signal IF WBFM, mais je ne sais pas exactement de quel signal il s’agit