

Ice dongle
USB-C Dongle with ice40 UP5k FPGA
- Size
- 40 × 16 mm
- Copper layers
- 4
- Thickness
- 1.55 mm
- Parts
- 48
- Nets
- 59
- Pads
- 239
- Tracks, vias
- 613, 95
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 21 Sep 2022
- Updated
- 9 Mar 2023
Overview
Ice dongle is an open-source printed circuit board by emeb, from the emeb/ice-dongle repository on GitHub, published under the MIT licence. It is a 4-layer board of 40 × 16 mm with 48 parts on 59 nets, routed with 613 tracks and 95 vias.
It is built around the ICE5LP4K-SG48I, W25Q64JWUUIQ and APS6404L-3SQR-SN, with the DRTR5V0U4S among its other parts. Its parts include 14 capacitors, 14 resistors, 7 ICs, 5 connectors and 2 diodes. It belongs with the fPGA and programmable logic boards and the FPGA and CPLD boards of this library.
Main components
4ICE5LP4K-SG48I
QFN48ICE40 Ultra FPGA, 3520 Logic Cells, 400 kHz Data Transfer Speed, 48 pin QFNLattice SemiconductorUncategorisedW25Q64JWUUIQ
USON8-4mmX3mmUSON-8-(4X3) New Arrivals ROHSWinbond ElecNOR FLASHAPS6404L-3SQR-SN
SOP-8SOP-8 PSRAM ROHSAP MemoryDRAMDRTR5V0U4S
SOT-363-65℃~+150℃ 100nA 1pF 5.5V 5A@8/20us 6V ESD Four channels IEC 61000-4-2 SOT-363 ESD and Surge Protection (TVS/ESD) ROHSDiodes IncorporatedESD And Surge Protection (TVS/ESD)
README
README.mdice-dongle
USB-C Dongle with ice40 UP5k FPGA
Abstract
This is a small USB connected FPGA board in a "dongle" form-factor. Note that it's not a true dongle since it doesn't have a USB plug (USB-C plugs are not practical for DIY assembly at the time this was designed) - instead it has a USB-C jack and you can use an inexpensive M-M adapter to achieve dongle-like function.
For I/O it provides an 18-pin FPC connector that conforms to the Eye-SPI standard found on some Adafruit products. This standard includes 3.3V power as well as 16 GPIO for things like SPI or I2C device, most often TFT LCD displays and user interfaces.
The FPGA is directly connected to USB and is pinned-out similarly to the 1bitsquared Icebreaker Bitsy so the NO2FPGA bootloader and user designs for that ecosystem should port over with minimal changes. It includes 8MB of flash and 8MB of PSRAM, as well as an RGB LED and a user button.
Initial programming of the FPGA bitstream takes place through a 1.27mm SMD header footprint on the back of the board. The original intent was to access this temporarily via the Adafruit "Pogo Pin Probe Clip" which should have attached easily over the pads. Unfortunately the pogo pin row spacing is too narrow for the SMT header pads so I ended up soldering on a header and using a normal cable. This may be fixed in future revisions, but for now an actual header + cable is probably more reliable for long-term development.
Status
22-10-15
Boards are back from OSHpark and so far things are working.
- USB power, regulators and clock oscillator are running properly.
- Minor silkscreen error was discovered - reference designators for R14 and C10 swapped.
- FPGA configures via programming header and from SPI flash.
- SPI flash can be written from the programming header.
- RGB LED works.
- EYESPI bus works with ST7789 TFT LCD
- PSRAM works.
22-10-16
USB FS interface is fully functional with the NO2 Bootloader. I've forked it to add a custom BOARD target for ice-dongle but I'll submit a PR to the main project when things settle down a bit. For the time being here's my fork:
To build, clone that and follow the directions in the README. A few additional notes:
- Don't forget to
git submodule update --initto get all the related material from the NO2 ecosystem. - To build use
make BOARD=ice-dongle bootloader - The
riscv_lcdgateware project has amake dfutarget that shows how to use the bootloader.
22-10-17
Ordered some helper boards to make interfacing easier:
- ice-fpc-pmod
- ice-prog-adapt
find out more about them in the Hardware directory.
22-11-20
- Sylvain Munaut (@tnt) has built up a couple ice-dongle boards and confirmed that they work outside my lab. He did spot another silkscreen error - R10 and C5 reference designators are swapped. This doesn't significantly affect the board operation but should be corrected.
- Updated NO2 board definition to put serial pins on programming header and sent a PR which has been accepted. You can now use the mainline NO2 bootloader repo instead of my fork.
- Added a LiteX gateware design. This works but even a minimal demo uses > 80% of the FPGA resources.
22-11-21
Corrected silkscreen errors and bumped revision to V0.1a
Parts
48| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 0.1uf | Capacitor_SMD:C_0402_1005Metric | C1, C2, C5, C6, C9, C10, C12, C13, C14 |
| 5 | 10k | Resistor_SMD:R_0402_1005Metric | R2, R3, R4, R10, R11 |
| 3 | 10uf | Capacitor_SMD:C_0805_2012Metric | C7, C8, C11 |
| 2 | 1uf | Capacitor_SMD:C_0402_1005Metric | C3, C4 |
| 2 | 22 | Resistor_SMD:R_0402_1005Metric | R8, R9 |
| 2 | 5k1 | Resistor_SMD:R_0402_1005Metric | R1, R5 |
| 2 | SW_Push | emeb_library:SW_SPST_PTS815 | SW1, SW2 |
| 2 | TestPoint | emeb_library:TestPoint_Pad_D0.5mm | TP1, TP2 |
| 1 | 1.5k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 100 | Resistor_SMD:R_0402_1005Metric | R14 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | R12 |
| 1 | 12MHz | Oscillator:Oscillator_SMD_ECS_2520MV-xxx-xx-4Pin_2.5x2.0mm | U7 |
| 1 | 1M | Resistor_SMD:R_0402_1005Metric | R6 |
| 1 | 2.2k | Resistor_SMD:R_0402_1005Metric | R13 |
| 1 | APS6404L-3SQR | emeb_library:USON-8_2x3 | U1 |
| 1 | CLX6F-FKC | LED_SMD:LED_RGB_PLCC-6 | D2 |
| 1 | DRTR5V0U4S | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U3 |
| 1 | FFC2B35-18-G_REVA2 | emeb_library:GCT_FFC2B35-18-G_REVA2 | J4 |
| 1 | Jumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1 |
| 1 | LED Blue | LED_SMD:LED_0603_1608Metric | D1 |
| 1 | MCP1824x-OT | Package_TO_SOT_SMD:SOT-23-5 | U4 |
| 1 | NC Jumper | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | J2 |
| 1 | PROG HEADER | Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMD | J3 |
| 1 | Qwiic | Connector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_Vertical | J5 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | Val** | emeb_library:avatar_small | Ref** |
| 1 | W25Q64JWUUIQ | emeb_library:USON-8_4x3 | U2 |
| 1 | XC6222B331MR-G | Package_TO_SOT_SMD:SOT-23-5 | U5 |
| 1 | ice5lp4k_sg48 | Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.3x5.3mm | U6 |
More from emeb/ice-dongle
2- 2 layers16.9 × 39.2 mm

- 2 layers30.1 × 14.9 mm

Similar boards
- 4 layers40 × 16 mm

Rp2040-dongle
emeb/RP2040_Projects
A collection of random projects based on the Raspberry Pi RP2040 MCU
44 parts3MIT - 4 layers81.7 × 31.8 mm

- 4 layers76.2 × 31.8 mm

- 4 layers26.4 × 41.7 mm

- 6 layers76.2 × 20.3 mm

DEV G2-NANO
theta-machines/DEV-G2-NANO
The G2 Nano is powered by a record-breaking 1 GHz Arm Cortex-M7 processor, combining the performance of an application processor with real-time determinism.
141 parts346CERN-OHL-P-2.0 - 4 layers34.8 × 18 mm

- 6 layers15.2 × 34 mm

Plajtime main
Plajta/PlajTime-Hardware
Here lays the current and past HW designs of our PlajTime smartwatch. That includes all the boards and the chassis.
85 parts3CC-BY-SA-4.0 - 6 layers42.2 × 61.4 mm

Dap proto board full
tsar-boomba/dap-proto-board-full
The culmination of all of my learning during the Spring '26 semester. All the way from making a simple dev board for the TAD5212 DAC, to making a RP2350 board, and now this. Everything combined on one 6-layer board.
102 parts1
Questions
How big is the Ice dongle PCB?
It measures 40 × 16 mm and has 4 copper layers, 1.55 mm thick.
What parts does the Ice dongle use?
48 parts, built around the ICE5LP4K-SG48I, W25Q64JWUUIQ, APS6404L-3SQR-SN and DRTR5V0U4S. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Ice dongle KiCad files?
From the emeb/ice-dongle repository on GitHub, at the commit this page was made from: the board is Hardware/ice-dongle/ice-dongle.kicad_pcb and its schematic Hardware/ice-dongle/ice-dongle.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Ice dongle design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).