Raspberry Pi Pico 以 Bit-Banging 方式實現 100 Mbit/s 乙太網路傳輸 (★ 155 分)
Steve Markgraf 利用 Raspberry Pi Pico 上的 PIO (可程式化輸出入) 與 DMA (直接記憶體存取) 完全以軟體實現 100 Mbit/s Fast Ethernet(100BASE-TX)傳輸。他在 125 MHz 的符號率下,結合 MLT-3 編碼、4B5B 編碼及訊號解擾,透過 UDP (使用者資料報協定) 提供約 11 Mbyte/s 的即時音訊與 ADC 資料串流,展示了軟體驅動以太網的可能性。此專案同時支援 RP2040 及新版 RP2350(Pico 2),並以標準 Pico SDK 編譯。
這項傳輸專案屬於僅「傳送」概念驗證,不含接收功能,也不建議直接連接具備 PoE (Ethernet 供電) 的設備;實際應用時須透過脈衝變壓器或中介交換器實現電氣隔離。作者在 GitHub 提供各種範例應用,包括計數器、內建 ADC 串流器,以及使用 PCM1802 AD 轉換器進行 75 kHz 音訊示範。
這類「軟體定義硬體」(software-defined hardware) 專案顯示,兩美元等級的微控制器也能在高頻率腳位切換上達成高效能網路傳輸,為低成本測試儀器、遠端感測器或實驗性網路介面開啟新路。未來若能加入接收能力甚至實作全雙工、1 Gbit/s 傳輸,並整合外部 PHY,將進一步擴展應用範疇。
在 Hacker News 討論中,多數開發者強調若無 PIO 這類可程式化協同處理器,要達到此傳輸率恐需超過 500 MHz 的 MCU 才能逐位切換腳位;而 PIO 可視作通用的硬體協同單元,不同於傳統 CPU 以軟體直接「逐位敲打」(bit-banging)。有人分享透過 PIO 實現 I2S (串列音訊介面)、或利用 RP2350 內建 HSTX 硬體區塊驅動 HDMI,每秒可輸出 175 Mbyte 影像資料。討論也提及過去需要 TOE (TCP Offload Engine) 卡或 PCI SSL 加速卡來分擔 CPU 網路負載的歷史,並對 Pico 的 PIO 周邊能擴展至更多高速 IO 應用感到興奮,同時期待更完善的程式庫與範例降低開發複雜度。
👥 42 則討論、評論 💬
https://news.ycombinator.com/item?id=45754439