I'm Tomu

A family of devices which fit inside your USB port!

Fomu EVT2

This is a revision of the Fomu development PCB. It is easy to produce, and has lots of debug pins, but obviously doesn’t fit inside your USB port.

This improves on many of the design errors with EVT1. It also adds the following features:

Component Checklist

Subsystem Quick Test In-Depth Test
1.2V Reg Pass  
2.5V Reg Pass  
3.3V Reg Pass  
VCCPLL Filter Pass  
Xtal Oscillator Pass  
SPI Flash Pass (QPI) FAIL (Identifier silk is swapped)
USB Pullup    
USB Pad Polarity    
RGB LED Pass  
Captouch Pads    
Capacitance    
Reset Button Pass  
User buttons Pass  

Engineering Change Orders

Changes need to be made when producing EVT2. This is the list of changes to make:

ECO001: SPI PU/PD identification silk is swapped

*Description: SPI generally requires a pull on the chip select pin. The ICE40 changes its behavior depending on whether it’s a pullup or a pulldown. Fomu EVT has both options. The “PU/PD” indicator silk is correct, however R3 is labeled R13, and R13 is labeled R3.

Action: Swap R3 and R13 identifiers.

ECO002: Add a second PMOD header

Description: There are four touch pads, and four pins in a PMOD header. It would be nice to have an additional PMOD header for people who don’t want to use the touchpads.

Action: Add a second PMOD header near the captouch pads.

ECO003: Mask on USB connector scrapes easily

Description: Some USB ports have bits of rough metal that, over time, can scrape away at the solder mask and copper on the USB connector. This is purely a cosmetic issue, as the layer underneath is ground.

Action: Peel back the soldermask and copper layers on the underside of the USB connector, leaving bare FR4.

ECO004: I3C pins are split between PMOD and DAT4

Description: The ICE40 has one pair of I3C-capable pins. Right now those pins are split between PMOD_1 and DAT4, meaning this function isn’t very useful.

Action: Swap PMODa_1 and DAT4, so that the PMOD header will have a pair of I3C-compatible pins.


Raspberry Pi Usage

You can communicate with Fomu using fomu-flash.

Raspberry Pi GPIO pinouts

The BCM value here is the GPIO according to the Broadcom chip, and according to Linux. You can access these pins through /sys/class/gpio/gpio[BCM]/ or through gpio -g.

BCM Header Signal
17 11 C_DONE
27 13 C_RESET
24 18 SPI_IO2/WP
10 19 SPI_MOSI
9 21 SPI_MISO
25 22 SPI_IO3/HOLD
11 23 SPI_CLK
8 24 SPI_CS

Usage examples:

# Put the SPI flash in "HOLD" mode, so it ignores us.
gpio -g mode 25 out
gpio -g write 25 0
# Enable SPI flash "WP" mode
gpio -g mode 24 out
gpio -g write 24 1
# Put FPGA into reset
gpio -g mode 27 out
gpio -g write 27 0
# Monitor the C_DONE pin
gpio -g mode 17 in
gpio -g read 17 # Goes 1 when programming is done

Fomu EVT1