The Ultra-Compact FPGA for Embedded Systems
Fomu, a new FPGA development board, redefines portability and accessibility for hardware engineers and hobbyists. This credit-card-sized (actually smaller) device is designed to plug directly into a standard USB-A port, eliminating the need for bulky development setups or external power supplies for many use cases. Its compact form factor and USB integration make it an ideal candidate for embedded systems, rapid prototyping, and even wearable technology where space is at a premium.
The project, originating from Sutajio Kosagi, aims to democratize FPGA development by offering a low-cost, readily available, and easy-to-integrate platform. Unlike traditional FPGA development boards that often require a dedicated power supply, a JTAG programmer, and a host PC connection via USB-UART or Ethernet, Fomu simplifies the entire workflow. You simply plug it in, and it enumerates as a USB device, ready to be programmed and interacted with.
Core Technology and Capabilities
At the heart of Fomu is a Lattice iCE40UP5K FPGA. This particular chip is chosen for its balance of features, low power consumption, and open-source toolchain support. The iCE40 series is well-regarded in the maker and open-source hardware communities precisely because its design and functionality are well-documented, and tools like Yosys and nextpnr can be used to synthesize and place-and-route designs without proprietary vendor software. This commitment to open-source tooling is a significant aspect of Fomu's appeal.
The FPGA itself offers 5,280 Look-Up Tables (LUTs) and 128 Kbits of RAM, which is substantial enough for a wide range of embedded logic tasks, custom peripheral controllers, and even small digital signal processing applications. It also includes 4 global clocks, 80 user I/Os, and a small internal SRAM. The UP variant of the iCE40 also includes an integrated RISC-V soft core, allowing developers to implement hybrid hardware-software systems directly on the FPGA.
Beyond the FPGA, Fomu integrates a USB 2.0 PHY, enabling it to act as a USB device. This means it can emulate keyboards, mice, serial ports, or even act as a custom USB interface for other hardware. The board also features a small onboard SPI flash memory for configuration data, allowing the FPGA to boot its design upon power-up without needing to be tethered to a host PC for programming each time. This is crucial for standalone embedded applications.
Development Workflow and Toolchain
The development process for Fomu leverages the open-source ecosystem. Developers typically write their hardware designs in Verilog or VHDL. These descriptions are then processed by synthesis tools like Yosys, which translates the hardware description language into a netlist. The next step involves place-and-route tools, such as nextpnr, which map the logic gates to the specific resources available on the Lattice iCE40UP5K FPGA and determine their physical layout on the chip. Finally, a bitstream generator creates the configuration file that is loaded onto the FPGA.
For Fomu, the workflow is further streamlined. Since the board enumerates as a USB device, programming can often be done over a standard USB connection, abstracting away the complexities of JTAG interfaces. The project provides scripts and tools to facilitate this process, making it as simple as running a command in the terminal. This approach significantly lowers the barrier to entry for those new to FPGAs or those accustomed to software development workflows.
The inclusion of a RISC-V soft core on the FPGA itself opens up fascinating possibilities. Developers can run embedded software directly on the FPGA, communicating with custom hardware accelerators or peripherals also implemented on the FPGA. This allows for highly integrated and optimized systems where critical logic runs in hardware and control flow or complex algorithms run in software, all within a single, tiny package.
Target Applications and the Future of Embedded FPGAs
Fomu targets a broad spectrum of applications. Its small size and USB connectivity make it suitable for:
- Custom USB Peripherals: Emulating keyboards, mice, game controllers, or creating unique USB interfaces for specialized equipment.
- Wearable Technology: Integrating complex logic into small form-factor devices where power efficiency and space are critical.
- Educational Tools: Providing an accessible and affordable platform for learning about digital logic design and FPGAs.
- Rapid Prototyping: Quickly testing hardware concepts or custom interface designs without committing to larger, more expensive development boards.
- Security Research: Developing hardware-based security tools or exploring side-channel attacks and mitigations.
The trend towards smaller, more integrated, and more accessible development tools is clear across both software and hardware. Fomu embodies this trend for FPGAs. By combining the flexibility of programmable logic with the ubiquity of USB and the power of open-source tools, Fomu is poised to become a valuable asset for a new generation of hardware creators. It’s less like a traditional development board and more like a programmable silicon chip that you can just plug into your existing computer and start working with, similar to how a new microcontroller might be integrated into a project.
The surprising detail here is not just the size, but the complete abstraction of the FPGA programming process. Traditionally, FPGAs have been seen as complex, requiring specialized knowledge and equipment. Fomu, by leveraging USB enumeration and open-source toolchains, makes FPGA development feel more akin to software development, drastically lowering the barrier to entry for a vast number of potential users.
What remains to be seen is how deeply the community will push the boundaries of what can be achieved with such a small footprint. Will we see complex AI inference engines or advanced communication protocols implemented on Fomu? The potential is certainly there, limited primarily by the FPGA's resources and the developer's ingenuity.
