Skip to content
HN On Hacker News ↗

Fomu

▲ 50 points 7 comments by Bluestein 3d ago HN discussion ↗

Pangram verdict · v3.3

We believe that this entire text is human-written.

0 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 1 of 1
SEGMENTS · AI 0 of 1
WORD COUNT 1,702
PEAK AI % 0% · §1
Analyzed
Sep 4
backend: pangram/v3.3
Segments scanned
1 windows
avg 1702 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 1,702 words · 1 segments analyzed

Human AI-generated
§1 Human · 0%

Sutajio Kosagi RISC-V KiCad An FPGA board that fits inside your USB port $87,732 raised of $10,000 goal 877% Funded! Order Below In stock. Order now, ships within three business days. $50 View Purchasing Options Fomu is the easiest way to get started with FPGA or RISC-V development.Fomu is a programmable FPGA device that fits inside a USB port. It has four buttons, an RGB LED, and an FPGA that is compatible with a fully open source chain and capable of running a RISC-V core. Fomu comes in a custom plastic enclosure that slots perfectly into a USB Type-A port. Python, RISC-V, FPGA, All OpenFomu has PythonWith 128 kilobytes of RAM and a large amount of storage, Fomu is powerful enough to run Python natively. And since it lives in your USB port, installation is super simple. FPGAs are complicated, but the latest Python tools make it easy to use Fomu without any specialized training. Fomu runs RISC-VUnderneath the Python interpreter lies a RISC-V softcore running on the FPGA fabric. RISC-V is an up-and-coming processor architecture that is poised to take over everything from deeply-embedded chips to high-performance computing. Fomu’s RISC-V softcore is a great introduction to the processor architecture of the future. Fomu is an FPGAAn FPGA is a piece of reconfigurable silicon. The default Fomu firmware exposes a USB bootloader running a RISC-V softcore, but you can load whatever you want. Softcores are also available for LM32 and OpenRISC. You can practice adding instructions to the CPU, or add new blocks such as LED blink patterns or better captouch hardware blocks. Fomu is entirely openDeveloping with Fomu is incredibly easy: just load code via USB and go. Whether you’re writing RISC-V code, Python code, or HDL, it’s all uploaded to Fomu in the same way. The ICE40UP5K FPGA is supported with a fully open toolchain, meaning you can start development without creating an account, signing an NDA, or downloading a multi-gigabyte installer. Features & SpecificationsFomu fits entirely inside a standard USB Type-A slot, except for a small area that pokes out to give you access to four copper pads. There is one RGB LED that lights up the case and is fully user-controllable. The main chip is an FPGA with about 5000 LUTs, enough for a CPU with some room left over. FPGA: Lattice ICE40UP5K Speed: 48 MHz external oscillator RAM: 128 kB RAM for a soft CPU¹ Storage: 1 MB SPI flash² Connectivity: USB 2.0 FS (12 Mbps) Buttons: Four³ LEDs: One RGB ¹: The FPGA has 1024 kilo-bits of memory available. A separate block of memory is used for things like the processor register file, in addition to temporary memory for things like USB buffers. The CPU can use 64 or 128 kilobytes of memory, depending on configuration. ²: This is the minimum configuration amount — more may be available in the final version. ³: Fomu has four copper pads near the edge. We have not yet validated any capacitive touch solutions. Comparisons Fomu TomuICEBreakerTinyFPGA BX Source PCBYes Yes Yes Yes CaseYes Yes No No BootloaderYes Yes N/AYes Physical InputsFour pads Two padsFour buttonsOne reset OutputsOne RGB LED Two LEDs Five LEDs None GPIONone None 27 + 7 41 Fits in USB portYes Yes No No USB interfaceSoftcore Built-in FTDI Softcore Specs Main chipICE40UP5K EFM32HG309ICE40UP5KICE40LP8K RAM128 kB 8 kB 128 kB 16 kB Flash2 MB 64 kB 16 MB 1 MB LUTs5280 N/A5280 7680 Clock48 MHz crystal N/A12 MHz MEMS16 MHz MEMS Fomu is great for having convenient access to an FPGA that fits in your USB port. If you want a development board with lots of pins, you should check out one of the other ICE40 development boards available! Why FPGA?An FPGA is an Array of Gates that is Field-Programmable. When you buy a chip such as a CPU, the logic cells are all fixed in place. A CPU can run any amount of code, but if you want to do anything exotic you need to create software and, depending on what you want to do, that software can be very slow. For example, many embedded projects use WS2812 LEDs such as NeoPixels that require a specialized timing signal. A CPU can generate this signal in software, but it can’t do anything in the background while talking to the light. If the string of LEDs is very long, then the CPU wastes a lot of time and power generating the signal. With an FPGA, it becomes possible to create an "LED driver" that allows the CPU to keep running while a hardware component handles the timing. The CPU could do other work, or could put itself in a low power state. In fact, the "CPU" in the FPGA is created from a hardware description language, meaning it can be modified or swapped out. If you wanted, you could create a brand-new CPU instruction. Do you want to have fast 64-bit multiplies? Or maybe you want a way to get random numbers easily? With Fomu and its FPGA, you have the source code to the CPU itself. FPGA DevelopmentFPGAs are very specialized pieces of hardware, and, until recently, the development tools have been very closed. They usually require you to sign a non-disclosure agreement and then download a very, very large toolchain — usually well over 5 GB. Furthermore, because the toolchain was developed by the same company that sells FPGAs, they don’t have an incentive to make the synthesis efficient, because an inefficient toolchain means you must buy a larger FPGA, which earns them more money. Thanks to several projects, the FPGA used in Fomu is fully open source. The company that makes the FPGA — Lattice — freely provides the datasheet and reference manual. And thanks to projects such as Yosys, IceStorm, and nextpnr, a fully open toolchain is now available. This toolchain can be downloaded and shared freely, and each individual component is open source. This greatly simplifies setup, because you don’t have to create an account on the vendor’s site, sign an NDA, or set up a license server. Fomu uses advanced, four-layer, blind-buried-via technology on the circuit board, which means it is difficult to manufacture in small quantities. In order to bring Fomu to the community, we have developed two versions of the PCB that are easier to manufacture: Hacker VersionThe Hacker Version of Fomu was designed with 4/4 design rules on a two-layer PCB, and uses an unusual footprint for the main FPGA. Additionally, it uses a very particular SPI flash. These boards have been hand-assembled, but, due to the finicky nature of WLCSP balls, this board might not be reliable over the long term, and it may be extra susceptible to mechanical stress. We won’t be selling any Hacker Version boards, but if you want to build your own Fomu and you’re comfortable with soldering very small components, you might give the Hacker Version a try. Fomu EVT This is the first iteration of the modern version of Fomu. It is a "stretch" board, and was designed to test various assumptions such as SPI programming, crystal-versus-MEMS component selection, and regulator selection. It is designed to mate with a Raspberry Pi to allow for rapid application development and debugging. A small number of these boards will be made available to interested customers, but we recommend users wanting full-sized FPGA boards consult TinyFPGA. Fomu EVT was designed using 6/6 design rules on a standard two-layer PCB. It should be possible to produce at any PCB shop. Furthermore, while Fomu EVT includes many extra capacitors, most are not necessary, and may be removed to simplify assembly. Fomu and TomuFomu builds on the great Tomu community. Everyone loves having a computer in their USB port, and now they can have an FPGA in there as well. Announcement mailing list: a low-traffic list for announcements Discussion mailing list: a list for discussing development, new features, etc. IRC Channel - irc://irc.freenode.net/#tomu: live chat for discussing anything related to the project We designed Fomu to be as open as possible. So, even if Fomu doesn’t quite do what you’d like out of the box, it’s possible to modify it to meet your needs: GitHub repos Project site Hardware design Special ThanksThese people helped out: Tim Ansell -- Initial Tomu design, and creator of the Tomu project. Luke Valenty -- Initial schematics and USB FPGA bootloader. If you need a tiny FPGA for development with lots of available I/O pins, check out TinyFPGA. Without help from these people and countless others in the community, Fomu would not be possible at all. Thank you to everyone who has helped out so far. Manufacturing PlanWe will manufacture Fomu in China. One of the design goals of Tomu was to keep the part count low. Unfortunately, that was not possible with Fomu. This board has more components, and, as a result, those components will need to be smaller. To fit everything together, we will need to use a fancier PCB. Unlike Tomu, Fomu will require a crystal, external storage, and three separate voltage regulators, and FPGAs as a rule require a lot of decoupling capacitors. This increase in components means the design is more complex, so we will take a more rigorous approach to design. Iterative Design Process: EVT, DVT, PVTFomu is following a traditional three-cycle approach: Engineering, Design, and Production Validation and Testing, known as EVT, DVT, and PVT. An EVT board makes sure that the schematic is correct, and generally doesn’t short out or get overly warm. An EVT board ensures that the pins do what you expect them to do, and allows you to evaluate the components and make good part choices. A DVT board ensures the design is sound. This is where you shrink the board and make sure it can actually fit in the required space. You use DVT boards to design the case. There may be many changes in between EVT and DVT. Fomu PCB kicad Finally, a PVT board is what you go to production with. Ideally, DVT and PVT are identical, but in practice there are usually a few changes. Maybe you increase the size of a cutout, or rearrange the pads slightly, as we did with Tomu. A PVT board is considered "done."