Humble iCE is a low cost FPGA development board based on Lattice iCE40UP5k and Raspberry Pi RP2040.
Front | Back |
---|---|
- Lattice Semiconductor iCE40UP5k FPGA
- Raspberry Pi RP2040
- 32 Mb Flash
- 2 x 2x20 2.54 mm headers (3 x PMOD iCE40, 1 x PMOD RP2040)
- RP2040 SWD (debug) header
- 1 x Red LED RP2040
- 1 x Blue LED iCE40
- 1 push button reset
- 1 push button RP boot
- 1 push button iCE40
- USB Type-C connector
- 4 x mounting holes
The schematic for the board can be found here.
If you are in India, please sign up here to reserve a board. If you are ourside India, please sign for our GroupGets campaign.
Please read the Getting Started with Humble iCE guide to get started with your board.
If you would like to modify the firmware on the RP2040 on Humble iCE, please read the Customizing Humble iCE document.
The RP2040 serves as the bitstream uploader and communication bridge for iCE40. 4 extra GPIO lines connect the two chips. In the default RP firmware, it exposes two CDC USB ports when plugged in. One is used to send the bitstream from your computer using a Pythion script. The second port can be used to communicate with a UART module in FPGA fabric. RP receives the bistream and uploads it via SPI to the FPGA. To save costs, we're using SPI slave mode configuration for this board. The bitstream is saved in the flash. When the RP boots up, if it finds a bistream in the flash, it will upload it to iCE40 via SPI.
Another cost saving measure used in the board: the XTAL on RP2040 is used to supply the clock for the iCE40 using clk_gpout.
There are more possibilities here - for instance, with custom RP firmware, you can use the iCE40 as a compute accelerator and transfer data back and forth via SPI using the 4 lines.
Here's the pinout for the board.
Here are the board dimensions for Humble iCE.
I'd like to thank Sivaprakash S for his help with PCB design and assembly. I would also like to thank Venkat Rangan for reviewing the schematic, and for many helpful discussions.