3 pontos por GN⁺ 2025-11-01 | 1 comentários | Compartilhar no WhatsApp
  • O Raspberry Pi Pico implementa transmissão Ethernet de 100 Mbit/s por software, sem hardware dedicado
  • O desenvolvedor Steve Markgraf usa PIO e DMA para realizar codificação MLT-3, codificação de linha 4B5B e scrambling
  • A implementação opera com taxa de símbolos de 125 MHz e alcança cerca de 11 MB/s de transmissão via UDP
  • Os exemplos incluem streamer de ADC, contador e demo de áudio baseada em PCM1802, com suporte a RP2040 e RP2350
  • Um avanço técnico que mostra o potencial de streaming de dados em alta velocidade e aplicações de instrumentação com microcontroladores de baixo custo

Implementação de Ethernet bit-bang de 100 Mbit/s no RP2040 e RP2350

  • Steve Markgraf implementou um transmissor Fast Ethernet de 100 Mbit/s inteiramente por software por meio do projeto Pico-100BASE-TX
    • Suporte a RP2040 e RP2350 (Pico 2)
    • Usa PIO (Programmable I/O) e DMA para processar codificação MLT-3, codificação de linha 4B5B e scrambling
  • Como resultado, é possível fazer streaming de cerca de 11 MB/s via UDP, com demonstrações de transmissão de áudio em tempo real e dados de ADC
  • Esta implementação é apenas de transmissão (proof of concept), e não deve ser conectada diretamente a equipamentos PoE
    • Recomenda-se isolamento por meio de um transformador de pulso ou switch Ethernet

Contexto do projeto

  • Há 3 anos, o projeto Pico-10BASE-T de kingyoPiyo chamou atenção ao implementar Ethernet de 10 Mbit/s com apenas alguns resistores
  • Em 2023, uma implementação de USB bit-bang ampliou os limites de desempenho do PIO no RP2040
  • Este projeto segue essa linha e explora as possibilidades de hardware definido por software ao alcançar 100 Mbit/s

Repositório GitHub e exemplos

  • Repositório GitHub: Pico-100BASE-TX
  • Exemplos incluídos:
    • Contador
    • Streamer de ADC integrado
    • Demo de áudio PCM1802 (75 kHz)
  • Pode ser compilado com o Pico SDK padrão e é compatível com RP2040 e RP2350

Importância técnica

  • O ponto principal é a implementação de transmissão Ethernet de 100 Mbit/s usando apenas o microcontrolador, sem chip PHY dedicado
  • Aponta a possibilidade de desenvolver dispositivos de aquisição de dados de alta velocidade e streaming de baixo custo
  • Levanta o potencial de expansão da abordagem de hardware definido por software (Software-defined hardware)

1 comentários

 
GN⁺ 2025-11-01
Comentários no Hacker News
  • Isso é uma história clássica da estrutura cíclica da computação
    Primeiro se processa na CPU, depois isso vai para uma placa dedicada fora do barramento, quando a placa fica lenta colocam uma CPU dentro dela e, no fim, adicionam lógica especializada dentro da própria CPU para otimizar a comunicação entre barramentos
    Daqui a uns 10 anos, parece bem possível que encolham um núcleo de RPi e o coloquem dentro de um chiplet, e passem a programar drivers de rede em terabits em um modelo de CPU de uso geral

    • Sim, isso é o conceito de Wheel of Reincarnation. Só que quem organizou isso primeiro não foi Bell, e sim Sutherland e Myer, em um artigo publicado em 1968
      Design of Display Processors (1968)
    • Sinceramente, acho que entendi só metade dessas palavras
  • Os MCUs de hoje em dia são realmente incríveis. Por alguns dólares, dá para comprar um microcontrolador poderoso
    Antes era preciso uma placa dedicada como um TCP Offload Engine (TOE), mas agora um chip pequeno faz a maior parte disso

    • Hoje em dia até um MCU de alguns centavos dá conta. Só que, com uma guerra em Taiwan ou problemas com componentes falsificados, talvez essa era não dure tanto assim
    • Fico curioso se existe algum projeto para iniciantes em hardware que valha recomendar. Queria construir alguma coisa, mas estou sem ideias
    • Continua impressionante. Chips que antes faziam só coisas no nível de PIC agora podem ser MCUs com Wi‑Fi embutido por alguns dólares. O coprocessamento de IO do Pico, em especial, é realmente muito poderoso
    • Hoje em dia as NICs também não fazem muito desse mesmo papel?
  • O projeto de ler diretamente um microfone PDM com PIO é realmente muito legal
    microphone-library-for-pico
    Isso está mais para controle em alta velocidade com PIO do que para ‘bit-banging’

    • Ainda assim, em um sentido amplo, continua sendo bit-banging. A diferença é que o PIO só torna isso mais rápido e mais estável
  • Parece que isso lida só com transmissão (TX). A recepção (RX) deve ser a parte bem mais difícil, não?

    • Sim, é somente TX. Isso está explicitado no meio do texto. Eu também deixei passar na primeira leitura
  • Também parece interessante usar isso como base para criar uma NIC Ethernet via USB
    Principalmente para imitar uma NIC gigabit suportada pelo Nintendo Switch e fazer com que, se a negociação falhar, ela opere a 100 Mbps

  • Só como referência, os RPi iniciais (rev B) faziam algo em torno de 6 MB/s via SSH. É uma comparação interessante

  • O trabalho do Steve Markgraf é realmente impressionante.
    Ele é conhecido pelo projeto High Speed Data Acquisition over HDMI, e usou um Pico2 como transmissor para chegar a 175 MB/s
    Também existe a versão hsdaoh-rp2350
    Mas 100 Mbit provavelmente é o limite com bit-banging. 1 Gbit usa clock de 125 MHz, mas como é full duplex, exige cancelamento de eco.
    O próximo desafio provavelmente seria implementar um PHY RGMII usando um PHY RTL8211 de US$ 1

    • O RGMII usa um barramento de 4 bits, então são necessárias 250 milhões de transições de estado por segundo.
      O clock é de 125 MHz, mas como funciona em DDR, o PIO teria de rodar a 250 MHz. Parece viável com um pouco de overclock
    • Projeto excelente. Obrigado!
  • Isso seria possível sem PIO?

    • No Pico, não. Sem PIO, é pouco realista mudar os pinos GPIO a cada 3 ou 4 clocks de CPU
      O PIO é praticamente um ‘periférico supremo’, então fica até estranho chamar isso de bit-banging.
      Para lidar com 100 Mbit/s só com CPU, seria preciso um MCU na faixa dos 500 MHz, e aí apareceriam problemas como características do barramento e latência de cache
    • Mesmo protocolos comuns como SPI normalmente ficam na casa dos 10 MHz, então a comparação aqui é difícil
  • “Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet”: em vez da unidade Siemens, Ohm seria melhor

  • Fiquei confuso porque GNU Radio estava aparecendo na tela. O RPi tem alimentação, dois fios de TX e um terceiro fio; o que é aquilo?

    • É a linha de entrada de sinal que está sendo convertida para Ethernet. É a parte em que o sinal IF WBFM é digitalizado pelo ADC interno, mas eu também não sei exatamente que sinal é esse