Resources

About the FPGA chip

The Lattice ECP5 is a reasonably powerful FPGA which has had its bitstream fully reversed by Project Trellis. This enables it be to fully supported by the open source tools, requiring no vendor tools.

An in-depth overview of the boards we are using is on Tom Verbeure’s blog.

The TLDR is: The Colorlite i5 is technically part of a commercial videowall product, but is used by us as a dev board because it meets an excellent balance of cost, availability, powerful features and practicality. The community has reversed this board, and additionally, created an “extension board” that is a carrier which breaks out the SO-DIMM with easier to use connectors and also provides a USB-JTAG programming interface. Here’s some detailed specs and links:

About the OSS FPGA eco-system

The tools for working with FPGAs in an open-source stack started around 2015. Project icestorm enabled the use of the Lattice Icestick (a popular ~$20 pre-pandemic development board for the ICE40 FPGA). More recently this board has become hard to come by, however, the toolchain has been greatly developed and supports quite a number of other FPGAs as well.

Terminology

  • FPGA - Field Programmable Gate Array. A programmable device, which consists of arbitrarily configurable logic.
  • IP Core - Blocks of logic used to perform specific functions
  • JTAG - A serial programming and testing interface used to program our FPGA boards.
  • LUT - Lookup table: A piece of logic that allows mappings of a series of inputs states to specific output. An FPGA largely consists of a programmable/configurable matrix of LUTs, and the “size” of an FPGA is often specified in LUTs.
  • OSS - Open Source Software
  • PMOD - A connector laid out using standard 0.1" headers. Usually provides a byte worth of IO and power/ground in a standard layout
  • Python - A general purpose high-level programming lanugage
  • Verilog - A programming language used specifically with FPGAs