- RISCBoy adalah konsol game portabel yang dirancang sendiri mulai dari CPU kompatibel RISC-V, pipeline grafis, display controller, infrastruktur memori dan periferal, hingga PCB KiCad
- Menargetkan Game Boy Advance yang mungkin ada jika RISC-V sudah hadir pada 2001, dan mengimplementasikan konsol 32-bit pada FPGA iCE40-HX8k dengan 7.680 elemen logika, ditulis dalam Verilog 2005 yang dapat disintesis
- Prosesornya mendukung instruction set RV32IMC serta CSR M-mode, exception, dan vector external interrupt, serta lulus uji kesesuaian RISC-V dan verifikasi
riscv-formal
- Sintesis menggunakan toolchain open-source Yosys·nextpnr·Project Icestorm, serta mendukung board ECP5 dan konfigurasi RV32I untuk iCE40 UP5k yang lebih kecil
- Simulasi dan lingkungan pengembangan resmi terutama berbasis Linux, sementara PCB Rev B, bootloader·gateware, dan software tree masih dalam pengembangan
Konsol portabel yang dibangun dari nol
- Cakupan desain terbuka RISCBoy adalah sebagai berikut
- CPU kompatibel RISC-V
- Pipeline grafis raster dan display controller
- Infrastruktur chip seperti bus fabric, memory controller, UART, GPIO, dan lainnya
- Layout PCB yang dibuat dengan KiCad
- Tujuannya adalah Game Boy Advance di dunia paralel tempat RISC-V sudah ada pada 2001, dan proyek ini memuat kecintaan terhadap konsol portabel masa kecil serta teknologi yang menjalankannya
- Informasi desain yang lebih detail dapat dilihat di dokumen
doc/riscboy_doc.pdf dalam repositori
Implementasi FPGA dan prosesor
- Desain ditulis dalam Verilog 2005 yang dapat disintesis, dan disesuaikan untuk iCE40-HX8k, FPGA berbasis LUT4
- HX8k menyediakan 7.680 elemen logika
- Diperlukan desain yang cermat untuk memasukkan konsol game 32-bit ke dalam sumber daya yang terbatas
- HX8k pernah menjadi FPGA terbesar yang didukung oleh toolchain open-source Project Icestorm, dan ekosistem terkait kemudian berkembang ke Project Trellis dan Project X-Ray
- Prosesornya mendukung instruction set RV32IMC
- Lulus uji kesesuaian RISC-V untuk instruksi tersebut
- Lulus rangkaian verifikasi riscv-formal
- Juga menerapkan verifikasi properti formal internal yang memeriksa konsistensi instruction frontend dan kepatuhan bus dasar
- Mendukung CSR M-mode dan exception, serta menyediakan ekstensi sederhana yang patuh untuk vector external interrupt
Mengkloning repositori dan toolchain
- Karena Git submodule digunakan untuk HDL dan pengujian, repositori harus dikloning secara rekursif seperti berikut
git clone --recursive https://github.com/Wren6991/RISCBoy.git riscboy
- Setelah clone biasa, submodule dapat diinisialisasi secara terpisah
git clone https://github.com/Wren6991/RISCBoy.git riscboy
cd riscboy
git submodule update --init --recursive
- Pembaruan submodule rekursif diperlukan untuk pengujian standalone prosesor, tetapi tidak diperlukan untuk build gateware RISCBoy
- Untuk mengompilasi pengujian berbasis software, RISC-V GNU Toolchain harus dibangun dengan konfigurasi RV32IMC·ILP32
./configure --prefix=/opt/riscv \
--with-arch=rv32imc \
--with-abi=ilp32 \
--with-multilib-generator="rv32i-ilp32--;rv32ic-ilp32--;rv32im-ilp32--;rv32imc-ilp32--"
- Pada FPGA kecil seperti iCE40 UP5k, dapat digunakan varian prosesor RV32I yang lebih kecil sebagai pengganti RV32IMC berkinerja tinggi
- Walaupun compiler mendukung berbagai varian ISA RISCBoy, konfigurasi multilib diperlukan agar standard library yang sesuai untuk tiap varian dibuat
- Menjalankan file executable RV32I yang ditautkan ke standard library RV32IMC pada prosesor khusus RV32I akan menimbulkan masalah
Simulasi dan pengujian
- Alur simulasi menggunakan Xilinx ISIM 14.x dan Makefile di direktori
scripts/
- Hanya diuji pada ISIM versi Linux
- Jika ISIM terpasang di lokasi selain path default, path di
sourceme mungkin perlu disesuaikan
- Proses menjalankan pengujian level HDL adalah sebagai berikut
git submodule update --init --recursive
. sourceme
cd test
./runtests
- Pengujian software memerlukan toolchain RV32IC
- Untuk men-debug pengujian individual dalam lingkungan grafis, jalankan langsung Makefile terkait
cd system
make TEST=helloworld gui
Desain PCB
- PCB Rev A kompatibel dengan layanan prototyping 4-layer 5×5cm dari iTead
- Biaya pada saat README ditulis adalah 65 dolar AS untuk 10 board
- Skematik dapat dilihat di
board/fpgaboy.pdf dalam repositori
- Rev B diperkirakan akan berbentuk cukup berbeda dari Rev A, dan saat ini menunggu gateware dan bootloader menjadi lebih matang sebelum dilanjutkan
- Hardware pengembangan saat ini berbentuk mirip dengan Snowflake FPGA board
Sintesis dan board yang didukung
- Untuk sintesis FPGA iCE40, digunakan toolchain open-source berikut
- Tool tersebut hanya dibangun dan diverifikasi langsung di Linux; build Windows diketahui memungkinkan tetapi belum diuji
- Toolchain juga dapat dibangun di Raspberry Pi
- Image FPGA untuk board evaluasi Lattice HX8k dibuat dengan perintah berikut
. sourceme
cd synth
make -f HX8k-EVN.mk bit
- Dukungan ECP5 untuk board evaluasi Lattice LEF5UM5G-85F-EVN juga disediakan, tetapi ini merupakan konfigurasi yang sangat eksperimental dan bukan platform pengembangan utama
make -f ECP5-EVN.mk BUILD=full bit
- Build ECP5 mengganti SRAM eksternal 512KiB·16-bit pada hardware pengembangan dengan memori sinkron internal 256KiB·32-bit
- Memori ini dikonfigurasi oleh Trellis sebagai blok
sysmem ECP5
Struktur repositori
board: file KiCad untuk PCB utama RISCBoy dan board kecil yang digunakan selama pengembangan
doc: source LaTeX dokumen, diagram, dan PDF build terbaru
hdl: source Verilog untuk gateware RISCBoy
busfabric: crossbar AHB-lite dan fabric periferal APB
graphics: source unit pemrosesan piksel
hazard5: source prosesor RISC-V yang dikonfigurasi sepenuhnya secara independen
mem: memory controller serta wrapper dan model inferensi·injeksi memori
peris: periferal kecil seperti UART, SPI, PWM, dan lainnya
riscboy_core: modul struktur yang menginstansiasi dan menghubungkan komponen RISCBoy
riscboy_fpga: wrapper top-level yang menghubungkan I/O, clock, dan reset berbagai FPGA dan board
reference: PDF standar yang digunakan di RISCBoy, termasuk instruction set RISC-V
scripts: script yang tidak termasuk dalam direktori lain
software: kumpulan file C yang digunakan untuk pengujian level sistem, dan belum menjadi software tree yang praktis
synth: direktori kerja untuk sintesis sistem penuh, berisi Makefile top-level dan file constraint pin
test: kumpulan regression test yang mencakup testbench Verilog dan kasus pengujian software yang dijalankan dalam simulasi prosesor atau sistem penuh
1 komentar
Komentar Hacker News
Di halaman GitHub, perangkat ini diperkenalkan sebagai Game Boy Advance dari semesta paralel tempat RISC-V sudah ada pada 2001
Digambarkan sebagai surat cinta untuk konsol genggam masa kecil, sekaligus proyek yang terasa seperti pesan mabuk jam 3 pagi kepada teknologi yang menggerakkan konsol tersebut
Ini adalah karya Luke Wren, yang merupakan insinyur desain ASIC di Raspberry Pi. Proyek yang benar-benar keren
Pengembang ini juga merancang PicoDVI, yang mengimplementasikan DVI/HDMI dengan RP2040
https://github.com/Wren6991/PicoDVI
Hazard5yang awalnya dirancang untuk RISCBoyGBA dirancang dengan arsitektur tanpa cache. Selain RAM internal, VRAM, register I/O, BIOS, OAM, palet, dan sejenisnya, semua akses melewati bus eksternal; menggunakan bus eksternal tanpa cache praktis akan terasa selambat komputer era 1980-an. Kecepatan pengambilan instruksi dari kartrid juga hanya sekitar dua kali GBC
Untuk menghindarinya, cache harus digunakan untuk mengambil beberapa word secara berurutan. Jika kecepatan akses berurutan ditingkatkan, throughput akan naik, dan bila instruksi serta data cukup tercache, latensi bisa disembunyikan. Saya penasaran apakah sistem ini mengirim semua fetch ke bus memori, atau menggunakan cache
Desain ini telah tape-out pada proses produksi pertama wafer.space (lihat https://github.com/wafer-space/ws-run1), tetapi saya belum mendengar apakah benar-benar berfungsi dengan baik
Pipeline rendering berbasis buffer scanline yang dapat diprogram yang diperkenalkan di PDF layak dibaca jika tertarik pada teknologi seperti ini
Saya sangat menyukai proyek yang membayangkan dan membuat perangkat keras dari semesta paralel
Saya penasaran apakah hambatan terbesar saat mengadopsi arsitektur perangkat keras baru ini adalah teknologinya sendiri, atau justru ketiadaan ekosistem pengembang dan toolchain perangkat lunak yang sudah mapan
Kekurangan tool perangkat lunak masih bisa diatasi, tetapi ketiadaan pustaka game adalah hambatan yang lebih besar. Terutama jika tidak ada cara yang sangat mudah untuk mem-porting judul-judul yang sudah ada
Saya terkejut mengetahui bahwa di dalamnya boleh menggunakan implementasi AHB/APB open source. Saya kira itu teknologi eksklusif ARM, jadi selama ini tidak pernah mempelajarinya lebih dalam
Menurut saya pengembang proyek ini adalah salah satu insinyur terbaik di zaman kita. Ini saja sudah keren, tetapi ia juga merancang inti Hazard3 dan perangkat QSPI untuk RP2350
Khususnya perangkat QSPI itu adalah satu-satunya perangkat QSPI memory-mapped yang pernah saya temui yang tidak berhasil saya buat crash atau hang