RISCBoy 開源可攜式 RISC‑V 遊戲主機概覽
RISCBoy 開源可攜式 RISC‑V 遊戲主機概覽
RISCBoy 在單一低成本 FPGA 上提供完整的手持遊戲主機
RISCBoy 是一款完全開源的可攜式遊戲主機,於 iCE40‑HX8k FPGA 上實作自訂的 RISC‑V CPU、光柵圖形管線與完整的週邊基礎設施,證明 32 位元遊戲系統可以容納於小巧且負擔得起的裝置中。
核心架構:RISC‑V CPU、匯流排結構與圖形
RISCBoy 整合了相容 RV32IMC 的處理器,通過官方 RISC‑V 相容性測試套件與形式驗證檢查。 CPU 包含 M‑mode CSR、例外處理與向量化中斷擴充,為遊戲軟體提供堅實的基礎。
系統匯流排為 AHB‑lite 交叉開關,配有 APB 週邊(UART、GPIO、SPI、PWM 等),可在 CPU、記憶體控制器與自訂圖形單元之間實現高效通訊。
圖形管線是一個基於掃描線緩衝區的光柵引擎,驅動顯示控制器,詳情請參閱專案的 PDF 文件。此設計仿效經典的 Game Boy Advance 呈現方式,但全部以可合成的 Verilog 2005 實作。
FPGA 目標:iCE40‑HX8k 限制與工具鏈
整個主機可容納於 Lattice iCE40‑HX8k FPGA(7680 個邏輯元件)內。 為達成此密度,需要仔細的 RTL 設計與資源感知的編碼實踐。
開源工具鏈: 合成使用 Yosys,布局與布線使用 nextpnr,位元流產生依賴 Project Icestorm。這些工具可在 Linux 上執行,甚至能在 Raspberry Pi 上編譯。
其他 FPGA 支援: 亦提供針對 Lattice ECP5(LEF5UM5G‑85F‑EVN)的實驗性建置,將外部 512 KiB SRAM 換成內部 256 KiB 32 位元同步記憶體。
軟體堆疊:RV32IMC 工具鏈與測試套件
RV32IMC GNU 工具鏈: 本專案提供建置自訂 RISC‑V GNU 工具鏈的說明,已針對 RV32IMC ISA(--with-arch=rv32imc、--with-abi=ilp32)進行設定。multilib 設定會產生所有支援 ISA 變體的標準函式庫,避免編譯出的二進位檔與處理器配置不匹配。
測試: 倉庫內含 HDL 級回歸測試與在模擬器上執行的軟體測試。模擬流程使用 Xilinx ISIM 14.x 在 Linux 上執行,scripts/ 目錄內提供 Makefile。完成子模組初始化後,可透過 ./runtests 執行測試。
PCB 設計與製造
KiCad PCB 版圖: RISCBoy Rev A 板為 5 × 5 cm、4 層設計,兼容 iTead 的原型服務(約 $65 可製作 10 塊板)。原理圖以 PDF 形式提供(board/fpgaboy.pdf)。
未來版次: Rev B 仍在等待閘道韌體與開機載入程式成熟,開發者目前的硬體類似 Snowflake FPGA 板。
倉庫結構(方便導覽)
board/– 主 PCB 與輔助板的 KiCad 檔案。doc/– LaTeX 原始檔與 PDF 文件,包含詳細系統架構圖。hdl/– Verilog RTL:busfabric/– AHB‑lite 交叉開關與 APB 週邊。graphics/– 像素處理單元。hazard5/– 獨立的 RV32IMC 核心。mem/– 記憶體控制器與模型。peris/– 小型週邊(UART、SPI、PWM)。riscboy_core/– 所有元件的頂層整合。riscboy_fpga/– 針對不同 FPGA 目標的板級封裝。
synth/– 完整系統合成的 Makefile 與限制檔案。test/– Verilog 測試平台與軟體測試案例。software/– 用於系統層測試的 C 檔集合。
社群回響與重要提及
「這是一台來自平行宇宙的 Gameboy Advance,該宇宙在 2001 年已經有 RISC‑V。對童年手持主機的情書,也是對驅動它們的技術的凌晨三點醉酒訊息。」 – 專案說明。
「哦,這是 Luke Wren 的作品。他是 Raspberry Pi 的 ASIC 設計工程師。驚人的專案,我很喜歡!」 – HN 評論,突顯作者資歷。
「PDF 中描述的可程式化掃描線緩衝區渲染管線,對此類愛好者而言值得一讀。」 – HN 評論,讚揚圖形設計。
「此設計已在 first wafer.space 版次中送片,但我尚未得知是否成功運作。」 – HN 評論,提到矽片原型嘗試。
入門指南:克隆、建置與合成
# Clone with submodules
git clone --recursive https://github.com/Wren6991/RISCBoy.git riscboy
# Build the RV32IMC toolchain (Ubuntu 20.04 example)
sudo apt install -y autoconf automake autotools-dev curl python3 \
libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex \
texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
cd /tmp
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
./configure --prefix=/opt/riscv \
--with-arch=rv32imc --with-abi=ilp32 \
--with-multilib-generator="rv32i-ilp32--;rv32ic-ilp32--;rv32im-ilp32--;rv32imc-ilp32--"
sudo mkdir /opt/riscv && sudo chown $(whoami) /opt/riscv
make -j$(nproc)
# Synthesize for HX8k evaluation board
. sourceme
cd synth
make -f HX8k-EVN.mk bit
為何 RISCBoy 重要
RISCBoy 證明了只需開源硬體、一般的 FPGA 與免費的工具鏈,就能實現功能完整的 32 位元手持遊戲系統。它提供了從矽層 RTL 到 PCB 版圖的完整參考設計,讓業餘愛好者、教育工作者與研究人員能在無專有限制的情況下探索基於 RISC‑V 的遊戲主機架構。