iCEBerg-FPGA

Introduction

Now that I am immersed in the world of digital design, I wanted to create my own FPGA development board. There are two boards that I really like: the iCEBreaker and the ULX3S.

The ULX3S uses an FPGA from Lattice's ECP5 series, which offers a lot of resources.

The iCEBreaker is based on Lattice's iCE40 series, a much less powerful FPGA with fewer resources but also lower power consumption.

I decided to replicate the iCEBreaker, but in my own way. There is also the iCEBreaker-Bitsy, which is not released at the moment, but whose files are available. It has a much smaller form factor, and instead of using an FTDI chip, it uses the FPGA itself to communicate via USB.

This is a really clever use of resources, and so I came up with a plan: an FPGA devboard with proper PMOD headers, but USB communication via the FPGA - simple enough.

The result:

Rendering of the iCEBerg FPGA board

Here you can find the repository for the iCEBerg FPGA development board.

In addition to the FPGA, the board has the following features:

  • USB-C connector
  • 3 PMOD connectors (A, B and C)
  • 12 MHz oscillator
  • RGB LED
  • LEDs
    • DONE (FPGA configuration is done)
    • LEDG (user controlled)
    • LEDR (user controlled, must be connected first)
  • SRAM
    • 64Mbit
    • Quad SPI
  • FLASH
    • 128Mbit
    • Quad SPI
    • To store bitstream and user firmware.

Here are some other views:

Front view Back view

Schematic

The schematic is mostly a 1:1 copy of parts of the iCEBreaker and the iCEBreaker-Bitsy. I am very grateful that the schematics are available as open source.

schematic of the iCEBerg FPGA board

I created my own symbol for the iCE40UP5k: the three banks and the supply are separate and can be moved to different sheets. In this case, I placed them all together.

Board View

This is the top view of the board:

Board View of the iCEBerg FPGA Board

As you can hopefully see, I tried to make it look pretty. With a custom logo and silkscreen labels created in Inkscape.

Manufacturing

To save time on manufacturing, I decided to use JLCPCB's SMT service. Almost all parts are assembled by them, except for the iCE40UP5k and the FLASH chip, since I already had them at home :)

This also allows me to preload the FLASH with the bitstream of the bootloader before soldering. You will hear more on that once I receive the boards and do the bring-up.

Summary

Although it is not the most original board, it was a good exercise to build it. I learned a lot and became even more confident in designing PCBs.

Who knows, maybe next time I'll try a more daring design ;)