320 likes | 437 Views
FPGA-Based Arcade Emulation. Danny Funk, Cory Mohling , Tony Milosch , David Gartner, John Alexander Advisor: Philip Jones Client: Joseph Zambreno. Project Objective. Goal Showcase the capabilities of reconfigurable computing platforms Problem
E N D
FPGA-Based Arcade Emulation Danny Funk, Cory Mohling, Tony Milosch, David Gartner, John Alexander Advisor: Philip Jones Client: Joseph Zambreno
Project Objective • Goal • Showcase the capabilities of reconfigurable computing platforms • Problem • Continue 09/10 Senior Design team’s NES Emulation through FPGA • Create Arcade Machine that can be put on display
Conceptual Sketch Boot Loader Controls (I/O)
Functional Requirements FPGA • FR 1.1 – All NES specific emulation must be performed entirely in hardware. • FR 1.2 – Emulation must be contained within the FPGA Xilinx570X board.
Functional Requirements Emulator • FR 2.1 – Emulator must support the instruction set used by the original NES system. • FR 2.2 – Emulator must be able to run a NES ROM file from an outside source.
Functional Requirements I/O - Controls • FR 3.1.1 – Emulator must accept input from arcade style controls. • FR 3.1.2 – Emulator must accept input from NES controllers. • FR 3.1.3 – Emulator must respond to controller input with the same latency as the original NES. • FR 3.1.4 – Emulator must accept controls for up to two players.
Functional Requirements I/O – Video • FR 3.2.1 – System must be able to display images to a connected display. • FR 3.2.2 – System must output video to a screen at the original NES frame rate. • FR 3.2.3 – Emulator must use a color palette consistent with the original NES color palette. • FR 3.2.4 – Must be compatible with VGA Output.
Functional Requirements I/O – Audio • FR 3.3.1 – Emulator must generate background music for NES games. • FR 3.3.2 – Emulator must generate sound effects with the same latency as the original NES.
Functional Requirements Boot Loader • FR 4.1 – Must be able to display a selectable list of games to the connected display. • FR 4.2 – Must be able to load the selected ROM file to the emulator without modifying the FPGA.
Functional Requirements Cabinet • FR 5.1 – Cabinet must be able to support a 103 lb. monitor. • FR 5.2 – Cabinet must accept a standard 120 VAC source to power the system.
Non-Functional Requirements • NFR 1.1 – Emulator must be contained within a removable control box. • NFR 1.2 – All components of the emulator should be implemented as independent modules. • NFR 1.3 – The Cabinet should be sturdy enough to resist collapse under normal usage. • NFR 1.4 – The Cabinet should be able to fit through a 3’0” wide doorway. • NFR 1.5 – Users should be able to easily understand how to play a game without off-screen instructions.
Considerations • Constraints • System has to be designed around NES ROM files and NES instruction set • Only a limited amount of logic on FPGA board • Cabinet should be able to be moved from building to building on campus • Technology • Using new monitor technology with old NES • Interfacing with arcade controls
Market Survey • Another project currently exists (Veri NES). The source is not available. • Various software emulators are available and will help with understanding the NES. • Researched how similar arcade cabinets have been built. • Took measurements of button layouts from original arcade cabinets.
Risks and Mitigations • Unfamiliarity with FPGA coding and NES Architecture • Research with assistance of advisor • Audio may require CPU to be rewritten • Start early on Audio • Unforeseen extra design required • Start Early on FPGA work • Little experience with woodworking • Seek outside advice and make detailed blueprints
Cost Estimate Grand Total: $31099.40
System Decomposition Breakdown FPGA CPU PPU Video output Controller Input Boot loader Audio Cabinet Physical Controls Joystick Buttons Monitor
System Design • Controls • Develop an arcade style interface for the NES emulator • Create wire riggings for all the joysticks and buttons • Each button is mapped directly to the controller status register
System Design • Boot loader • Develop Boot loader using Microblaze Processor provided in Xilinx tools • Present user with easy to use game selection screen • Read NES Rom files from Compact Flash • Parse NES Rom file and load contents into appropriate system memory for the FPGA • Reset back to Boot loader screen when reset is pressed
System Design • Cabinet • Use Solid Works to design detailed cabinet drawings • Purchase custom marquees • Build out of ¾” plywood • Detachable Control Box • Coin Door • Hidden screw and nail holes
System Design • Audio • Write audio module that generates audio • Connect audio module to CPU • Map all audio related instructions from the CPU to the module • Connect audio module to AC97 to produce sound output • “A Implementation of the NES Audio Processing Unit” by CedomirSegulja and Bill Dai
System Design • PPU • Map CPU memory to PPU registers to allow for game scrolling • Implement Memory mappers to allow for more games to be played • PPU is implemented using a 14 stage finite state machine to render each pixel • Each pixel is stored in a buffer that is then sent to the VGA output
Test Plan • Test as we go • After each step, make sure that the game plays as expected • Simulate • Simulate incremental builds with ModelSim to ensure system works as expected • Final Test • Ensure all functional requirements are met, and debug as necessary.
Current Status • Side Scrolling – 80% • Control Input – 95% • Boot Loader – 40% • Cabinet Design – 100% • Cabinet Construction – 0% • Audio – 0%
Next Semester Plan • Start Construction of the Cabinet • Start implementing Audio • Complete implementation of boot Loader • Continue working on debugging current implementation so more games can run.