3 điểm bởi GN⁺ 2025-11-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Raspberry Pi Pico đã triển khai truyền Ethernet 100 Mbit/s bằng phần mềm mà không cần phần cứng chuyên dụng
  • Nhà phát triển Steve Markgraf sử dụng PIO và DMA để thực hiện mã hóa MLT-3, mã đường truyền 4B5B, và scrambling
  • Cách triển khai này hoạt động ở tốc độ ký hiệu 125 MHz và đạt truyền khoảng 11MB/s qua UDP
  • Ví dụ đi kèm gồm ADC streamer, counter, và demo âm thanh dựa trên PCM1802, đồng thời hỗ trợ cả RP2040 và RP2350
  • Đây là một bước tiến kỹ thuật cho thấy tiềm năng của streaming dữ liệu tốc độ cao và các ứng dụng đo lường trên vi điều khiển giá rẻ

Triển khai Ethernet bit-bang 100 Mbit/s trên RP2040 và RP2350

  • Steve Markgraf đã triển khai bộ phát Fast Ethernet 100 Mbit/s hoàn toàn bằng phần mềm thông qua dự án Pico-100BASE-TX
    • Hỗ trợ cả RP2040RP2350 (Pico 2)
    • Sử dụng PIO (Programmable I/O)DMA để xử lý mã hóa MLT-3, mã đường truyền 4B5B, và scrambling
  • Kết quả là có thể stream khoảng 11MB/s qua UDP, đồng thời trình diễn truyền âm thanh thời gian thực và dữ liệu ADC
  • Cách triển khai này là dạng chỉ truyền (proof of concept)không được kết nối trực tiếp với thiết bị PoE
    • Khuyến nghị cách ly thông qua pulse transformer hoặc switch Ethernet

Bối cảnh dự án

  • Ba năm trước, dự án Pico-10BASE-T của kingyoPiyo đã thu hút sự chú ý khi triển khai Ethernet 10 Mbit/s chỉ với vài điện trở
  • Đến năm 2023, việc triển khai bit-bang USB đã mở rộng giới hạn hiệu năng PIO của RP2040
  • Dự án lần này tiếp nối hướng đi đó, khám phá khả năng của phần cứng định nghĩa bằng phần mềm bằng cách đạt tốc độ 100 Mbit/s

Kho lưu trữ GitHub và ví dụ

  • Kho lưu trữ GitHub: Pico-100BASE-TX
  • Các ví dụ đi kèm:
    • counter
    • built-in ADC streamer
    • demo âm thanh PCM1802 (75 kHz)
  • Có thể build bằng Pico SDK tiêu chuẩn và tương thích với cả RP2040RP2350

Ý nghĩa kỹ thuật

  • Điểm cốt lõi là đã triển khai truyền Ethernet 100 Mbit/s chỉ bằng vi điều khiển, không cần chip PHY chuyên dụng
  • Mở ra khả năng phát triển các thiết bị thu thập dữ liệu tốc độ cao và streaming chi phí thấp
  • Cho thấy tiềm năng mở rộng của cách tiếp cận phần cứng định nghĩa bằng phần mềm (Software-defined hardware)

1 bình luận

 
GN⁺ 2025-11-01
Ý kiến trên Hacker News
  • Đây là một câu chuyện điển hình về cấu trúc tuần hoàn của điện toán
    Ban đầu xử lý bằng CPU, rồi chuyển sang card chuyên dụng bên ngoài bus, khi card đó chậm thì lại nhét CPU vào trong card, và cuối cùng lại đưa logic chuyên biệt vào bên trong CPU để tối ưu giao tiếp giữa các bus
    Có lẽ khoảng 10 năm nữa sẽ tới thời kỳ thu nhỏ lõi RPi để nhét vào chiplet, rồi lập trình driver mạng terabit theo mô hình CPU đa dụng

    • Đúng vậy, đây là khái niệm “Wheel of Reincarnation”. Tuy nhiên, người đầu tiên hệ thống hóa nó không phải Bell mà là Sutherland và Myer, trong một bài báo công bố năm 1968
      Design of Display Processors (1968)
    • Nói thật thì tôi chỉ hiểu được khoảng một nửa số từ ở đó
  • MCU ngày nay thật sự rất ấn tượng. Chỉ với vài đô la là đã có thể mua được vi điều khiển mạnh mẽ
    Trước đây phải cần card chuyên dụng như TCP Offload Engine (TOE), còn giờ thì một con chip nhỏ đã làm được phần lớn việc đó

    • Giờ thậm chí MCU giá chỉ vài xu cũng làm được. Nhưng vì vấn đề chiến tranh ở Đài Loan hay linh kiện giả, thời kỳ này có lẽ sẽ không kéo dài mãi
    • Không biết có dự án nhập môn nào đáng giới thiệu cho người chưa quen phần cứng không. Tôi muốn tự làm gì đó nhưng đang thiếu ý tưởng
    • Vẫn thấy rất đáng kinh ngạc. Ngày xưa chip chỉ làm được những việc cỡ PIC, còn giờ MCU tích hợp Wi‑Fi cũng chỉ tốn vài đô. Đặc biệt, đồng xử lý IO của Pico thực sự rất mạnh
    • NIC ngày nay cũng đang đảm nhiệm khá nhiều vai trò tương tự phải không?
  • Dự án đọc trực tiếp micro PDM bằng PIO thật sự rất ngầu
    microphone-library-for-pico
    Cái này đúng ra gần với điều khiển tốc độ cao bằng PIO hơn là “bit-banging”

    • Nhưng theo nghĩa rộng thì vẫn là bit-banging. Chỉ là PIO giúp làm việc đó nhanh hơn và ổn định hơn thôi
  • Có vẻ cái này chỉ xử lý truyền (TX). Phần nhận (RX) chắc sẽ khó hơn nhiều?

    • Đúng, đây là chỉ TX. Trong bài có ghi rõ ở giữa. Lúc đầu tôi cũng bỏ sót chỗ đó
  • Làm một NIC Ethernet qua USB dựa trên cái này cũng có vẻ thú vị
    Đặc biệt có thể ứng dụng theo kiểu giả lập NIC gigabit mà Nintendo Switch hỗ trợ, rồi nếu thương lượng thất bại thì chạy ở 100Mbps

  • Tham khảo thêm thì RPi đời đầu (rev B) từng đạt khoảng 6MB/s qua SSH. Lấy làm mốc so sánh cũng khá thú vị

  • Tác phẩm của Steve Markgraf thực sự rất ấn tượng.
    Anh ấy nổi tiếng với dự án High Speed Data Acquisition over HDMI, và đã dùng Pico2 làm bộ phát để đạt tới 175MB/s
    Cũng có phiên bản hsdaoh-rp2350
    Tuy vậy, với bit-banging thì 100Mbit có lẽ là giới hạn. 1Gbit dùng xung nhịp 125MHz nhưng là full duplex, nên cần echo cancellation.
    Thử thách tiếp theo có lẽ là hiện thực hóa RGMII PHY bằng RTL8211 PHY giá 1 USD

    • RGMII dùng bus 4 bit nên cần 250 triệu lần chuyển trạng thái mỗi giây.
      Xung nhịp là 125MHz nhưng vì dùng DDR, nên PIO phải chạy ở 250MHz. Có vẻ chỉ cần ép xung nhẹ là làm được
    • Dự án tuyệt vời. Cảm ơn!
  • Nếu không có PIO thì liệu chuyện này có khả thi không?

    • Trên Pico thì không thể. Nếu không có PIO thì việc đổi trạng thái chân GPIO mỗi 3–4 xung CPU là điều rất khó khả thi
      PIO thực chất gần như là một ngoại vi tối thượng, nên gọi nó là bit-banging cũng hơi gượng.
      Để xử lý 100Mbit/s chỉ bằng CPU thì sẽ cần MCU cỡ 500MHz, mà lúc đó lại phát sinh các vấn đề như đặc tính bus hay độ trễ cache
    • Ngay cả các giao thức phổ biến như SPI cũng thường chỉ ở mức 10MHz, nên chuyện này rất khó đem ra so sánh trực tiếp
  • “Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet” à, dùng đơn vị Siemens thì thà Ohm còn hợp hơn

  • Tôi bị rối vì trên màn hình có GNU Radio. RPi có nguồn, hai dây TX, và còn dây thứ ba nữa, đó là gì?

    • Đó là đường tín hiệu đầu vào đang được chuyển sang Ethernet. Nó là phần số hóa tín hiệu WBFM IF bằng ADC nội bộ, nhưng chính xác là loại tín hiệu gì thì tôi cũng không rõ