概要
- RISCBoy は、ゼロから設計された オープンソース携帯ゲーム機 プロジェクト
- RISC-V互換CPU や独自のグラフィックスパイプラインを搭載
- iCE40-HX8k FPGA 実装を想定、厳しいリソース制約下での設計
- RV32IMC命令セット 対応、公式準拠テストもパス
- KiCad設計のPCB や各種ツールチェーン構築方法も提供
RISCBoy概要
- RISCBoy は、2001年に RISC-V が存在した並行世界の Gameboy Advance をイメージした設計
- RISC-V互換CPU、ラスタグラフィックスパイプライン、ディスプレイコントローラ、バスファブリック、メモリコントローラ、UART、GPIOなどの 周辺回路 を内蔵
- KiCad で設計した PCBレイアウト を提供
- Verilog 2005 による合成可能なコードで記述、 iCE40-HX8k FPGA (7680ロジックエレメント)に収まるよう最適化
- Icestorm などのオープンソースFPGAツールチェーンに対応
CPUと命令セット
- RV32IMC命令セット (RISC-V 32bit整数+乗除算+圧縮命令)をサポート
- RISC-V公式コンプライアンススイート や riscv-formal検証スイート、独自の形式的プロパティチェックをパス
- M-mode CSRs、例外処理、外部割り込み向けの簡易ベクトル拡張機能を実装
リポジトリのクローン
- HDLおよびテスト用サブモジュール を利用
- 推奨コマンド:
git clone --recursive https://github.com/Wren6991/RISCBoy.git riscboy- または、通常clone後にサブモジュール初期化:
git submodule update --init --recursive
- 推奨コマンド:
- スタンドアロンテスト にはサブモジュールのリカーシブ更新が必須
- RISCBoyゲートウェアのビルド のみならサブモジュール更新は不要
RV32IMCツールチェーンの構築
- RV32IMCツールチェーン がソフトウェアテストのコンパイルに必要
- RISC-V GNU Toolchain のGitHub手順に従う
- Ubuntu 20.04用依存パッケージ:
sudo apt install -y autoconf automake autotools-dev curl python3 libmpc-dev ...
- クローン&ビルド例:
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain./configure --prefix=/opt/riscv --with-arch=rv32imc --with-abi=ilp32 --with-multilib-generator="rv32i-ilp32--;rv32ic-ilp32--;rv32im-ilp32--;rv32imc-ilp32--"make -j $(nproc)
- Ubuntu 20.04用依存パッケージ:
- 小型FPGA (例:iCE40 UP5k)では RV32Iバリアント にも対応
- 適切なISAバリアント 用標準ライブラリ生成が必須
- RV32Iプロセッサ上でRV32IMC標準ライブラリ実行は不可
シミュレーション
- Xilinx ISIM 14.x によるシミュレーションフロー
scripts/フォルダにMakefileを配置
- RISC-Vコンプライアンススイート のチェックアウトが必要
- テスト実行例:
. sourcemecd test./runtests
- ソフトウェアテスト には RV32ICツールチェーン が必要
- パス調整 や GUIデバッグ も可能:
cd systemmake TEST=helloworld gui
PCB設計
- Rev A PCB はiTeadの4層5x5cmプロトタイピングサービス対応
- 10枚で約$65
- 回路図 はPDFで公開
- Rev B は今後設計予定
- 現在の開発ハードウェアは Snowflake FPGAボード に類似
FPGA合成フロー
- iCE40用オープンソースツールチェーン を利用
- Yosys (合成)、 nextpnr (配置配線)、 Project Icestorm (ビットストリーム生成)
- Linux環境 での動作確認済み
- Raspberry Pi でのビルド実績あり
- 合成手順例:
. sourcemecd synthmake -f HX8k-EVN.mk bit(Lattice HX8k評価ボード用FPGAイメージ生成)
- ECP5向け実験的サポート
make -f ECP5-EVN.mk BUILD=full bit- 外部SRAM を 内部同期メモリ に置換
ディレクトリ構成
- board: KiCad設計ファイル(メインPCB・開発用小型ボード)
- doc: ドキュメント用LaTeXソース、図、最新PDF
- hdl: RISCBoyゲートウェアのVerilogソース
- busfabric: AHB-liteクロスバー、APBペリフェラル
- graphics: ピクセル処理ユニット
- hazard5: 完全自給自足型RISC-Vプロセッサ
- mem: メモリコントローラ、ラッパ・モデル
- peris: UART、SPI、PWMなどの小型ペリフェラル
- riscboy_core: RISCBoy構成要素の結線モジュール
- riscboy_fpga: 各種FPGA・ボード向けトップラッパ
- reference: RISCBoyで使用する標準PDF(例:RISC-V命令セット)
- scripts: その他スクリプト・Makefileなど
- software: システムテスト用Cファイル集(現状は本格的なソフトウェアツリーではない)
- synth: システム合成用ワーキングディレクトリ、上位Makefile、ピン制約ファイル
- test: 回帰テスト(Verilogテストベンチ、シミュレーション用ソフトウェアテストケースなど)
まとめ
- RISCBoy は、 RISC-Vアーキテクチャ と オープンソースFPGAツールチェーン を活用した、教育・研究・趣味向けの高度な 携帯ゲーム機設計プロジェクト
- ドキュメント や ソースコード、 PCB設計 まで一貫して公開
- FPGA開発やRISC-V学習、 独自ゲーム機開発 に最適なリファレンス設計