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 的遊戲主機架構。

Sources