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系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐3 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐3 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH4 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡4 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安4 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐5 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯5 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客5 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA5 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发