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/

相关推荐
LabVIEW开发6 小时前
LabVIEW与FPGA超声探伤
fpga开发·labview·labview功能
cycf8 小时前
FPGA设计中的数据存储
fpga开发
FPGA之旅1 天前
FPGA从零到一实现FOC(一)之PWM模块设计
fpga开发·dubbo
XMAIPC_Robot1 天前
基于ARM+FPGA的光栅尺精密位移加速度测试解决方案
arm开发·人工智能·fpga开发·自动化·边缘计算
cycf1 天前
状态机的设计
fpga开发
szxinmai主板定制专家2 天前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
千宇宙航2 天前
闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
fpga开发
千宇宙航2 天前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
小眼睛FPGA3 天前
【RK3568+PG2L50H开发板实验例程】FPGA部分/紫光同创 IP core 的使用及添加
科技·嵌入式硬件·ai·fpga开发·gpu算力
forgeda3 天前
如何将FPGA设计验证效率提升1000倍以上(2)
fpga开发·前沿技术·在线调试·硬件断点·时钟断点·事件断点