简介
如标题所说,用Verilog实现一个完整的Game Boy。最初是PSU CMPEN275(数字设计实验)的课程设计,现在完全是自己做着玩了。
相关链接
项目目标
本项目最初的目标是在FPGA开发板上设计一个完整的Game Boy兼容系统,需要能够运行商业游戏。具体而言,需要拥有一个GB兼容的CPU,能够运行未经修改的Game Boy机器代码;拥有一个GB兼容的PPU,产生和原本GB一致的图像并输出到外部显示器;拥有一个GB兼容的PSG,能够产生和原本GB接近的音频并输出,最后需要能够通过手柄控制游戏。串口联机和红外通信不在本项目计划之内。
上述目标已于2018年4月达成。
当前目标为,设计一个独立的FPGA掌机,运行VerilogBoy的代码。掌机的名称就称为VerilogBoy Handheld。GameBoy Color支持和串口联机通信机能也在长期计划之内。
项目进展
第一版
第一版已于2018年4月设计完成,实现的部分包括:
- SM83兼容CPU
- PPU(像素FIFO结构)
- OAMDMA
- 定时器
- PSG
- MBC5支持
硬件相关支持见硬件支持部分。
第二版
第二版目前还在开发中。已经实现的部分包括:
- SM83兼容CPU(周期精准)
- PPU(像素FIFO结构)
- OAMDMA(周期精准)
- 定时器
- PSG
- MBC5支持
- 联机
硬件分支
本项目计划支持多种不同的FPGA目标平台,具体支持情况在以下列出。
Xilinx ML505
第一版的设计完全是在ML505上进行、完成的,也是第一版唯一支持的平台。
配置/移植信息
- FPGA:Xilinx Virtex-5 LX50T
- WRAM/VRAM:使用FPGA内置Block RAM实现
- 游戏ROM:使用板载NOR Flash实现
- 音频:通过板载AD1981B输出(3.5mm)
- 视频:通过板载CH7301B输出(VGA+DVI)
- 手柄:通过GPIO连接DualShock 2手柄
分支状态
第一版已经完整支持,相关外设驱动均已完成。未来会移植第二版代码。
VerilogBoy Handheld
VBH就是在开发的掌机了,目前还在设计和调试阶段。
结构框图
配置/移植信息
- FPGA:Xilinx Spartan-6 LX16
- WRAM/VRAM:使用FPGA内置Block RAM实现
- 游戏ROM:使用板载PSRAM实现
- 音频:通过板载WM8960输出(3.5mm+扬声器)
- 视频:通过板载TC358778转接DSI驱动液晶屏输出
- 手柄:GPIO按键阵列
分支状态
最后一版(0.2)PCB完成于2019年1月,下一版(0.3)计划为2019年7月。
以下为0.2版运行Tobu Tobu Girl的照片:
Pano Logic G1
性价比还挺不错的瘦客户机,用来当FPGA开发板玩。支持该平台可以让更多人玩到VerilogBoy,相关框架也算是贡献社区吧。
配置/移植信息
- FPGA:Xilinx Spartan-3E 1600
- WRAM/VRAM:使用FPGA内置Block RAM实现
- 游戏ROM:使用板载LPDDR实现
- 音频:通过板载WM8750BL输出(3.5mm+扬声器)
- 视频:通过板载THS8139输出(VGA)
- 手柄:通过ISP1760连接USB HID手柄
分支状态
VGA已完成(19年2月),DAC有现成代码还没具体研究,LPDDR控制器已经完成(19年2月),缓存控制器已完成(19年2月),USB核心完成(19年3月),USB手柄驱动完成(19年3月),USB存储驱动完成(19年3月),游戏可顺利运行(19年4月)。
以下是运行Tobu Tobu Girl的照片: