
2026/07/12 6:58
ゼロから設計されたオープンソースの携帯型ゲーム機「RISCBoy」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
RISCBoy は、RISC-V 互換 CPU とラスタグラフィックスパイプラインを从头設計されたオープンソースの携帯用ゲームコンソールです。その主要な成果は、合成可能な Verilog 2005 で記述され、完全に検証されたプロセッサ設計であり、Lattice iCE40-HX8k(7680 ロジック要素を使用、LUT4 ベース)などの特定 FPGA ハードウェアをターゲットとしています。プロジェクトは RV32IMC インスピーションセットに厳密に従い、M モード制御レジスタ、例外処理、ベクトored 外部割り込み向けの準拠拡張機能といった本質的な機能を実装することで、アーキテクチャ準拠の他、riscv-formal サイスイツを使用して厳格な形式的検証も実施しています。完全なソースコードは
git clone --recursive https://github.com/Wren6991/RISCBoy.git で入手可能で、サブモジュールが必要な場合は手動での更新が必要です。開発には RV32IMC ツールチェーン(./configure --with-arch=rv32imc で構築)と Xilinx ISIM 14.x(Linux 専用)によるシミュレーション、そして scripts/ フォルダ内の makefile を使用します。合成にはオープンソースのツールチェーンが使用され、Yosys が合成、nextpnr が配置・配線、Project Icestorm がビットストリーム生成を担当し、Lattice HX8k 評価ボード(HX8k-EVN.mk)や実験的な ECP5 サポート(ECP5-EVN.mk)などのターゲットをサポートしています。hdl ディレクトリにはバスファブ、グラフィックスユニット、hazard5 プロセッサコアの Verilog ソースが含まれており、test ディレクトリには Verilog テストベンチとソフトウェアケースを含む回帰テストが格納されています。現在、量産は iTead の 4 レイヤープロトタイピングサービスを活用し、10 ユニットを $65 で提供する Rev A PCB から開始されており、これらツールの合成と配線に使用されています。新たな Rev B PCB がゲートウェアの成熟に合わせて待機しています。この進化は、高レベルのソフトウェア開発と低レベルのハードウェアアーキテクチャを橋渡しする完全にカスタマイズ可能なプラットフォームを求める愛好家やエンジニアにとって意義のあるステップであり、現代のオープンソースコンピューティングエコシステムへの具体的な一瞥を提供しています。本文
RISCBoy: オープンソース・ポータブルゲーム用コンソール
RISCBoy は、ゼロから設計されたオープンソースのポータブルゲーム用コンソールプロジェクトです。これは 2001 年に RISC-V が存在したと仮定する平行宇宙から来た「GameBoy Advance」に例えられ、ハンドヘルドコンソールへの愛の手紙および技術への熱いメッセージとしての側面を持っています。
プロジェクト概要
RISCBoy は iCE40-HX8k FPGA をターゲットとして設計されており、シネサジラブルな Verilog 2005 で記述されています。
- 主要構成要素
- RISC-V 互換のプロセッサ
- ラスタグラフィックパイプラインおよびディスプレイコントローラ
- チップインフラストラクチャ(バスファブリック、メモリコントローラ、UART、GPIO など)
- KiCad で作成された PCB データレイアウト
- 設計の背景
- HX8k は LUT4 ベースの FPGA であり、論理素子 7680 を有します。32 ビットゲームコンソールを実装するには高負荷な設計となるため、非常に注意深い設計が必要です。
- かつてオープンソース・IceStorm ツールチェーンで最大のターゲットとして扱われていましたが、現在はより高度な用途へ移行しています。
ハードウェア仕様と検証
- プロセッサ規格
- RV32IMC インSTRUCTION SET (命令セット) サポート
- RISC-V 準拠スイートおよび
検証スイートのパス済みriscv-formal - 独自による形式検証プロパティチェックの実施可能(命令フロントエンドの整合性、バス準拠など)
- M モード CSRs、例外処理、ベクトル型外部中断用の簡単な準拠拡張機能サポート
複製 (Cloning)
本リポジトリは HDL およびテストのためにサブモジュールを使用しています。以下のいずれかの方法でcloneしてください。
# リポジトリ全体をクローン(推奨) git clone --recursive https://github.com/Wren6991/RISCBoy.git riscboy # または、別名指定の場合 git clone https://github.com/Wren6991/RISCBoy.git riscboy cd riscboy git submodule update --init --recursive
※注意点: プロセッサのスタンドアロンテストを実行するには、再帰的サブモジュール更新が必要です。RISCBoy ゲートウェアビルドには不要です。
ツールチェーン構築 (RV32IMC)
ソフトウェアベースのテストのコンパイルには RV32IMC ツールチェーン が必須です。RISC-V GNU ツールチェーン GitHub の指示に従い、以下の手順で設定してください(Ubuntu 20.04 を想定)。
# 依存関係のインストール 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 # 【重要】--with-multilib-generator の設定を変更してください ./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)
⚠️ 警告: RISCBoy は高性能な RV32IMC バージョンを想定しています。軽量な RV32I バリエーションでコンパイルされた実行ファイルを、RV32I 専用プロセッサ上で動作させると最悪の事態を引き起こします。ツールチェーンビルドスクリプトに
を指定して、必要な ISA バリエーション用の標準ライブラリを生成してください。--with-multilib
- 小容量 FPGA (例: iCE40 UP5k)
- 軽量な RV32I バリエーションを使用するように構成可能です。
- コンパイラはあらゆる ISA をサポートしますが、標準ライブラリの生成設定も重要です。
シミュレーション
シミュレーションフローは Xilinx ISIM 14.x で駆動され、マクロファイルは
scripts/ フォルダに格納されています(Linux バージョンの ISIM 用)。
テスト実行前には、別途 RISC-V 準拠スイートをチェックアウトする必要があります。
$ git submodule update --init --recursive
準備が完了したら、以下のコマンドを実行します。
. sourceme cd test ./runtests
- 全テスト実行:
はすべての HDL レベルのテストを実行します。runtests - ソフトウェアテスト用: RV32IC ツールチェーンが必要です。
- カスタムパス設定: ISIM がデフォルト以外の場所にある場合、
のパスを調整してください。sourceme - 特定のテスト実行 (GUI): 直接的にマクロファイルを起動します。
cd system make TEST=helloworld gui
PCB デザイン
画像に示されているのは Rev A の PCB です。以下の仕様を満たしています。
- 基板サービス: iTead の 4 レヤー製、5x5 センチメートルのプロトタイピングサービス(10 ブードで約 $65)互換
- 回路図: スキーマを確認 (PDF)
- 将来計画: Rev B は外観が大きく異なります。ゲートウェアとブートローダーの成熟を待って展開予定。現在の開発ハードウェアは「スノーフルー FPGA ボード」に似ています。
シンセシス (Synthesis)
iCE40 向けのオープンソース FPGA ツールチェーンを使用します。Linux 上で構築済み(Windows では未試行、Raspberry Pi で可能)。
ビルド手順
既存のマクロファイルを使用して画像を生成するには、ツールチェーン構築後以下のコマンドを実行します。
Lattice HX8k イバルジュエーションボード向け:
. sourceme cd synth make -f HX8k-EVN.mk bit
Lattice ECP5 向け (実験的サポート): 開発プラットフォームではないものの、ECP5_EVB イバルジュエーションボード用ファイルも用意されています。
make -f ECP5-EVN.mk BUILD=full bit
仕様変更: このビルドでは、RISCBoy の外部 512 KiB (16 ビット SRAM) を、ECP5 システムメモリのブロックから構築された内部 256 KiB (32 ビット同期メモリ) に置き換えます。
ディレクトリ構造
- board: メイン RISCBoy PCB および開発用小型ボードの KiCad ファイル
- doc: LaTeX ソース、図面、最新の PDF ビルド物
- hdl: RISCBoy ゲートウェア Verilog ソース
: AHB-lite クロスバーおよび APB ペリフェラルファブリックbusfabric
: ピクセル処理ユニットソースgraphics
: 完全に自己完結型の RISC-V プロセッサソースhazard5
: メモリコントローラ、推論/インジェクションラッパー、モデルmem
: UART、SPI、PWM などの小型ペリフェラルperis
: 構成要素をインスタンス化・接続するための構造モジュールriscboy_core
: FPGA およびボード向けトップレベルラッパー(IO、クロック、リセット制御)riscboy_fpga
- reference: 使用される標準の PDF(例:RISC-V Instruction Set)
- scripts: 管理上の「ゴミ」フォルダ
- software: システムレベルテスト用 C ファイルコレクション(実用的なツリーではない)
- synth: シンセシス作業ディレクトリ、トップレベルマクロファイル、ピン制約ファイル
- test: リグレッションテスト
- Verilog テストベンチ
- プロセッサまたは全体システム上のソフトウェアテストケース