Fear of missing out on FPGAs? You tried several times in the past but was unable to get into it? Rejoice! For only $50 you now have another chance to hustle your way to success. Indeed, with the FOMU, no need to invest in expensive development kits, to dedicate a Linux workstation to the cause, to install humongous development tool chains, and of course, to wait until your brain is ready to speak HDL before you can use your new toy for anything else! The FOMU allows all this, and the cherry on the cake, it is also the smallest FPGA devkit I’ve ever played with. Check-out the pictures and videos to convince yourself.
On this Lilliputian four-layer PCB (13 mm long), there is a Lattice iCE40UP5K FPGA @ 48 MHz (5 LUTs and DSP tiles), 128 KB of RAM, 1 MB SPI flash, an RGB LED, four capacitive touch buttons, and of course, a USB 2.0 (12 Mbps) interface. The kit – I should say dongle – comes with a clear protective case (maybe an accessory that I bought separately, I can’t remember) that eases the removal from the USB port (you may also want to grow some nails, it will help). Before diving into the FPGA dev aspects, let’s see what you can do with the FOMU without HDL.
First, you can flash a version (1.10-308) of MicroPython and do your python-ny stuff, since it is a must-have these days. Are you wondering what is running the interpreter? The other cool things you can play with on the FOMU, a RISC-V softcore (VexRiscv – A FPGA friendly 32-bit RISC-V CPU implementation). And do that in C/C++, please. This core is what comes pre-flashed, nothing prevents using and running other soft cores, or even better, create our own ISA and implement it! An intermediate step is to create plugins for VexRiscv to add new instructions. I find this approach a tad more concrete than using PIN tools for example (A Dynamic Binary Instrumentation Tool).
So, I wrote in the intro that you won’t need a humongous pile of software to do a “hello world”? Although nothing prevents you from doing so, if it is your thing (just get to Lattice Semiconductor website and knock yourself out), but nothing forces you to! Indeed, a single ~350 MB zip file suffice (fomu-toolchain-1.5.6 for the Windows version – macOS and Linux versions are also available). And the setup? Just add the bin folder to your PATH. Compare that to literally hours of SW installation! That’s all you need. Of course, the HW is open source as well as the dev chain: yosys synthesizer, nextpn placer & router, dfu bootloader, riscv-gcc compiler (with gdb debugger), and wishbone the debug bus of FOMU. Overall, the FOMU is an elegant HW and SW stack.
By the way, wondering what FOMU stands for? It comes from TOMU (Tim’s Open Micro USB) and is the FPGA TOMU. Other variations are available. SOMU (Security TOMU), FEMU (Femto ESP32 TOMU), WOMU (Wireless TOMU), and BOMU (Bluetooth TOMU). Check them out on tomu.im.
As I hope to pop projects form the to-do stack, I will see if the FOMU could handle the rocket stabilization algorithm. If so, it would be a fantastic little board to shoot up in the air, along with the – now not so small anymore – TinyDuino stack (I added some pictures and a video as a reference).
To conclude, is there anything wrong with the FOMU? I would say its size! Especially when you do not use it, store it away in a big bag or box, and label it. Otherwise, you may not find it again…