Fomu

An FPGA board that fits inside your USB port

Jan 07, 2019

Project update 4 of 20

35C3 and Fomu EVT Progress

Hi backers! Welcome to the new year, and a new Fomu update. Thanks to all of you wonderful people, the Fomu campaign is going well. In this update, I’d like to talk about the 35C3 session as well as give a hint about some of the work we’re doing with the EVT boards. There’s less than a month left on the campaign, so let’s get right into it.

35C3 Session

We held a Discussion Session at 35C3 where we talked about Fomu, Tomu, and the uses for an FPGA in your USB port. We’re sorry that the room filled up, and that there wasn’t enough time for a second Session. There were many good questions and ideas, and we’re excited to see such anticipation around Fomu.

Many people want to use Fomu for learning FPGA design, and that’s great! We’re building the Fomu software on top of LiteX and MiGen, which provide a simulation environment for debugging. If you need to get signals in a real device, you can use LiteScope. The 128 kB of RAM in Fomu can be divided in half, so the CPU core will get 64 kB leaving 64 kB for a generous trace buffer.

One of the more interesting ideas was to do static reconfiguration. The FPGA doesn’t allow dynamic reconfiguration, however it does allow for warm booting. You can have up to four configuration images in flash. The first image is the bootloader, but the other three can be anything you want. That means you can do something crazy like have a RISC-V CPU in configuration 2 and an LM32 CPU in configuration 3, and you can swap between them. Even cooler, you can leave stuff in RAM to pass between the two configurations. It’s an intricate dance, and it will be interesting to see what people do with it.

There are lots of really good ideas out there, and we can’t wait to see what you do with Fomu when we ship. Thank you again to everyone who showed up to the session at 35C3! If you couldn’t make it to the session, you can find us on IRC in #fomu where we’re more than happy to answer questions.

Fomu EVT Board Progress

Manufacturing electronics usually goes in three steps: EVT, DVT, and PVT. EVT boards are the first version you build, and while they share a schematic with later revisions they frequently look nothing like the final version. EVT boards let you check that your schematic is good, while still giving you lots of options in case there are errors.

In programming, you have "debug" builds and "release" builds. You can debug a release build, but it’s much more obnoxious, and you find yourself guessing a lot.

Fomu EVT is a "debug" build.

The first version had a few critical bugs, such as an incorrect crystal footprint and a SPI footprint that was too small. The second version fixed these issues, and is very usable. The third version just adds an extra PMOD connector and rearranges some pins for I2C support. Backers who selected "Fomu EVT" will get this third version when it ships at the end of the campaign.

Now that the hardware has been debugged and the schematic/footprints are validated, it’s time to debug the firmware.

Fomu EVT was designed to run in one of two configurations: As a Raspberry Pi hat, or as a standalone USB device. These two modes are mostly mutually-exclusive, so the user must choose one or the other.

In its Hat configuration, Fomu is controlled completely by the Raspberry Pi. This can be used to quickly load new firmware, and the extra data pins can be used to communicate status back to the Raspberry Pi. Additionally, the FPGA connects to the serial pins on the Pi, allowing you to communicate with a softcore via a command line. This is how we will develop the USB firmware using a special loopback cable and a logic analyzer.

The other configuration is a USB device, which is designed to let you go "Hey, watch this!" We have two PMOD connectors that you can use for prototyping, one of which should support I2C. In this mode, you burn firmware onto the device using Hat mode, and then disconnect the board and let it run by itself. That way you develop in Hat mode, then untether the board and let it run freely.

One More Thing: PVT boards for EVT Users

The EVT board is used for prototyping firmware and debugging low-level bootloader code, and also for getting early access to the final hardware design. Any firmware you build for EVT should work on a production PVT board, as long as you don’t need any extra pins.

Because of this, we’ve decided to include a PVT board for all backers who have selected an EVT board. If you’ve backed "Fomu EVT", you will receive an EVT board when they ship. You will also receive a PVT board once manufacturing is complete

Keep Spreading the Word!

The Fomu campaign has less than a month to go. Remember that prices will go up once the campaign ends, and we won’t produce any more Fomu EVT boards! Spread the word and tell people the awesomeness that is an FPGA in your USB port.


Sign up to receive future updates for Fomu.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects