3 ポイント 投稿者 GN⁺ 2025-11-01 | 1件のコメント | WhatsAppで共有
  • Raspberry Pi Picoが専用ハードウェアなしで100 Mbit/sイーサネット送信をソフトウェアで実装した事例
  • 開発者Steve MarkgrafPIOとDMAを用いてMLT-3エンコーディング4B5Bラインコーディングスクランブリングを実行
  • この実装は125 MHzシンボルレートで動作し、UDP経由で約11MB/sの転送を実現
  • サンプルにはADCストリーマーカウンターPCM1802ベースのオーディオデモが含まれ、RP2040とRP2350の両方をサポート
  • 低価格マイクロコントローラで高速データストリーミングと計測アプリケーションの可能性を示す技術的進展

RP2040およびRP2350での100 Mbit/sビットバンイーサネット実装

  • Steve MarkgrafPico-100BASE-TXプロジェクトを通じて100 Mbit/s Fast Ethernet送信機を完全なソフトウェア方式で実装
    • RP2040および**RP2350(Pico 2)**の両方をサポート
    • PIO(Programmable I/O)DMAを使用してMLT-3エンコーディング4B5Bラインコーディングスクランブリングを処理
  • その結果、UDP経由で約11MB/sのストリーミングが可能となり、リアルタイムオーディオおよびADCデータ転送が実演された
  • この実装は**送信専用(proof of concept)**の形態であり、PoE機器との直接接続は禁止
    • パルストランスまたはイーサネットスイッチを介した絶縁を推奨

プロジェクトの背景

  • 3年前、kingyoPiyoPico-10BASE-Tプロジェクトが、わずか数本の抵抗で10 Mbit/sイーサネットを実装して注目を集めた
  • 2023年にはビットバンUSB実装により、RP2040のPIO性能限界を拡張
  • 今回のプロジェクトはその延長線上にあり、100 Mbit/s速度の達成を通じてソフトウェア定義ハードウェアの可能性を探る

GitHubリポジトリとサンプル

  • GitHubリポジトリ: Pico-100BASE-TX
  • 含まれるサンプル:
    • カウンター
    • 内蔵ADCストリーマー
    • PCM1802(75 kHz)オーディオデモ
  • 標準Pico SDKでビルド可能で、RP2040とRP2350の両方に対応

技術的意義

  • 専用PHYチップなしでマイクロコントローラのみを使って100 Mbit/sイーサネット送信を実装した点が核心
  • 低コスト高速データ収集およびストリーミング機器の開発可能性を提示
  • **ソフトウェア定義ハードウェア(Software-defined hardware)**アプローチの拡張可能性を提起

1件のコメント

 
GN⁺ 2025-11-01
Hacker Newsのコメント
  • これは典型的なコンピューティングの循環構造の話だと思う
    最初はCPUで処理し、次にバスの外にある専用カードへ移し、そのカードが遅ければ再びカードの中にCPUを入れ、最終的にはバス間通信を最適化するためにCPU内部へ特殊ロジックを組み込むことになる
    10年もすれば、RPiコアを縮小してチップレットの中に入れ、テラビットネットワークドライバを汎用CPUモデルとしてプログラムする時代が来そうだ

    • その通り、これは「Wheel of Reincarnation」の概念だ。ただ、最初に整理したのはBellではなくSutherlandとMyerで、1968年に発表された論文だ
      Design of Display Processors (1968)
    • 正直に言うと、その単語の半分しか理解できなかった
  • 最近のMCUは本当にすごい。数ドルで高性能なマイクロコントローラが買える
    昔はTCP Offload Engine(TOE)のような専用カードが必要だったのに、今ではその機能の大半を小さなチップがこなしてしまう

    • 今では数セントのMCUでも可能だ。ただ、台湾有事偽造部品の問題で、こういう時代が長く続かないかもしれない
    • ハードウェアにあまり詳しくない人に勧められる入門プロジェクトはあるだろうか。何か作ってみたいけれど、アイデアが足りない
    • いまだに驚かされる。昔はPIC程度の仕事しかできなかったチップが、今ではWiFi内蔵MCUとして数ドルで手に入る。特にPicoのIOコプロセッシングは本当に強力だ
    • 最近のNICも似たような役割をかなり担っていないか?
  • PDMマイクをPIOで直接読むプロジェクトは本当にすばらしい
    microphone-library-for-pico
    これは「bit-banging」というより、PIOを使った高速制御に近い

    • それでも広い意味ではbit-bangingだ。PIOがそれをより高速かつ安定して実現してくれるだけだ
  • これは送信(TX)だけを扱っているように見える。受信(RX)はずっと難しい部分では?

    • その通り、TX専用だ。記事の途中にはっきり書かれている。私も最初は見落としていた
  • これをベースにUSBイーサネットNICを作るのも面白そうだ
    特にNintendo SwitchがサポートしているギガビットNICをまねして、ネゴシエーションに失敗した場合は100Mbpsで動作するようにする、といった応用ができそうだ

  • 参考までに、初期のRPi (rev B) はSSHでおよそ6MB/s程度の速度が出ていた。比較材料として興味深い

  • Steve Markgrafの仕事は本当に印象的だ。
    彼はHigh Speed Data Acquisition over HDMIプロジェクトで知られており、Pico2を送信機として使って175MB/sまで達成している
    hsdaoh-rp2350版もある
    ただしbit-bangingでは100Mbitが限界だろう。1Gbitは125MHzクロックを使うが、full duplexなのでエコーキャンセリングが必要になる。
    次の挑戦は、1ドルのRTL8211 PHYを使ってRGMII PHYを実装することだと思う

    • RGMIIは4ビットバスを使うため、1秒あたり2.5億回の状態遷移が必要になる。
      クロックは125MHzだがDDR方式なので、PIOは250MHzで動作しなければならない。少しのオーバークロックでもいけそうだ
    • すばらしいプロジェクトだ。ありがとう!
  • PIOなしでこれは実現できただろうか?

    • Picoでは無理だ。PIOがなければGPIOピンを3〜4 CPUクロックごとに切り替えるのは現実的に難しい
      PIOは実質的に「最強の周辺回路」なので、bit-bangingと呼ぶには少し微妙だ。
      100Mbit/sをCPUだけで処理するにはおよそ500MHz級のMCUが必要で、その場合はバス特性やキャッシュ遅延といった問題が出てくる
    • SPIのような一般的なプロトコルでも普通は10MHz程度なので、これは単純比較が難しい
  • 「Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet」だなんて、Siemens単位よりOhmのほうがよさそうだ

  • 画面にGNU Radioが表示されていて混乱した。RPiには電源、TX線が2本、そして3本目の線があるが、あれは何だ?

    • それはイーサネットへ変換中の信号入力線だ。内部ADCでWBFM IF信号をデジタル化している部分だが、正確に何の信号かは私にも分からない