fpga-based arcade emulation danny funk, cory mohling, tony milosch, david gartner, john alexander...
TRANSCRIPT
FPGA-Based Arcade
EmulationDanny Funk, Cory Mohling, Tony
Milosch, David Gartner, John Alexander
Advisor: Philip JonesClient: Joseph Zambreno
Project Goal• Goal
o Showcase the capabilities of reconfigurable computing platforms
CPU PPU
ROM Interface
System Control
Memory
I/O (Controllers) Audio Clock Generation
VGA
System Decomposition• Breakdown
o FPGA• CPU• PPU• Video output• Controller I/O• Boot loader • Audio
o Cabinet• Physical Controls
o Joysticko Buttons
• Monitor
System Design
• Controlso Electrical connections to physical controlso Write HDL Module to interface to FPGA
• Pin out on FPGA board
System Design
• Boot loadero Develop Boot loader using Microblaze Processor provided in
Xilinx tools
o Present user with easy to use game selection screen
o Write code to read NES Rom files from Compact Flash
o Parse NES Rom file and load contents into appropriate system memory for the FPGA
o Reset back to Boot loader screen when reset is pressed
System DesignFPGA (Xilinx)
Compact Flash Controller
I/O Interface TFT Controller(VGA Output)
Microblaze
CPU
NES CPU PPU CPU
Frame Buffer
BootloaderC Program
Compact FlashCard
NES Controller VGA Cable
System Design
• Cabineto Use Solid Works to design detailed cabinet drawingso Purchase custom marqueeso Build out of ¾” plywood
System Design
• Audioo Write audio module that generates audioo Connect audio module to CPUo Map all audio related instructions to the moduleo Connect audio module to AC97 to produce sound output
System Design
• PPUo Map CPU memory to PPU registers to allow for game scrollingo Implement Memory mappers to allow for more games to be
playedo PPU is implemented using at 14 stage finite state machine to
render each pixelo Each pixel is stored in a buffer that is then sent to the VGA
output
Test Plan• Test as we go
o After each step, make sure that the game plays as expected
• Simulateo Simulate incremental builds with ModelSim to ensure system
works as expected
• Final Testo Ensure all functional requirements are met, and debug as
necessary.
Current Status• Side Scrolling – 80%• Control Input – 80%• Boot Loader – 25%• Cabinet Design – 95%• Cabinet Construction – 0%• Audio – 0%