The Fomu EVT board

You have a Fomu EVT and want to know what the board is. Its pins are on Fomu EVT specifications. How a design reaches it is on Programming a Fomu EVT. Its wires to the Pi are on Fomu EVT wiring to a Raspberry Pi.

The Fomu is a tiny FPGA board that fits inside a USB Type-A port, designed by the Fomu project. The EVT (Engineering Validation Test) revision is the one used in the fpgas.online test infrastructure. It is built around a Lattice iCE40UP5K with native USB. The FPGA has dedicated USB I/O pins, so there is no external PHY and no FTDI. The board therefore enumerates as a USB device by itself, and it is programmed over USB DFU rather than over JTAG.

Figure to come

The whole Fomu EVT, top and bottom, with the USB contacts, the RGB LED, the touch pads, the PMOD pads and the debug header marked. Tracked in docs issue #140.

How it sits on its Raspberry Pi

The Fomu EVT connects to the Pi in two ways. The first is the GPIO header: the Fomu sits on the Pi’s 40-pin header, which carries reset, CDONE, the SPI flash and the UART. The second is USB: the Fomu’s USB-A connector plugs into the Pi’s USB port, through an inline USB analyser when one is fitted.

The USB interface is live only when the DFU bootloader or a USB-enabled bitstream is loaded. The custom test bitstreams (UART echo, GPIO loopback) do not include USB, so the Fomu disappears from USB after programming. That is expected, not a fault. The board then has no USB serial device. It does have a serial port: two pins on the GPIO header, opened as /dev/serial0 on the Pi.

The board documentation treats the serial port as a debugging extra, on the grounds that USB (CDC-ACM or DFU) is the Fomu’s primary channel. That is not how fpgas.online uses it. The reasons are on Programming a Fomu EVT.