3 puntos por GN⁺ 2025-11-01 | 1 comentarios | Compartir por WhatsApp
  • Raspberry Pi Pico implementa transmisión Ethernet de 100 Mbit/s por software sin hardware dedicado
  • El desarrollador Steve Markgraf usa PIO y DMA para realizar codificación MLT-3, codificación de línea 4B5B y scrambling
  • Esta implementación funciona a una velocidad de símbolo de 125 MHz y logra aprox. 11 MB/s de transferencia por UDP
  • Los ejemplos incluyen streamer de ADC, contador y una demo de audio basada en PCM1802, con soporte tanto para RP2040 como RP2350
  • Un avance técnico que muestra el potencial de streaming de datos de alta velocidad y aplicaciones de instrumentación con microcontroladores de bajo costo

Implementación de Ethernet bit-bang de 100 Mbit/s en RP2040 y RP2350

  • Steve Markgraf implementó un transmisor Fast Ethernet de 100 Mbit/s completamente por software a través del proyecto Pico-100BASE-TX
    • Compatible tanto con RP2040 como con RP2350 (Pico 2)
    • Usa PIO (Programmable I/O) y DMA para manejar codificación MLT-3, codificación de línea 4B5B y scrambling
  • Como resultado, permite streaming de aprox. 11 MB/s por UDP, y se demostró transmisión en tiempo real de audio y datos de ADC
  • Esta implementación es solo de transmisión (proof of concept) y no debe conectarse directamente a equipos PoE
    • Se recomienda aislamiento mediante transformador de pulsos o switch Ethernet

Antecedentes del proyecto

  • Hace 3 años, el proyecto Pico-10BASE-T de kingyoPiyo llamó la atención al implementar Ethernet de 10 Mbit/s con solo unas cuantas resistencias
  • En 2023, una implementación de USB bit-bang amplió los límites de rendimiento de PIO en el RP2040
  • Este proyecto continúa esa línea y explora el potencial del hardware definido por software al alcanzar 100 Mbit/s

Repositorio de GitHub y ejemplos

  • Repositorio de GitHub: Pico-100BASE-TX
  • Ejemplos incluidos:
    • Contador
    • Streamer de ADC integrado
    • Demo de audio PCM1802 (75 kHz)
  • Puede compilarse con el Pico SDK estándar y es compatible tanto con RP2040 como RP2350

Importancia técnica

  • El punto clave es haber implementado transmisión Ethernet de 100 Mbit/s usando solo un microcontrolador, sin chip PHY dedicado
  • Muestra la posibilidad de desarrollar dispositivos de adquisición de datos y streaming de alta velocidad y bajo costo
  • Plantea el potencial de expansión del enfoque de hardware definido por software (Software-defined hardware)

1 comentarios

 
GN⁺ 2025-11-01
Comentarios de Hacker News
  • Esta es la típica historia del ciclo de la computación
    Al principio se procesa en la CPU, luego se mueve a una tarjeta dedicada fuera del bus, y cuando esa tarjeta se vuelve lenta, se le mete otra vez una CPU dentro de la tarjeta, y al final se termina metiendo lógica especializada dentro de la CPU para optimizar la comunicación entre buses
    En unos 10 años, parece que vamos a estar en una era en la que se reducirá un núcleo de RPi para meterlo dentro de un chiplet y programar drivers de red de terabits con un modelo de CPU de propósito general

    • Sí, este es el concepto de la Wheel of Reincarnation. Pero quien lo formuló primero no fue Bell, sino Sutherland y Myer, en un artículo publicado en 1968
      Design of Display Processors (1968)
    • Si soy sincero, solo entendí la mitad de esas palabras
  • Los MCU de hoy en día son realmente impresionantes. Por unos cuantos dólares puedes comprar un microcontrolador potente
    Antes se necesitaba una tarjeta dedicada como un TCP Offload Engine (TOE), pero ahora un chip pequeño puede hacer la mayor parte de esa función

    • Ahora hasta se puede con MCU de unos cuantos centavos. Aunque, por temas como una guerra en Taiwán o los componentes falsificados, puede que esta época no dure mucho
    • Me pregunto si habrá algún proyecto para principiantes recomendable para alguien que no está familiarizado con el hardware. Quiero construir algo, pero me faltan ideas
    • Sigue siendo sorprendente. Antes estos chips apenas hacían cosas al nivel de un PIC, y ahora por unos cuantos dólares ya tienes un MCU con WiFi integrado. En especial, el coprocesamiento de E/S del Pico es realmente potente
    • ¿Los NIC modernos no cumplen también mucho ese mismo papel?
  • El proyecto de leer directamente un micrófono PDM con PIO está buenísimo
    microphone-library-for-pico
    Esto se parece más a control de alta velocidad usando PIO que a ‘bit-banging’

    • Aun así, en un sentido amplio sí es bit-banging. Solo que el PIO hace que sea más rápido y estable
  • Parece que esto solo cubre transmisión (TX). ¿La recepción (RX) no sería la parte mucho más difícil?

    • Sí, es solo TX. Lo dice explícitamente a mitad del artículo. Yo también lo pasé por alto al principio
  • También sería interesante hacer un NIC Ethernet por USB basado en esto
    En especial, se podría aplicar para imitar un NIC gigabit compatible con Nintendo Switch, y hacer que funcione a 100Mbps si falla la negociación

  • Como referencia, los RPi iniciales (rev B) daban alrededor de 6MB/s por SSH. Es interesante como punto de comparación

  • El trabajo de Steve Markgraf es realmente impresionante.
    Es conocido por el proyecto High Speed Data Acquisition over HDMI, y usó un Pico2 como transmisor para alcanzar hasta 175MB/s
    También existe una versión hsdaoh-rp2350
    Pero parece que 100Mbit es el límite para hacerlo con bit-banging. 1Gbit usa un reloj de 125MHz, pero como es full duplex, hace falta cancelación de eco.
    El siguiente reto probablemente sería implementar un PHY RGMII usando un RTL8211 PHY de $1

    • RGMII usa un bus de 4 bits, así que se necesitan 250 millones de cambios de estado por segundo.
      El reloj es de 125MHz, pero como usa DDR, el PIO tendría que funcionar a 250MHz. Probablemente sería posible con un poco de overclock
    • ¡Qué gran proyecto, gracias!
  • ¿Habría sido posible esto sin PIO?

    • En el Pico, no. Sin PIO, cambiar los pines GPIO cada 3 o 4 ciclos de CPU no es algo realista
      En la práctica, el PIO es el ‘periférico definitivo’, así que llamarlo bit-banging es discutible.
      Para manejar 100Mbit/s solo con CPU, haría falta un MCU de alrededor de 500MHz, y ahí empezarían problemas con las características del bus o la latencia de caché
    • Incluso protocolos comunes como SPI suelen estar alrededor de 10MHz, así que es difícil compararlo con esto
  • “Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet”: mejor usar ohmios que unidades de Siemens

  • Me confundió ver GNU Radio en la pantalla. El RPi tiene la alimentación, dos líneas TX y una tercera línea; ¿qué es eso?

    • Esa es la línea de entrada de señal que se está convirtiendo a Ethernet. Es la parte donde se digitaliza una señal WBFM IF con el ADC interno, pero yo tampoco sé exactamente qué señal es