RISCBoy 오픈소스 휴대용 RISC‑V 게임 콘솔 개요
RISCBoy 오픈소스 휴대용 RISC‑V 게임 콘솔 개요
RISCBoy는 단일 저비용 FPGA에 완전한 핸드헬드 게임 콘솔을 구현합니다
RISCBoy는 완전히 오픈소스인 휴대용 게임 콘솔로, 맞춤형 RISC‑V CPU, 래스터 그래픽 파이프라인, 그리고 전체 주변 장치 인프라를 iCE40‑HX8k FPGA에 구현하여 32‑비트 게임 시스템이 작고 저렴한 장치에 들어갈 수 있음을 증명합니다.
핵심 아키텍처: RISC‑V CPU, 버스 패브릭 및 그래픽
RISCBoy는 공식 RISC‑V 호환성 테스트와 형식 검증을 통과한 RV32IMC‑호환 프로세서를 통합합니다. CPU는 M‑mode CSR, 예외 처리 및 벡터형 인터럽트 확장을 포함하여 게임 소프트웨어를 위한 견고한 기반을 제공합니다.
시스템 버스는 APB 주변 장치(UART, GPIO, SPI, PWM 등)를 갖춘 AHB‑lite 크로스바이며, CPU, 메모리 컨트롤러 및 맞춤형 그래픽 유닛 간의 효율적인 통신을 가능하게 합니다.
그래픽 파이프라인은 스캔라인‑버퍼 기반 래스터 엔진으로, 프로젝트 PDF 문서에 설명된 대로 디스플레이 컨트롤러를 구동합니다. 이 설계는 클래식한 Game Boy Advance 렌더링 방식을 반영하지만 완전히 합성 가능한 Verilog 2005로 구현되었습니다.
FPGA 목표: iCE40‑HX8k 제약 및 툴체인
전체 콘솔이 Lattice iCE40‑HX8k FPGA(7680 로직 요소) 안에 들어갑니다. 이러한 밀도를 달성하려면 신중한 RTL 설계와 자원 인식 코딩 관행이 필요했습니다.
오픈소스 툴체인: 합성은 Yosys, 배치·배선은 nextpnr, 비트스트림 생성은 Project Icestorm을 사용합니다. 이 도구들은 Linux에서 실행되며 라즈베리 Pi에서도 빌드할 수 있습니다.
대체 FPGA 지원: 실험용 빌드는 Lattice ECP5(LEF5UM5G‑85F‑EVN)를 대상으로 하며, 외부 512 KiB SRAM을 내부 256 KiB 32‑비트 동기식 메모리로 교체합니다.
소프트웨어 스택: RV32IMC 툴체인 및 테스트 스위트
RV32IMC GNU 툴체인: 프로젝트는 RV32IMC ISA(‑‑with‑arch=rv32imc, ‑‑with‑abi=ilp32)용 맞춤형 RISC‑V GNU 툴체인을 빌드하는 방법을 제공하며, 멀티리브 설정을 통해 모든 지원 ISA 변형에 대한 표준 라이브러리를 생성해 컴파일된 바이너리와 프로세서 구성 간의 불일치를 방지합니다.
테스트: 저장소에는 HDL‑레벨 회귀 테스트와 시뮬레이터에서 실행되는 소프트웨어 테스트가 포함되어 있습니다. 시뮬레이션 흐름은 Linux에서 Xilinx ISIM 14.x를 사용하며, scripts/ 디렉터리의 메이크파일을 이용합니다. 서브모듈을 초기화한 뒤 ./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/– 전체 시스템 합성을 위한 메이크파일 및 제약 파일.test/– Verilog 테스트벤치와 소프트웨어 테스트 케이스.software/– 시스템‑레벨 테스트에 사용되는 C 파일 모음.
커뮤니티 반응 및 주요 언급
“2001년에 RISC‑V가 존재했던 평행 우주의 Gameboy Advance 같습니다. 어린 시절 핸드헬드 콘솔에 대한 러브레터이자, 그들을 구동하던 기술에 대한 새벽 3시 술에 취한 문자죠.” – 프로젝트 설명.
“오, 이건 Luke Wren의 작업이군요. 그는 Raspberry Pi에서 ASIC 설계 엔지니어로 일하고 있습니다. 놀라운 프로젝트, 정말 마음에 들어요!” – 작성자의 자격을 강조한 HN 댓글.
“PDF에 설명된 프로그래머블 스캔라인‑버퍼 기반 렌더링 파이프라인은 이런 것을 좋아하는 사람들에게 읽을 가치가 있습니다.” – 그래픽 설계를 찬양한 HN 댓글.
“디자인은 첫 번째 wafer.space 런에서 테이프아웃 되었지만 실제로 동작했는지는 아직 듣지 못했습니다.” – 실리콘 프로토타입 시도에 대한 HN 댓글.
시작하기: 클론, 빌드 및 합성
# 서브모듈과 함께 클론
git clone --recursive https://github.com/Wren6991/RISCBoy.git riscboy
# RV32IMC 툴체인 빌드 (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
./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)
# HX8k 평가 보드용 합성
. sourceme
cd synth
make -f HX8k-EVN.mk bit
RISCBoy가 중요한 이유
RISCBoy는 완전한 기능을 갖춘 32‑비트 핸드헬드 게임 시스템이 오픈소스 하드웨어, 소규모 FPGA, 그리고 자유롭게 이용 가능한 툴체인으로 구현될 수 있음을 보여줍니다. 실리콘‑레벨 RTL부터 PCB 레이아웃까지 완전한 레퍼런스 디자인을 제공함으로써, 취미 개발자, 교육자, 연구자들이 독점적인 제약 없이 RISC‑V 기반 게임 콘솔 아키텍처를 탐구할 수 있게 합니다.