FPGA Alibaba Cloud: Kintex UltraScale+ seharga 200 dolar
(essenceia.github.io)- Memperkenalkan eksperimen membeli board Kintex UltraScale+ FPGA seharga 200 dolar dan memanfaatkannya sebagai platform pengembangan
- Board ini dijual tanpa dokumentasi resmi maupun garansi sehingga ada tantangan pada debugging JTAG dan konfigurasi awal
- Menjelajahi kemungkinan membangun lingkungan konfigurasi dan debugging FPGA secara mandiri dengan memanfaatkan OpenOCD dan Segger JLink
- Tujuan eksperimen meliputi verifikasi antarmuka PCIe/Ethernet pada FPGA bekas, pemeriksaan pinout, dan pemantauan sistem
- Merangkum prosedur bertahap beserta pengalaman pemecahan masalah, mulai dari inisialisasi dan koneksi JTAG, identifikasi scan chain, hingga pemantauan suhu/tegangan
Pengantar
- Penulis menginginkan FPGA yang kuat untuk prototyping proyek berskala besar, khususnya UltraScale+ dari lini Xilinx Virtex, tetapi karena masalah biaya dan beban lisensi Vivado Enterprise, pilihannya dipersempit ke chip Kintex UltraScale+ yang didukung WebPack (XCKU3P, XCKU5P)
- Chip-chip tersebut juga menawarkan spesifikasi tinggi yang melampaui level hobi, seperti LUT dalam jumlah besar dan transceiver GTY
- Diperlukan board pengembangan yang memenuhi syarat minimal 2 SFP+ atau 1 QSFP, JTAG, dan PCIe x8 atau lebih; di tengah pertimbangan antara merancang sendiri, membeli produk Alinx, atau mencari di pasar barang bekas, penulis membeli board FPGA akselerator Alibaba Cloud di Ebay seharga 200 dolar
- Board yang dibeli sama sekali tidak memiliki dukungan dokumentasi dan belum diketahui apakah berfungsi normal, tetapi ada daya tarik tersendiri untuk mengutak-atik board Kintex UltraScale+ dengan harga murah
Tantangan debugger
- Menurut dokumen UG908 dari Xilinx, cara umum adalah mengonfigurasi/debug FPGA dengan probe JTAG yang direkomendasikan, tetapi penulis mencoba alternatif open-source (seperti OpenOCD) alih-alih probe resmi yang mahal
- Dengan mengorbankan toolchain resmi Xilinx (seperti ILA), dimungkinkan untuk mengembangkan logika debugging sendiri berbasis register JTAG USER
- OpenOCD terutama digunakan untuk ARM/RISC-V, tetapi juga bisa dimanfaatkan untuk FPGA berkat dukungan probe yang luas, kontrol detail atas operasi JTAG, dan dukungan format SVF
- Dokumentasi terkait dukungan seri UltraScale+ memang minim, tetapi standar JTAG dan SVF serta struktur pemindaiannya tetap berlaku
Rencana keseluruhan
- Ini adalah rencana eksperimen bertahap untuk mengonfigurasi board FPGA bekas murah dari Ebay dengan probe open-source/tidak resmi tanpa dukungan resmi (OpenOCD, JLink, dsb.) dan memanfaatkannya sebagai platform pengembangan
- Tiap tahap berjalan dari verifikasi bahwa perangkat board berfungsi → menghubungkan debugger JTAG → mencari pinout → mentransfer bitstream
Tahap 1 - Memastikan board berfungsi normal
- Jika memori Flash belum terhapus, keberfungsian awal dapat dicek melalui bitstream pengguna sebelumnya, misalnya dengan mengidentifikasi endpoint PCIe atau memeriksa ada tidaknya sinyal Ethernet dari PHY SFP
Tahap 2 - Menghubungkan debugger JTAG
- Perlu mengetahui lokasi pin antarmuka JTAG, jumlah perangkat yang terhubung, serta kondisi daisy chain
- Pemantauan suhu/tegangan secara real time melalui register sistem JTAG FPGA (terutama SYSMON) juga dapat dimanfaatkan, dan dukungan openOCD di area ini diharapkan bisa diperluas
Tahap 3 - Menentukan susunan pin (pinout)
- Diperlukan analisis rangkaian fisik untuk mengetahui jenis/frekuensi/sambungan pin sumber clock eksternal, serta informasi transceiver yang terhubung ke SFP dan PCIe
Tahap 4 - Menulis bitstream
- Rencananya menggunakan konfigurasi sementara melalui JTAG (bypass Flash), driver openOCD virtex2 + pld, atau pemutaran ulang SVF yang dihasilkan dari Vivado
- Alur penuh otomatisasi konversi Vivado → SVF juga direncanakan
Penerimaan board dan pengujian awal
- Penulis menerima board FPGA Kintex UltraScale+ (XCKU3P-FFVB676) bekas akselerator Alibaba Cloud beserta transceiver Huawei SFP28 25G, kabel patch OS2, dan aksesori lain
- Board tampak cukup bekas dipakai, tetapi kelengkapan serta kondisi PCIe/SFP masih baik
Pemeriksaan daya mandiri
- Dengan adaptor PCIe-USB, daya disuntikkan secara sederhana lalu keberadaan daya diperiksa secara awal melalui LED dan panas pada hardware
Eksperimen antarmuka PCIe
- FPGA (Gen3.0, mendukung x8) diuji menggunakan antarmuka eksternal PCIe Gen2.0 x1 milik Raspberry Pi 5, dan diharapkan tetap dikenali berkat kompatibilitas mundur
- Dari log
dmesgLinux, board dikenali sebagai PCIe Bridge dan endpoint (tipe Ethernet); vendor/device id yang ditentukan secara khusus membantu menghindari konflik dengan OS - Dengan perintah
lspci -vvv, status seluruh perangkat PCIe diperiksa: board ini tercatat mendukung Gen3.0 x8, tetapi saat benar-benar dihubungkan ke Pi, bandwidth/kecepatan turun ke Gen2.0 x1 (karena batasan Bridge dan keterbatasan koneksi fisik sebenarnya) - Dari sini dipastikan bahwa antarmuka PCIe board FPGA berfungsi normal
Antarmuka JTAG
- FPGA Xilinx dapat memperbarui/memuat Internal CMOS Configuration Latch (CCL) berbasis SRAM melalui JTAG
- Antarmuka JTAG pada board fisik terdiri dari 4 jalur standar (TCK/TMS/TDI/TDO) beserta sinyal daya/ground; reset dapat diimplementasikan melalui FSM Xilinx
- Susunan pin nyata berbeda dari standar sehingga diperlukan pengkabelan terpisah
Memanfaatkan Segger JLink
- Dalam kondisi tidak memiliki programmer JTAG resmi AMD, penulis menggunakan Segger JLink bersama OpenOCD
- Karena JTAG dapat dikonfigurasi hanya dengan 4 GPIO, pendekatan ini cocok untuk eksperimen improvisasi
- Disediakan diagram pengkabelan antara JLink → board FPGA, dan dengan mempertimbangkan jumper breadboard serta potensi delay sinyal yang panjang, kecepatan TCK (clock) dibatasi ke 1–10MHz
Lingkungan OpenOCD
- OpenOCD adalah debugger on-chip open-source yang mendukung beragam probe/board
- Dukungan terhadap format SVF standar (terintegrasi dengan Vivado), serta keterbukaan rangkaiannya, memudahkan analisis/patch mandiri saat muncul masalah
- Penulis membangun dan menggunakan OpenOCD terbaru (0.12.0+dev) beserta pustaka JLink secara mandiri
Verifikasi JTAG Scan Chain dan pengecekan IDCODE
- Dalam kondisi skematik board tidak diketahui, fitur pemindaian otomatis OpenOCD digunakan untuk menelusuri perangkat/IDCODE dalam JTAG chain
- Dipastikan bahwa board ini cocok dengan IDCODE milik Xilinx KU3P (0x04a63093)
- Dengan menentukan panjang IR (instruction register length 6 bit) secara manual, deteksi normal juga berhasil dilakukan
- Pada akhirnya, susunan JTAG scan chain board berhasil dipetakan
Monitor sistem SYSMON
- Pada generasi lama Xilinx digunakan XADC, sedangkan lini UltraScale+ memiliki fungsi pengukuran suhu/tegangan bawaan SYSMON4
- Secara default, openOCD belum mendukung integrasi JTAG untuk SYSMON sehingga perlu ditambahkan sendiri
- Dengan mengirim perintah SYSMON (DRP) dan memanfaatkan register status, kemampuan untuk memeriksa suhu/tegangan secara real time juga dapat diretas melalui skrip
Melalui rangkaian proses di atas, penulis mencatat pengalaman membangun dasar debugging dan pemanfaatan board akselerator FPGA Alibaba Cloud lama tanpa dukungan resmi—meliputi antarmuka PCIe/JTAG dan pemantauan sistem—dengan biaya murah dan hanya menggunakan alat open-source.
1 komentar
Komentar Hacker News
Saya pernah menguji antarmuka PCIe pada board Lattice Certus-Pro NX "Versa" dengan Raspberry-PI V, dan rasanya sangat praktis Raspberry-PI V cukup cepat untuk menjalankan perangkat lunak desktop modern (bahkan Microsoft Teams!) Saya bisa mendemokan desain FPGA secara live dan membagikan layar desktop saat conference call Satu-satunya kekurangan adalah dokumentasi SoC Broadcom yang minim Intel, di sisi lain, memberi semua dokumentasi chip jika lewat NDA, sehingga saya bisa membuat lingkungan FPGA PCIe yang keren di Xeon Ivy Bridge Dengan menyimpan register konfigurasi PCI, lalu mengonfigurasi ulang FPGA dan memprogram kembali register tersebut, chip bisa muncul di bus tanpa perlu reboot server atau re-enumerate, yang sangat nyaman Kuncinya adalah sementara mengatur bit root complex saat reconfiguration untuk menonaktifkan deteksi error PCIe (Waktu itu saya memakai Altera Stratix-IIgx) Sepertinya ada cara lain juga, jadi saya tinggalkan referensinya: tautan Stack Overflow Secara keseluruhan, kalau dokumentasinya bagus, pelaporan error dalam proses startup PCIe sangat berguna
Jika Anda punya adaptor FT2232H (atau jika belum, saya sarankan beli satu), adaptor ini bisa di-flash agar mudah kompatibel dengan Vivado Referensi: panduan Vivado FTDI Device Programming
Di perusahaan kami, FT2232H selalu tersedia 20-30 unit sebagai stok Sangat berguna karena mendukung berbagai protokol seperti GPIO, I2C, SPI, parallel FIFO, dan lainnya Dan library Python pyFTDI sangat bagus
Saya punya adaptor ini sisa dari proyek lain, tapi belum pernah mengerjakan FPGA Saya penasaran apa arti sebenarnya dari kompatibel dengan Vivado Apakah itu berarti bisa melakukan konfigurasi FPGA AMD, atau ada arti lain?
Ini mengingatkan saya pada kasus inovatif Alibaba di bidang database, yang menangani LSM compaction dengan cluster FPGA melalui custom MySQL storage engine Referensi: PDF paper terkait Dibanding RocksDB, throughput dan latensinya meningkat drastis, bahkan naik satu tingkat pada beberapa beban kerja Teknologi ini sempat ditawarkan sebagai layanan, tetapi akhirnya ditarik Saya tidak tahu apakah mereka masih memakainya secara internal, tetapi saya tetap terkejut bahwa hampir tidak ada tempat yang memanfaatkan akselerasi hardware untuk pekerjaan database yang repetitif
Jika tertarik pada FPGA PCIe atau kartu PCI, ada cukup banyak board Gidel bekas juga Ada berbagai seri seperti ProcSpark/ProcStar Perangkat lunak resminya proprietary, dan karena ada beberapa FPGA, untuk langsung memakainya di Quartus Anda perlu mencari pinout-nya dulu Saya sempat mendapatkan satu board dengan Stratix IV raksasa terpasang Board Kintel UltraScale+ benar-benar menggoda, jadi tulisan ini sangat mengesankan bagi saya
Jika Anda berada di Tiongkok, produk yang sama dijual di idlefish seharga 480 yuan (sekitar 68 dolar) Murahnya nyaris sulit dipercaya, jadi saya berniat mencobanya sendiri
Saya belum tahu apakah informasi pinout untuk konektor SFP di bagian belakang sudah ditemukan Jika bagian ini terdokumentasi dan jalur PCI-e juga bisa dipastikan, rasanya akan menyenangkan mencoba membuat peralatan jaringan optik kustom dengannya Transceiver SFP hanya meneruskan sinyal dari input ke output, jadi ini juga memungkinkan pembuatan perangkat sinyal optik kustom yang menarik, baik untuk backplane PCIe maupun secara mandiri
Apakah ada yang tahu contoh implementasi jaringan saraf atau arsitektur connectionist lain dengan FPGA? Salah satu hal paling menarik dari FPGA adalah chip "kustom" masih bisa dijangkau oleh universitas maupun individu Di saat AI sangat terpusat pada LLM, saya rasa ada peluang bagi kelompok kecil/individu untuk bereksperimen dengan pendekatan kecerdasan buatan bottom-up yang lebih berorientasi pada hewan menggunakan FPGA
Di FNAL, jaringan saraf berbasis FPGA dipakai untuk inferensi pada hasil eksperimen fisika energi tinggi LHC/CMS Ada juga kasus untuk mengendalikan sistem dinamis pada skala mikrodetik Beberapa referensi: HLS4ML PDF presentasi CERN IRIS-HEP Whitepaper Deploying tinyML on FPGAs PDF contoh NeurIPS ML4PhysicalSciences
Saya penasaran apakah yang dimaksud dengan "implementasi jaringan saraf dengan FPGA" adalah inferensi sebagai akselerator hardware, atau benar-benar mensintesis keseluruhan jaringan (termasuk bobotnya) langsung ke arsitektur FPGA Dalam kedua kasus itu, FPGA tidak benar-benar bisa mengimplementasikan logika yang sepenuhnya arbitrer; strukturnya tetap memanfaatkan blok terbatas hasil sintesis perangkat lunak Untuk kasus seperti LLM yang membutuhkan memori besar dan bandwidth tinggi, FPGA tidak cocok Memang bisa menghubungkan memori berkecepatan tinggi ke FPGA, tetapi untuk use case itu GPU masa kini jauh lebih unggul
Coba lihat differentiable logic gate networks, cukup menarik
Paper referensi: arXiv:2404.10076
Saya penasaran kenapa downvote-nya banyak Sepemahaman saya, AI membutuhkan banyak RAM dan RAM yang cepat untuk modelnya, jadi FPGA kurang cocok FPGA memang punya pin untuk menghubungkan RAM cepat, tetapi desain board dan jalur lapisannya menjadi sangat rumit Karena itu kartu grafis jauh lebih cocok
Melihat demam AI ini, secara pribadi saya berpikir begini
Masih ada banyak stok di eBay tautan eBay Sepertinya GPIO tidak dikeluarkan lewat header atau semacamnya; kalau ada ide proyek yang cocok dipakai, mohon rekomendasinya
Saya terkesan dengan kalimat "board-nya datang dengan travel case" Saya penasaran kenapa begitu, apakah board ini sering dicabut dari data center lalu dipindahkan? Atau apakah penjual eBay yang memasukkannya sebagai pelindung?