Skip to content

FPGA

Ultimately, I would like to tape out a chip one day, and it is clear that having an FPGA board would be useful for trying things out before going all the way to silicon.

During the course I never really got into FPGA development. I did have an FPGA board to work with, but I never got around to using it, at least not with an open-source workflow on Linux.

## Spiral 0 - Choosing an FPGA

There are many options out there, but what I'm looking for is something beginner-friendly that I will not outgrow immediately.

I'm also looking for something budget-friendly that works well with OpenFPGA and other open-source FPGA tools, preferably with a CLI-based workflow.

Some of the things I want to look at are:

  • OpenFPGA support
  • Open-source toolchain support
  • Linux support
  • CLI-based workflow
  • Yosys and nextpnr support
  • Enough resources to experiment with small CPUs and SoCs
  • Good documentation and community support
  • Price and availability
  • Small enough to easily travel with

A couple of boards came up that looked promising:

Board FPGA Approx. logic Open-source flow Memory Beginner Room to grow
OrangeCrab Lattice ECP5-25F / 85F 24K / 84K LUT Excellent 128 MB DDR3L Medium Excellent
iCEBreaker v1.1a Lattice iCE40UP5K ~5K LUT Excellent 1 Mbit SPRAM + BRAM Excellent Medium
ULX3S Lattice ECP5 12K–85K LUT Excellent SDRAM Medium Excellent
Tang Nano 9K Gowin GW1NR-9 8,640 LUT4 Good / improving 468 Kbit BSRAM + flash Good Good
iCESugar Lattice iCE40UP5K ~5K LUT Excellent 1 Mbit SPRAM + BRAM Good Medium
Pico-Ice Lattice iCE40UP5K + RP2040 5.3k LUTs, Excellent 1Mb SPRAM, 120Kb DPRAM, 8 Multipliers Excellent Moderate

Narrowing it down

Looking at the different boards made it clear that FPGA choice is not only about getting the largest FPGA possible. The toolchain, documentation, physical size and how easy it is to actually experiment with the board are just as important to me.

The OrangeCrab initially looked very interesting. It combines a relatively powerful ECP5 FPGA with a small form factor and excellent open-source tool support. However, I found that the board has been discontinued. I could probably still find one somewhere, but it does not make much sense to choose discontinued hardware when I'm buying a new development board.

The ULX3S also has excellent open-source support and considerably more FPGA resources than most of the other boards. On the other hand, it is quite a large development board. I want something small that I can easily carry around with my laptop and other electronics, so that makes the ULX3S less attractive to me.

The iCEBreaker and iCESugar both use the Lattice iCE40UP5K. This FPGA has very mature open-source support through tools such as Yosys, nextpnr and Project IceStorm. They look like good boards for learning, although the relatively small FPGA means there is less room to grow into larger designs.

The Tang Nano 9K is interesting because it is small, inexpensive and provides more logic resources than the UP5K boards. It uses a Gowin FPGA rather than Lattice, however, so the open-source ecosystem is something I need to investigate further.

The Pico-Ice became particularly interesting. It combines an iCE40UP5K FPGA with an RP2040 on a very small board. The FPGA has excellent open-source tool support, while the RP2040 can handle programming, USB communication and interaction with the FPGA. I already have experience working with RP2040 boards, so this also provides a familiar bridge into FPGA development.

At this point I have not decided which board to get, but the comparison has narrowed down what I'm actually looking for. The next step is to choose one, order it, and start experimenting with the open-source FPGA workflow.