The Oldland CPU 32-bit FPGA Core

A block diagram of the Oldland CPU core

Field Programmable Gate Arrays (FPGAs) let you program any logic you’d like onto a chip. You write your logic using a hardware description language, then flash it to the FPGA. You can even design your own processor and flash it to the chip.

That’s exactly what [jamieiles] has done with the Oldland CPU. It’s an open source 32 bit CPU core that you can synthesize for use on an FPGA. Not only can you browse through all the Verilog code in the Github repo, but there’s also a bunch of tools for working with this CPU core.

Included with the package is oldland-rtlsim, which lets you simulate the processor on a PC. The oldland-debug tool lets you connect to the processor for programming and debugging over JTAG. Finally, there’s a GNU toolchain port that lets you build C code for the device.

Going one step futher, [jamieiles] built a full SoC around the Oldland core. This has SPI, UART, timers, and more features you’d expect to find in a microcontroller. It can be flashed to the relatively cheap Terasic DE0-Nano board.

[jamieiles] has also ported u-boot to the processor, and the next thing on the list is the Linux kernel. If you’ve ever been interested in how CPUs actually work, this is a neat project to look through. If you want more open source CPU cores, check out OpenCores.

5 thoughts on “The Oldland CPU 32-bit FPGA Core

  1. “You write your logic using a hardware description language, then flash it to the FPGA”
    Well, most FPGA’s are not flashed (they don’t have flash). Majority of them are configured from an external flash/rom/micro, etc. at each power up.

    Very impressive project. Apparently you can run this at 75Mhz on a De0 Nano board. Definitely not bad for a soft 32 bit cpu. Kudos to him.

    I wish he had a blog, too. Would be nice to see the progress of it coming along.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.