FPGA+ESP32 = GameBoy 是你的童年吗?

之前介绍的所有的复古游戏机都是基于Intel-Altera FPGA制作的,今天就带来一款基于AMD-Xilinx FPGA的复古掌上游戏机-Game Bub。

Game Bub是一款掌上游戏机,旨在畅玩 Game Boy、Game Boy Color 和 Game Boy Advance 游戏。与大多数现代掌上游戏机一样,它可以处理 ROM 文件。此外,它还可以使用卡带,这使得它成为一款功能与原始硬件非常相似的现代设备。

架构

整体架构由ESP32+FPGA组成,典型的CPU+FPGA架构,其中MCU 负责系统控制:它启动设备并管理 FPGA(电源和配置)。它还负责渲染 UI(将完成的帧发送到 FPGA 进行显示)。

FPGA 负责所有游戏模拟。它可以直接访问SD卡槽和连接端口,并配备专用内存(32 MB SDRAM,512 KiB SRAM)来辅助执行。它生成音频并通过 I2S 将其发送到 DAC,并且具有一个高带宽 18 位并行接口来连接显示器。

FPGA 还具有 4 个高速差分对,连接至 USB-C 接口。该接口与定制扩展坞配合使用,并处于特定于供应商的 alt 模式,用于输出 HDMI 音频和视频(直接从 FPGA 输出)。

MCU 和 FPGA 之间的高速 QSPI 链路(4 位,40 MHz,20 MB/秒)主要用于控制信号(指示 FPGA 播放或暂停)以及渲染 UI。FPGA 驱动显示屏,因此 MCU 必须通过 FPGA 发送其 UI。

此外,当使用模拟卡带时,MCU 会将 ROM 文件发送到 FPGA 以存储在 SDRAM 中,并定期发送 IMU 更新(以模拟带有加速度计或陀螺仪的卡带)。

启动后,MCU 从 microSD 卡(4 位 SDIO)加载 FPGA 比特流,启动 FPGA 并进行配置(使用 80 MHz 的单 SPI)。它会初始化显示屏和其他外设,并渲染初始 UI。

现代语言的敏捷开发

整个项目的开发分为MCU及FPGA开发,其中 MCU 固件是用 Rust 编写的,FPGA是由Chisel编写的,都属于现代对于各自领域的敏捷开发语言(MCU不是特别了解)。详细的文件及架构我还没研究,等后续再进行详细的展开。

开源的魅力

这个项目从底层硬件到上层固件全部开源,甚至作者把自己开发过程的想法都写成了blog分享出来,对于想进行类似项目开发的人员很有启发意义。

这里说一下此次项目的开源对后续该类项目的影响。复古游戏机的架构基本都是CPU+FPGA,而Altera FPGA系列之所以在这个领域占有率比较高的原因主要是第一版开源人员将CPU及FPGA的功能划分清楚,对于只会进行CPU或者FPGA开发的人员可以独立进行开发。而本次的架构我觉得可以继续深入下去,ESP32价格低廉,支持WIFI和蓝牙,减少一部分外设,符合现代掌机的特点,后续的其他复古游戏机也不会遥远。

演示视频

相关资料

核心库:

https://github.com/elipsitz/gamebub/tree/handheld

库里包含软硬件文档。

作者博客:

https://eli.lipsitz.net/posts/introducing-gamebub/

相关推荐
FPGA小迷弟21 小时前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1281 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light1 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072192 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理
XMAIPC_Robot2 天前
-40~85℃宽温实测:RK3588 机器人控制器硬件底座,长时间 SLAM 定位稳定性验证
人工智能·fpga开发·机器人·边缘计算·arm+fpga·rk3588+fpga
樱木花道長2 天前
AMD Ross 深度系列 8:FAQ 七问七答(文末附网盘链接)
人工智能·fpga开发
FPGA小迷弟2 天前
FPGA 与无人机:从飞控实时性到智能载荷的硬件加速实践
人工智能·ai·fpga开发·架构·无人机·ai编程
低慢小uav2 天前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
szxinmai主板定制专家2 天前
ARM+FPGA 数控机床控制器:选 CODESYS SoftMotion CNC,还是基于 LinuxCNC 自研搭建?架构、授权、实时性、量产风险深度对比
arm开发·fpga开发·codesys·数据采集卡·linuxcnc·rk3576
女神下凡2 天前
芯参谋(79):嵌入式学习进阶_(硬件与软件)深入实践指南
arm开发·单片机·嵌入式硬件·学习·fpga开发·设计规范