Alright, introduction posts are weird, but it'll feel even more strange not having one, so let's do this.
After spending some time with Elements of Computing Systems I became really enraptured with digital logic design. I found myself wanting to learn and experiment more. My curiosity and desire to try new things eventually calcified into two distinct projects. One project was to build a CPU out of discrete logic chips. The second project I wanted to tackle was designing a game console and implementing it in an FPGA.
Building a CPU out of 74 series chips is a pretty popular past time on the internet, and I've had a great time browsing the many entries on the Homebrew Computers Webring (A webring! How delightfully retro!) like the Magic-1. I figured I'd throw my hat into the ring, and start working on one of my own. I probably don't have any particularly unique insight or knowledge, but I'm hoping that traveling with me down the road from design through construction will make for an interesting journey. Another huge inspiration has been Quinn Dunki at Blondihacks and her work on the 6502 based Veronica computer. I remember reading some praise directed her way on another site (sorry, I can't remember which one right now!) for her willingness to show all sides of the development process, both successes and failures. I'm hoping to channel a little of that attitude, and give a complete warts-and-all picture of the process.
I already mostly designed the CPU I plan to document here, but I'm going back to square one and reimplementing it from scratch. It's a little strange, because I'll technically be explaining things I've already done, but I'm hoping to reproduce the build more or less in order I did it the first time, including the times where I changed my mind or ripped things out to start over.
While building a CPU from discrete chips is going to be an enjoyable task (I'm sure I'll regret saying that at some point), it imposes a lot of constraints; if I want to actually build this thing, it needs to be designed around my ability to find parts and actually assemble the things. In some ways, that's actually quite nice, as it reigns in my ambitions some, and having constraints always triggers one to find unique or clever workarounds.
My ambitions to do more remain, however, and they've eventually solidified into a desire to design and implement a game console in FPGA, including custom CPU, GPU, and audio processor. I've been working on this project on and off for a while, and had a few small successes and many large failures along the way. I wish I'd started this blog earlier, because watching me take my first swing at a CPU core was a beautiful disaster, and I learned a ton along the way. My progress on that project ended up on my GitHub page but when I pick it back up, I think I'll probably start over, and take that opportunity to apply what I've learned from the first time around, as well as what I've learned from designing the smaller CPU targeted at real life construction.
I'm pretty excited about logging my progress on the FPGA console, as I think I have a lot to contribute there. It's not that I have any education or deep well of experience to draw on as far as hardware design goes, but rather the internet is just almost entirely devoid of information that's accessible to beginners! There's been a few resources here and there that have helped, and I'll try and point them out when I get there, but for the most part, I've been figuring things out as I go. That's occasionally been a rather painful process, but it's also been a rewarding one, and I'm hopeful that as I can inspire others to take on similar projects, and maybe we can figure a few things out together as we go.