Continuing my obsession with reading up on homebrew CPU projects, I found this incredible blog. Instead of just presenting the completed design, Dawid has presented intermediate posts about his project in progress, detailing some of the choices and techniques he had to make along the way. As is true of most projects like this, it’s hard to know how to get started and gain enough traction to make progress, and details like this can be really helpful and really inspiring.
Addendum: For instance, I’ve been considering writing a gate level simulator (writing code is something I feel comfortable doing) rather than spending huge amounts of time learning Verilog or VHDL. It is somewhat reassuring that Dawid apparently did the same thing. Very interesting.
You could always try logisim. I’ve implemented most of DLX (using the pipeline from Hennessy and Patterson, though I may add another stage for memory accesses that require two cycles) in that particular simulator, so it’s definitely up to the task.
(Why DLX? Because it’s so close to MIPS that you could theoretically port ucLinux to it with very little effort. And that would be awesome for a homebrew CPU.)
Hi Mark.
Building a CPU from scratch is really satisfying. The best moment is when you see your first instruction run.
I’ve left a link to my site for some background. In my case, I worked from Tanenbaum’s computer architecture book. I wrote my own microcode assembler, assembler and Pascal compiler. The CPU is built on a digilent fpga board.
My goal was just to see what a dedicated hobbyist could accomplish. Getting something like Linux running was not so important for me. Basically, the issue was where to draw the line. For example, you may want a compiler. So you’ll either write one from scratch, or port one, or make your CPU match another so you don’t have to solve the compiler problem. Well if you make your CPU match another, then you may think it makes more sense to BUY the existing CPU so you don’t have to build it…
Very soon, you think you should just run linux on a PC and you’re done!
Good luck,
Michael