FPGC

What is FPGC?
FPGC (FPGA Computer) is a personal hobby project where I build an entire computer around an FPGA from scratch. None of the main components (CPU, GPU, I/O, memory controller) use existing designs. The project goes from clock-by-clock hardware logic all the way up to an operating system with a shell, filesystem, including build tools like an Assembler and C compiler.
This is technically the successor of the FPGC6 project. Building abstraction layers only works if the foundation is solid, and it took a few restarts to get there.
What does it cover?
- FPGA logic design: Custom CPU, GPU, Memory Unit, and I/O, all in Verilog
- PCB design: A fully custom board with FPGA, SDRAM, SRAM, SPI Flash, Ethernet, USB, and HDMI
- Software: Bootloaders, assembler, C compiler, filesystem, operating system, and networking protocol
- Toolchain: Development tools for programming and interacting with the system via UART and Ethernet
- Physical design: 3D-printed case and monitor for a standalone desktop computer
See Specifications for the full hardware/software spec sheet, or Architecture for how everything connects.
Project goals
Main goals
- Use the FPGC as a fully portable standalone PC that can write, compile, and run software without an external computer
- Run DOOM (or a similar game) at a playable framerate, which requires the CPU to average under 2 cycles per instruction
- Run a demo in a cluster setup of 5 FPGCs networked together, with one acting as a server and the other four rendering different parts of the screen in parallel
- Properly document the entire project
Sub goals
- Custom RAM-optimized filesystem (BRFS)
- Fully custom PCB without a development board
- Custom OS with system calls and a proper architecture for user programs
- 3D-printed case and monitor for a standalone physical computer
- Self-hosted assembler and C compiler running on the FPGC
- Ethernet communication via custom layer 2 protocol
- SD card mass storage