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/

相关推荐
碎碎思3 小时前
“邪修“FPGA[~秘笈]
fpga开发
不会留有遗憾5 小时前
【FPGA】VGA显示-贪吃蛇
fpga开发
9527华安1 天前
FPGA实现Aurora 64B66B数据回环传输,基于GTY高速收发器,提供4套工程源码和技术支持
fpga开发·aurora·高速收发器·gty·64b66b
嵌入式-老费1 天前
Zynq开发实践(FPGA之verilog仿真)
fpga开发
希言自然也3 天前
FPGA 时序分析(一)
fpga开发
I'm a winner3 天前
基于FPGA的情绪感知系统设计方案:心理健康监测应用(一)
fpga开发·前沿研究
嵌入式-老费3 天前
Zynq开发实践(Verilog、仿真、FPGA和芯片设计)
fpga开发
hahaha60164 天前
pcie实现虚拟串口
stm32·单片机·fpga开发
9527华安4 天前
FPGA高端项目:图像采集+Aurora 8B10B+UDP图传架构,基于GTH高速收发器的光口转网口,提供工程源码和技术支持
fpga开发·架构·udp·aurora·gth·高速收发器·aurora 8b10b
徐晓康的博客4 天前
Verilog功能模块--SPI主机和从机(03)--SPI从机设计思路与代码解析
fpga开发·verilog·主机·spi·从机