After falling in love with the original Ben series I wanted to tackle building my own CPU. I'd like to get my kids involved and since they spend 90% of their free time it seems on Youtube I decided to chronicle my journey on a channel. I'm not an expert so this series will be more of a rambling video blog than a tutorial.
Specs I'm shooting for:
3Mhz Clock Speed 8bit ALU with ADD, SUB, AND, OR, XOR 1MB RAM (Bank Switched) 1 (8-bit) Accumulator 2 (8-bit) Index Registers 1 (16-bit) Address Register 1 (16-bit) Program Counter 1 (16-bit) Stack Pointer Compatible with 6502 Assembly ( *Mostly ) GPU that meets or exceeds the NES PPU Chip 320x240 256 Sprites active at once 60hz refresh rate
First time using hackaday so I'm not sure about the ins/outs. I've found dozens of neat projects here over the last 6 months so I figured someone might be interested in what i'm working on too.
I'm doing a youtube series as I build my CPU and GPU. So far I've published 3 Episodes covering the CPU architecture and building the first set of 8 bit data registers along with the decoding circuit.
I like the idea of building each part as a module. It will keep the overall complexity of any given part lower and allows me to make iterative progress. However I'm unsure how to manage the interconnects. My first attempt used double high headers similar to stacking boards on a Raspberry Pi. However the legs bend easy and make poor contact. I'm considering using PCI Express slots but then I have to figure out how to route the edge when I get my board made to properly fit into the socket..
I'm working on the 16 bit registers next. The only UP/DOWN counter I can find is the 74HC191. This chip has two problems.
1. It's only available ( as far as I can tell ) in the 'HC' series, and stringing 4 of them together makes for about 71ns if I did my math right from the datasheet. At 3mhz this should be fine but would kill my dreams of running much faster.
2. It's async preset. This means that I can't both output a value from the register and load a new one in. Which I think I can do on the UP counters with sync preset. At least that's the way its working out in Digital simulator. I'll have to check the hold times of the preset to see if it works in reality.
If anyone knows of a better way to build an UP/DOWN 16 bit register, leave a note in the comments!