How a Microcontroller Hiding in a USB Port Became an FPGA Hiding in the Same

When you think of microcontroller development, you probably picture either a breadboard with a chip or a USB-connected circuit board. But Tim Ansell pictured an ARM dev board that is almost completely hidden inside of a USB port. His talk at the 2018 Hackaday Superconference tells that story and then some. Check out the newly published video, along with more details of the talk, after the break.

Tim is the creator of Tomu, the tiny ARM Cortex M0+ board that we first covered back in January. The board has a Silicon Labs EMF32 on one side, four traces to interface with a USB port on the other, plus two LEDs and two capacitive touch buttons along one edge. This form factor comes from a 2-factor authentication device he found on Amazon — he was intrigued but balked at the price.

Knowing the components for a minuscule Universal 2nd Factor (U2F) device cost very little. He spent a single weekend laying out the circuit board, and after coping with his just-average SMD skills he ended up with some working prototypes. The problem came with actually porting some U2F firmware over to the device. Not having time to sink into that part of the project, he just began giving away as many of these Open Hardware boards as possible and eventually someone wrote the U2F code for it (it was Sergei Glushchenko, here’s the repo).

An FPGA in Your USB Port

Now Tim’s onto the next big thing. He’s adaped the Tomu form factor to an FPGA board called Fomu with an active crowd funding campaign right now. The board will ship with a RISC-V core already loaded that can be programmed using DFU (or possibly mass storage). This is a popular move right now since a lot of people want to play with RISC-V or FPGA and here’s a way to do both without actually having to haul around extra equipment with you.

Some might think: what can you do with an FPGA where it’s kind of hard to connect external circuits? You could practice adding peripherals to RISC-V and other cores, but maybe what you should be thinking is: what could I do with my laptop if I had some dedicated parallel processing available? The board carries a Lattice iCE40UP5K, 1 MB of flash, 128 kB of RAM, runs at 48 MHz, and is compatible with the open source IceStorm toolchain.

Tim’s Supercon talk is below, he’s even made slides for the talk available.

21 thoughts on “How a Microcontroller Hiding in a USB Port Became an FPGA Hiding in the Same

  1. At the risk of challenging the “there are no stupid questions” theory-
    Is the toolchain available for MS Windows, or only Linux?

    Can you set up VMWare [or others] to use a CPU in a USB port?

    1. Besides (1) Lattice’s iCEcube2 toolchain and (2) the open source IceStorm there is a third option: Lattice’s Radiant on Linux and Windows. (Think of it as a modern, diamond like iCEcube2)

    1. Where have you been? There are USB charging cables that have a GSM service in one end and GPS. So you insert a sim card and you can track whoever is using the cable. Looks fairly harmless at first glance.

        1. That page also shows a pet tracker, but it is different from the one I use, my dog has a collar tag with my phone number on it. If he bolts, there is usually a phone call a few minutes later…

  2. Brilliant :-) I have quite a few silabs efm chips in different products and earlier cygnal 8051 series and in many development systems too, good fun. This looks like a nice extension and convenient too. I will be more busy than ever it seems once I get moving on a sixable FPGA front end array sensor project this is a great way to explore various entry points, thanks for post :-)

    Now finding stuff like this (h/w and IDE) for an android Lenovo tablet with only one micro USB port is a bit more challenging, comments invited :D

  3. Aside from just hobbyist stuff what can this FPGA offer? Can it for example rival a $300 Intel chip at something? Cryptographic functions perhaps?

    And will we have full control over the FPGA through the USB port? Remove the RISC5 soft core and replace it with an arbitrary circuit?

  4. Trouble is how change firmware.
    For example i create a OTP program on this device and EVERY computer can change my firmware. This is not secure device, no have any phisical switch to change firmware

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.