Raspberry Pi Pico mengimplementasikan Ethernet 100 Mbit/s lewat perangkat lunak
(elektormagazine.com)- Raspberry Pi Pico menunjukkan implementasi transmisi Ethernet 100 Mbit/s lewat perangkat lunak tanpa perangkat keras khusus
- Pengembang Steve Markgraf menggunakan PIO dan DMA untuk menjalankan enkode MLT-3, line coding 4B5B, dan scrambling
- Implementasi ini bekerja pada laju simbol 125 MHz dan mencapai transfer sekitar 11MB/s melalui UDP
- Contohnya mencakup ADC streamer, counter, dan demo audio berbasis PCM1802, serta mendukung RP2040 dan RP2350
- Ini merupakan kemajuan teknis yang menunjukkan potensi streaming data berkecepatan tinggi dan aplikasi instrumentasi dengan mikrokontroler berbiaya rendah
Implementasi Ethernet bit-bang 100 Mbit/s pada RP2040 dan RP2350
- Steve Markgraf mengimplementasikan pemancar Fast Ethernet 100 Mbit/s sepenuhnya dengan pendekatan perangkat lunak melalui proyek Pico-100BASE-TX
- Mendukung RP2040 dan RP2350 (Pico 2)
- Menggunakan PIO (Programmable I/O) dan DMA untuk menangani enkode MLT-3, line coding 4B5B, dan scrambling
- Hasilnya, streaming sekitar 11MB/s melalui UDP dimungkinkan, dan transmisi audio real-time serta data ADC telah didemonstrasikan
- Implementasi ini bersifat khusus transmisi (proof of concept), dan jangan sambungkan langsung ke perangkat PoE
- Disarankan menggunakan isolasi melalui pulse transformer atau switch Ethernet
Latar belakang proyek
- Tiga tahun lalu, proyek Pico-10BASE-T dari kingyoPiyo menarik perhatian karena mengimplementasikan Ethernet 10 Mbit/s hanya dengan beberapa resistor
- Pada 2023, implementasi USB bit-bang memperluas batas performa PIO RP2040
- Proyek kali ini merupakan kelanjutan dari upaya tersebut, dengan mengeksplorasi kemungkinan hardware terdefinisi perangkat lunak melalui pencapaian kecepatan 100 Mbit/s
Repositori GitHub dan contoh
- Repositori GitHub: Pico-100BASE-TX
- Contoh yang disertakan:
- Counter
- Built-in ADC streamer
- Demo audio PCM1802 (75 kHz)
- Dapat di-build dengan Pico SDK standar dan kompatibel dengan RP2040 maupun RP2350
Signifikansi teknis
- Poin utamanya adalah implementasi transmisi Ethernet 100 Mbit/s hanya dengan mikrokontroler, tanpa chip PHY khusus
- Menunjukkan potensi pengembangan perangkat akuisisi data berkecepatan tinggi dan streaming berbiaya rendah
- Mengangkat kemungkinan perluasan pendekatan software-defined hardware
1 komentar
Komentar Hacker News
Ini tipikal cerita tentang struktur siklus komputasi
Awalnya diproses di CPU, lalu dipindahkan ke kartu khusus di luar bus, ketika kartu itu jadi lambat CPU kembali dimasukkan ke dalam kartu, dan pada akhirnya logika khusus dimasukkan ke dalam CPU untuk mengoptimalkan komunikasi antarbus
Mungkin 10 tahun lagi kita akan mengecilkan inti RPi, menaruhnya ke dalam chiplet, lalu memprogram driver jaringan terabit dengan model CPU serbaguna
Design of Display Processors (1968)
MCU zaman sekarang benar-benar luar biasa. Dengan beberapa dolar saja kita bisa membeli mikrokontroler yang kuat
Dulu perlu kartu khusus seperti TCP Offload Engine (TOE), sekarang sebagian besar fungsi itu bisa dijalankan oleh chip kecil
Proyek membaca mikrofon PDM langsung dengan PIO benar-benar keren
microphone-library-for-pico
Ini lebih mendekati kontrol berkecepatan tinggi dengan PIO daripada sekadar ‘bit-banging’
Sepertinya ini hanya menangani transmisi (TX). Penerimaan (RX) pasti bagian yang jauh lebih sulit, kan?
Menarik juga kalau ini dipakai sebagai dasar untuk membuat USB Ethernet NIC
Terutama dengan meniru NIC gigabit yang didukung Nintendo Switch, lalu membuatnya berjalan pada 100Mbps saat negosiasi gagal
Sebagai referensi, RPi awal (rev B) dulu menghasilkan sekitar 6MB/s lewat SSH. Menarik sebagai pembanding
Karya Steve Markgraf benar-benar mengesankan.
Ia terkenal lewat proyek High Speed Data Acquisition over HDMI, dan menggunakan Pico2 sebagai pemancar untuk mencapai hingga 175MB/s
Ada juga versi hsdaoh-rp2350
Namun untuk bit-banging, 100Mbit tampaknya batas atasnya. 1Gbit memakai clock 125MHz, tetapi karena full duplex maka diperlukan echo cancellation.
Tantangan berikutnya tampaknya adalah mengimplementasikan PHY RGMII dengan RTL8211 PHY seharga $1
Clock-nya memang 125MHz, tetapi karena memakai DDR, PIO harus berjalan di 250MHz. Sepertinya masih mungkin dengan sedikit overclock
Apakah ini mungkin tanpa PIO?
PIO pada dasarnya adalah ‘periferal terkuat’, jadi agak meragukan kalau disebut bit-banging.
Untuk menangani 100Mbit/s hanya dengan CPU, mungkin dibutuhkan MCU kelas 500MHz, dan saat itu akan muncul masalah seperti karakteristik bus atau latensi cache
“Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet” — daripada satuan Siemens, Ohm rasanya lebih cocok
Saya sempat bingung karena ada GNU Radio di layar. RPi terlihat punya daya, dua jalur TX, dan satu jalur ketiga; itu apa?