ABSTRACT The purpose of this project is to continue to perfect the Nintendo Entertainment System...

1
ABSTRACT The purpose of this project is to continue to perfect the Nintendo Entertainment System (NES) emulation on an FPGA that would showcase Iowa State University’s expertise in reconfigurable hardware. An authentic arcade cabinet was created to house the system to give it a visually appealing look. The demonstration of reconfigurable hardware technology can be used as a recruiting tool for potential students, and showcasing past students’ projects. DESIGN REQUIREMENTS Functional Requirements Emulator must support the instruction set used by the original NES System All NES-specific emulation must be performed entirely in hardware Physical interface shall support 2-player arcade style controls Graphical interface must allow for selection of all available games on compact flash card Boot loader must read ROM files and initialize emulator memories Cabinet must support 100lb monitor, and run on standard 120 VAC power Non-Functional Requirements All emulator components shall be implemented as individual modules Cabinet shall be safe for all age groups Users’ interaction with boot loader shall be understandable without additional help Cabinet shall be a vintage style arcade cabinet to house the system CONCLUSION The emulator turned out to be more work than expected, especially with getting the timing between the CPU and PPU to be correct. Despite these difficulties the emulator is now better documented and more robust, leaving it in a better position for future groups. For our final demonstration a NES emulator was ported to an embedded PowerPC processor on the FPGA. This was a slight deviation from our original idea, but was not a trivial task. The current implementation successfully meets our goals of displaying the power of FPGA technology. The boot loader has been implemented and allows for an easy to use interface for selecting games for the NES. The completed cabinet will provide years of demonstration capabilities for Iowa State University’s Computer Engineering Department. With a vast selection of games running on a large CRT monitor, it is easy to have many nostalgic memories. Tony Milosch (CprE) Cory Mohling(CprE) John Alexander (CprE) David Gartner (CprE) Team May1114 Danny Funk(CprE) Client/Advisor Joseph Zambreno Assistant Professor Electrical and Computer Engineering PROJECT RESOURCES Our budget was only used on the materials for the cabinet, and its construction. Most of our budget was spent on purchasing the best possible arcade monitor because it is the main focus point for the users. The FPGA board was provided by the department, and was not factored into the budget. Item Cost Cabinet $760.00 – Total Wheels $40.00 Speakers $20.00 Screws $10.00 Plywood $90.00 Marquee $20.00 Marquee Light $20.00 T-Molding $10.00 Paint/Primer $50.00 Monitor $500.00 Labor – 963.5hrs $19,270.00 Emulator Improved functionality of past group’s design Tweaked PPU and CPU clocks to more closely match the original NES Cleaned up existing code to make it more understandable for future projects TECHNICAL DETAILS Central Processing Unit (CPU) Open source 6502 processor reads instructions from the ROM files Decodes instructions and controls rest of system Picture Processing Unit (PPU) Responsible for rendering a 256x240 image Combines the color palettes, sprites, and background Boot Loader C code written to run on MicroBlaze processor Program displays metadata from compact flash card Graphical interface allows user to select desired game from list Loads game data from ROM files into emulator memories Cabinet ¾” cabinet grade plywood used for economical strength and durability Kreg Joints hide screws without compromising strength Control box is removable from main cabinet assembly for demonstrations on any VGA monitor Wheels attached for easy transportation CONCEPT DIAGRAM Compact Flash Game Controls 27” CRT Monitor Boot Loader Xilinx ML507 Emulator Testing Tested modified pieces of emulator separately Ran tests found from NES development community in ModelSim that tested the entire system completely When tests passed in ModelSim, implementation was tested for robustness on the hardware Boot Loader Testing Tested boot loader with debug statements sent through UART Debug statements used to verify values in memory, and functionality of software CPU timing fail Sprite test failure TESTING Advisor Phillip Jones Assistant Professor Electrical and Computer Engineering

Transcript of ABSTRACT The purpose of this project is to continue to perfect the Nintendo Entertainment System...

Page 1: ABSTRACT The purpose of this project is to continue to perfect the Nintendo Entertainment System (NES) emulation on an FPGA that would showcase Iowa State.

ABSTRACTThe purpose of this project is to continue to perfect the Nintendo Entertainment System (NES) emulation on an FPGA that would showcase Iowa State University’s expertise in reconfigurable hardware. An authentic arcade cabinet was created to house the system to give it a visually appealing look. The demonstration of reconfigurable hardware technology can be used as a recruiting tool for potential students, and showcasing past students’ projects.

DESIGN REQUIREMENTSFunctional Requirements• Emulator must support the instruction set used by the original NES System• All NES-specific emulation must be performed entirely in hardware• Physical interface shall support 2-player arcade style controls• Graphical interface must allow for selection of all available games on compact flash card• Boot loader must read ROM files and initialize emulator memories• Cabinet must support 100lb monitor, and run on standard 120 VAC powerNon-Functional Requirements• All emulator components shall be implemented as individual modules• Cabinet shall be safe for all age groups• Users’ interaction with boot loader shall be understandable without additional help• Cabinet shall be a vintage style arcade cabinet to house the system

CONCLUSIONThe emulator turned out to be more work than expected, especially with getting the timing between the CPU and PPU to be correct. Despite these difficulties the emulator is now better documented and more robust, leaving it in a better position for future groups. For our final demonstration a NES emulator was ported to an embedded PowerPC processor on the FPGA. This was a slight deviation from our original idea, but was not a trivial task. The current implementation successfully meets our goals of displaying the power of FPGA technology. The boot loader has been implemented and allows for an easy to use interface for selecting games for the NES. The completed cabinet will provide years of demonstration capabilities for Iowa State University’s Computer Engineering Department. With a vast selection of games running on a large CRT monitor, it is easy to have many nostalgic memories.

Tony Milosch (CprE)Cory Mohling(CprE)

John Alexander (CprE)David Gartner (CprE)

Team May1114

Danny Funk(CprE)

Client/AdvisorJoseph ZambrenoAssistant Professor

Electrical and Computer Engineering

PROJECT RESOURCESOur budget was only used on the materials for the cabinet, and its construction. Most of our budget was spent on purchasing the best possible arcade monitor because it is the main focus point for the users. The FPGA board was provided by the department, and was not factored into the budget.

Item Cost

Cabinet $760.00 – Total

Wheels $40.00

Speakers $20.00

Screws $10.00

Plywood $90.00

Marquee $20.00

Marquee Light $20.00

T-Molding $10.00

Paint/Primer $50.00

Monitor $500.00

Labor – 963.5hrs $19,270.00

Emulator• Improved functionality of past group’s design• Tweaked PPU and CPU clocks to more closely

match the original NES• Cleaned up existing code to make it more

understandable for future projects

TECHNICAL DETAILS

Central Processing Unit (CPU) • Open source 6502 processor reads instructions

from the ROM files • Decodes instructions and controls rest of system

Picture Processing Unit (PPU)• Responsible for rendering a 256x240 image • Combines the color palettes, sprites, and

background

Boot Loader• C code written to run on MicroBlaze processor• Program displays metadata from compact flash card• Graphical interface allows user to select desired

game from list• Loads game data from ROM files into emulator

memories

Cabinet• ¾” cabinet grade plywood used for economical

strength and durability• Kreg Joints hide screws without compromising

strength• Control box is removable from main cabinet

assembly for demonstrations on any VGA monitor• Wheels attached for easy transportation

CONCEPT DIAGRAM

Compact Flash

Game Controls

27” CRT Monitor

Boot Loader

Xilinx ML507

Emulator Testing• Tested modified pieces of emulator separately• Ran tests found from NES development

community in ModelSim that tested the entire system completely

• When tests passed in ModelSim, implementation was tested for robustness on the hardware

Boot Loader Testing• Tested boot loader with debug statements

sent through UART• Debug statements used to verify values in

memory, and functionality of software

CPU timing fail

Sprite test failure

TESTING

AdvisorPhillip Jones

Assistant ProfessorElectrical and Computer Engineering