ICEBlaster: A Drag’n’Drop Bitstream Loader For ICE40

The iCE40 series of FPGAs gets a fair bit of coverage on these pages, largely due to its accessibility (thanks to huge efforts in reverse engineering and open tool chains) and likely also due to Lattice Semiconductors’ attitude to open source in general. Whilst these devices are small and rather limited, you can’t really beat them for a first foray into the subject. They’re plenty beefy enough for many of the simpler FPGA applications. [TinLethax] over on Hackaday.IO has plenty of experience with the devices, and has added another tool to our collective iCE40 arsenal, namely iCEBlaster, a USB mass storage device (MSC) style bootloader for drag-n-drop bitstream loading. The days of needing dedicated special programmers are starting to be numbered, with many chips now presenting a USB mass storage device to the host in order to upload the firmware image.

FPGAs don’t tend to operate this way, needing a device-specific bitstream loading upon start-up, which (unless they have OTP memory) is usually the job of an external configuration memory. iCEBlaster (a play on the Xilinx ByteBlaster programmer, maybe?) runs on the STM32F4xx series devices at least, but should be easily portable to others. The idea is pretty straightforward — dragging a new bitstream file onto the storage device initiates an FPGA target reset, which in turn allows the STM32 to send the bitstream over to the iCE40 via the SPI interface. Nothing more than that.

If you’ve been looking to get into the iCE40, this guide might be a good starting point, and every learning experience needs a good project to drive it, how about running Doom on a softcore RISC-V?

10 thoughts on “ICEBlaster: A Drag’n’Drop Bitstream Loader For ICE40

    1. Recursive programmers are the worst of all tools. I still remember how I wanted to program an AT89C2051 microcontroller but the problem was that all open-source programmers required a programmed microcontroller, the same one, meant I could not program it. I was a kid with no credit card to buy a preprogrammed chip from anywhere or a real programmer.
      Let’s think – you want to program iCE40, but programmers which are sold, are expensive. The cheap one requires you to have the expensive one to make the cheap one. Catch 22.

    1. You can have a nice and not so crazy (~1k LUTs) FPGA dev board for just $10 (Gowin FPGA on Tang nano 1k). I built my own breakout board for iCE40LP1K-CM36 bacl in April this year(the one in the picture above, iCEHAX40 board). Did some design rules violation to get 3.5mil trace with OSHpark 2 layers board. The cost of building that board (3 boards, 3 chips) is less than $20.

        1. But no production grade OSS toolchain …

          The iCE40 OSS toolchain is really good. It’s _still_ missing some stuff but you can still do a lot.
          The one for the GoWin parts is missing some really basic stuff like block ram support last time I checked so it’s really only if you want to work on the toolchain rather than using the device for a serious project.

Leave a Reply to Feinfinger (M-x totally-tame-mode) Cancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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