CPU DESIGN

This page summarizes the projects mentioned and recommended in the original post on /r/FPGA

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • VexRiscv

    A FPGA friendly 32 bit RISC-V CPU implementation

  • For expected hardware utilization you can look up existing implementations with similar features. E.g. VexRiscv

  • nybbleForth

    Stack machine with 4-bit instructions

  • Beware, however, that you'll get what you pay for. There are some very small 8b CPU's I've seen implemented in less than 1k LUTs (iCE40). (I think this was the one.) The 32b class I work with tends to require about 4k LUTs (iCE40), and while the CPU can often fit nicely in that space the rest any design using a CPU can get kind of tight. It will also cost you more to [pipeline your CPU](). The cache can be quite expensive as well, but still fits nicely within an Artix-7 35T class FPGA--depending on the size and implementation of your cache. There are also lower logic alternatives, but again ... with all of these there are performance tradeoffs. Again, you get what you pay for.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • autofpga

    A utility for Composing FPGA designs from Peripherals

  • There are also open source versions of many of the pieces you will need. I now use an open source crossbar interconnect for most of my designs. I use AutoFPGA to connect all the pieces together. I mentioned my flash controller above, but I also have a SD Card controller I've used quite successfully. I've also posted a UART to Wishbone bridge and discussed network debugging, both of which I use routinely with the ZipCPU. If for no other reason, these components allow me to load or update software on my CPU even after it's been placed into an FPGA. Of course, many of those components are tied to a Wishbone bus infrastructure. You may find you need a bridge of some type to connect different buses structures together--memory naturally tends to operate at one width and clock, video at another, and your CPU at another, so it helps at times to have a universal bus adapter kit handy.

  • sdspi

    SD-Card controller, using either SPI, SDIO, or eMMC interfaces

  • There are also open source versions of many of the pieces you will need. I now use an open source crossbar interconnect for most of my designs. I use AutoFPGA to connect all the pieces together. I mentioned my flash controller above, but I also have a SD Card controller I've used quite successfully. I've also posted a UART to Wishbone bridge and discussed network debugging, both of which I use routinely with the ZipCPU. If for no other reason, these components allow me to load or update software on my CPU even after it's been placed into an FPGA. Of course, many of those components are tied to a Wishbone bus infrastructure. You may find you need a bridge of some type to connect different buses structures together--memory naturally tends to operate at one width and clock, video at another, and your CPU at another, so it helps at times to have a universal bus adapter kit handy.

  • dbgbus

    A collection of debugging busses developed and presented at zipcpu.com

  • There are also open source versions of many of the pieces you will need. I now use an open source crossbar interconnect for most of my designs. I use AutoFPGA to connect all the pieces together. I mentioned my flash controller above, but I also have a SD Card controller I've used quite successfully. I've also posted a UART to Wishbone bridge and discussed network debugging, both of which I use routinely with the ZipCPU. If for no other reason, these components allow me to load or update software on my CPU even after it's been placed into an FPGA. Of course, many of those components are tied to a Wishbone bus infrastructure. You may find you need a bridge of some type to connect different buses structures together--memory naturally tends to operate at one width and clock, video at another, and your CPU at another, so it helps at times to have a universal bus adapter kit handy.

  • wb2axip

    Bus bridges and other odds and ends

  • There are also open source versions of many of the pieces you will need. I now use an open source crossbar interconnect for most of my designs. I use AutoFPGA to connect all the pieces together. I mentioned my flash controller above, but I also have a SD Card controller I've used quite successfully. I've also posted a UART to Wishbone bridge and discussed network debugging, both of which I use routinely with the ZipCPU. If for no other reason, these components allow me to load or update software on my CPU even after it's been placed into an FPGA. Of course, many of those components are tied to a Wishbone bus infrastructure. You may find you need a bridge of some type to connect different buses structures together--memory naturally tends to operate at one width and clock, video at another, and your CPU at another, so it helps at times to have a universal bus adapter kit handy.

  • neorv32

    :rocket: A tiny, customizable and extensible MCU-class 32-bit RISC-V soft-core CPU and microcontroller-like SoC written in platform-independent VHDL.

  • I can recommend the NEORV32 RISC-V processor, which is a complete SoC with memory-mapped peripherals and a whole box of software-related stuff (like makefiles and low-level drivers).

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • Rudi-RV32I

    A rudimental RISCV CPU supporting RV32I instructions, in VHDL

  • Here was my first attempt at a RV32I design, https://github.com/hamsternz/Rudi-RV32I

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • C++ Verification Testbench Best-Practice Resources?

    7 projects | /r/FPGA | 11 Jun 2023
  • How can I get Verilator to Prompt for User Input?

    3 projects | /r/FPGA | 19 Apr 2021
  • RISC-V with AXI Peripheral

    2 projects | /r/FPGA | 20 Jun 2023
  • Simple skid buffer implementation

    3 projects | /r/FPGA | 10 Jan 2023
  • Testing Axi Slaves in Simulation

    1 project | /r/FPGA | 4 Jan 2023