Skip to the content.

My DIY FPGA board can run Quake II

22-mar-2026

Most people start their journey into custom CPU design by buying an off-the-shelf FPGA dev board. I decided to take the long way around: instead of just writing Verilog code, I started with buying a soldering iron.

This is the story of how I dived into electronics design with almost zero prior experience. My goal was ambitious: build an FPGA-based device capable of booting Linux, connecting to a screen and keyboard, and allowing me to write and compile code directly on the machine itself.

Why do this? It has no practical value – CPUs in FPGA are always more expensive and less performant than actual CPU chips. But it is a hobby. My idea of having fun.

After two years of work, the results have far exceeded my own expectations. What I ended up with is a functional computer that is more than capable of running Quake II.

The project includes:

All the code, schematics, and gerber files are available on github.

Of course, I could have made things much easier for myself. I could have skipped the first step and bought some existing FPGA board. Instead of the second step, I could have used a tool like LiteX SoC builder, and for the third, I could try to reuse OpenSBI and U-Boot. But this way I would miss all the fun.

On the other hand, I could have made it much harder. I could have avoided pre-made IP blocks entirely, written my own operating system from scratch, built a custom compiler. But that would become too long and tedious.

Thus, the parts which I find interesting I did on my own, and tried to use existing solutions wherever it made sense.

The article turned out to be quite long, so I split it into several parts.

Part 2/6: First prototype

Part 3/6: Now it mostly works

Part 4/6: Next generation

Part 5/6: One more iteration

Part 6/6: Optimizing hardware to run Quake II

I previously published an earlier version of this text on habr.com in Russian.

Next part: First prototype (2/6)