Name | NetID | Course |
---|---|---|
Adam Urish | adamwu2 | ECE 110 |
Jason Zou | jasonz3 | ECE 110 |
Willard Sullivan | wrs3 | ECE 120 |
Minwoo Cho | minwooc2 | ECE 110 |
Purpose: Our primary goal with the project is to further our understanding of how a simple CPU operates. We will use the NES processor as our subject and study graphics rendering and assembly programming. In addition, we want to study how other components work in conjunction with the CPU, such as the buses, storage units, and clocking. Our second goal is to create a functional game console using an 8-bit processor with the help of a Raspberry Pi with the NES as a base.
We are all fans of retro computing and especially, retro gaming. The opportunity to work with a retro console and to study how computers work in general was something we were not going to miss. This project is important to us because we will not only be just simply coding a video game but we will be able to work on the hardware itself, as well.
Background research:
Throughout our classes, we learned about the core components of a computer and how they interact with each other. We also learned high level programming and assembly language programming. While this may not be enough to build our project, we are confident that it will give us a strong foundation as we do more research on building a more simple computer.
There are several examples online of engineers developing their own versions of retro 8-bit consoles. Here is one from Sergio Vieira:
There are a huge amount of examples of building simply a "homebrew" 8 bit computer, the most famous being Ben Eater.
There is a wealth of information about both the NES layout and wiring, specifically an entire wiki about developing for it. In addition, the whole manual for the 6502 assembly language is available online.
Block Diagram:
- PSU: Will most likely be a 5V source to power the Raspberry Pi, CPU, and PPU.
- NES Game: We will choose a NES game to test our console. The NES cartridge contains game ROM and RAM.
- Controllers: Will either be NES controllers (real or clone) or of our own design.
- PPU: The Picture Processing Unit was the main IC on the NES to process and output video.
- CPU: We will either use the NES CPU or the more common Commodore 6502 CPU.
- Raspberry Pi: We hope to implement a Raspberry Pi to either replace or aid the PPU in video and audio processing. We also hope to output video in HDMI.
Parts Needed:
- RP2A03 CPU, Ebay (Not on Amazon) ~$24
- NES PPU Ricoh RP2C02, Ebay, combo with CPU, $29
- Raspberry Pi 4, Adafruit ~$35
- NES game cartridge, ~$20 (varies depending on game), Ebay or Gamestop
- 6502 CPU, ~$5, various places, will ask for advice on which is best to order from
- Breadboards, ~$5, ECE Supply Center
- Wire, purchased by the spool, various colors, ~$1 each, ECE Supply Center
- RAM Chips
- Various other IC components that can probably be picked up from ECE Supply Center
Possible Challenges:
- Breadboard will get cluttered quickly and keeping track of everything may be difficult
- Designing a proper PCB to hold components
- Integrating the Raspberry Pi with the RP2A03 processor
- General programming with the processor
References:
[1] "CPU", [ONLINE]. Available: https://wiki.nesdev.com/w/index.php/CPU. [Accessed Februrary 14, 2020].
[2] S. Vieira, "Building a 'homebrew' video game console", [ONLINE]. Available: https://www.gamasutra.com/view/news/338966/Building_a_homebrew_video_game_console.php. [Accessed February 14, 2020].
[3] B. Eater, "Build an 8-bit computer from scratch", [ONLINE]. Available: https://eater.net/8bit. [Accessed February 14,2020].
Other Links:
Attachments:
Comments:
Sounds like a fun project! It seems like you have done a lot of background research and know what you are doing. Let us know if you need help anytime!
Posted by yuchenc2 at Feb 16, 2020 00:42
|
Looks great. One concerning thing is the interface between the Raspberry Pi and your breadboard components; you mention you'd like to use the RPi to "replace or aid the PPU in video/audio processing". This is a lot harder than you might thin. The RPi may not be able to interface with your discrete components at a high enough frequency to sufficiently aid in video/audio processing. While it is a good idea to have an Arduino or RPi in your design for debugging, serial input/output, and other useful utilities, I would say that it is a bit optimistic to expect RPi GPIO to be fast enough to cope with the system bus of a 6502. In addition, I'm very glad you've found Ben Eater's extensive references. I will also point you to Grant Searle's website, the design of which I used for my own 8-bit computer. http://www.searle.wales/ (his main site) Click around and discover his Z80 design, along with his 6502 and 6509 designs. Should give you good references for interfacing common 8-bit CPUs with memory and whatnot. In addition, your RAM chips will most certainly not be $1, and they will be more complicated than you might be expecting. You're going to need both SRAM and an EEPROM (see Searle's designs) and you may also need some other kinds of memory depending on what the NES usually needs. I would recommend doing some additional research on your parts and exactly what parts you may need.
Posted by fns2 at Feb 16, 2020 12:32
|
It's great that you guys left a lot of room for pivoting on project difficulty. This gives you a very realistic chance of accomplishing at least the base of the project while leaving things to do as a possibility if time allows. I like the research that you guys have done. The examples are very powerful in helping you not only envision how you want your final product to look but also important solutions to problems that may not be worth your time in this lab understanding. I'm sure Finn is excited for you guys, as am I. Keep up the good work!
Posted by dbycul2 at Feb 16, 2020 20:12
|
Looks great, I was going to say that it was too much but it seems like you have a lot of checkpoints. Regarding your challenges:
Looks great otherwise. I'm excited to see the result!
Posted by weustis2 at Feb 16, 2020 22:07
|
Approved, Feb 20th
Posted by fns2 at Feb 20, 2020 18:44
|