The Perfect Storm: Open ARM + FPGA Board

Playing around with FPGAs used to be a daunting prospect. You had to fork out a hundred bucks or so for a development kit, sign the Devil’s bargain to get your hands on a toolchain, and only then can you start learning. In the last few years, a number of forces have converged to bring the FPGA experience within the reach of even the cheapest and most principled open-source hacker.

[Ken Boak] and [Alan Wood] put together a no-nonsense FPGA board with the goal of getting the price under $30. They basically took a Lattice iCE40HX4K, an STMF103 ARM Cortex-M3 microcontroller, some SRAM, and put it all together on a single board.

The Lattice part is a natural choice because the IceStorm project created a full open-source toolchain for it. (Watch [Clifford Wolf]’s presentation). The ARM chip is there to load the bitstream into the FPGA on boot up, and also brings USB connectivity, ADC pins, and other peripherals into the mix. There’s enough RAM on board to get a lot done, and between the ARM and FPGA, there’s more GPIO pins than we can count.

Modeling an open processor core? Sure. High-speed digital signal capture? Why not. It even connects to a Raspberry Pi, so you could use the whole affair as a high-speed peripheral. With so much flexibility, there’s very little that you couldn’t do with this thing. The trick is going to be taming the beast. And that’s where you come in.

52 thoughts on “The Perfect Storm: Open ARM + FPGA Board

  1. Wow, did this spark my interest … and then I read about a Raspberry Pi Zero Stock.

    Pro tip, if you want to completely kill a product before it even gets of the ground then just associate it with a Raspberry Pi Zero Stock!!!!

    I didn’t read anything past Raspberry Pi Zero Stock. Bye!

    1. Wow, did this spark my interest, until you started shitposting about Raspberry Pi.

      Pro tip, if you want to shitpost about Raspberry Pi, do it on an article that ACTUALLY MENTIONS A RASPBERRY PI. Bye!

        1. Ironically you shoot off your mouth about “my opinion” before you even bother to read the linked article and get your facts wrong!

          Well I am entitled to my opinion and no amount of your ranting is going to change that.

          It *is associated with* the Raspberry Pi Zero Stock as it mentioned in the article. Unlike you country (probably US) most of the rest of the world sees the Raspberry Pi Zero Stock as a shit piece of crap that has been far over-marketed, is never (or has never been) available (Zero Stock) at the closest official distributor but you can buy it from overseas for and extra $80 postage. What dumb ass would pay close to $100 for that crap when there are a gazillion alternates that ARE cheap and most importantly ARE available.

          So for the rest of the world – and believe me, you are the minority here – it goes Raspberry Pi Close window.

          So please do protest about my opinion again and give me the opportunity to add some more “Raspberry Pi Zero Stock” tags. Some day you may even realize that the rest of the world may – in fact – be different to where you live.

    2. I don’t know what everyone’s problem is, I have 5 Pi Zeros, and I could bought about 3 more if I wanted to.
      Plus they are/have made more by now anyway, just sign up at different online stores and get notifications when they come in…Pretty Fricken Simple!

        1. I want to get a number of Pi Zero boards (not packed with extra unwanted stuff) but as they are only available one per order and I live in Australia, the postage for each board makes them more expensive than I can by a “normal” Raspberry Pi here, so I agree with those who “whine” about not being able to get them. Count yourselves lucky you can get them at a good price. Most of the rest of the world can not.

      1. How about a page for people who can get Pi Zeros easily, to arrange to get them for people who can’t? Just for us, like, don’t mention it to other groups or it’ll become useless.

    3. Raspberry Pi Zero! That has scared off RÖB. For everybody else, the Pi 40 pin expansion connector is the same so you can just use a Pi A+, B+, 2 or 3 instead of the Pi Zero. You can probably use it with the other boards that claim compatibility with the Raspberry Pi expansion connector.

  2. Hi Rob

    Just to let you know myStorm is not tied to RPi or RPi Zero, it operates standalone by just plugging into a laptop or PC via USB (this is how we are using it right now for development). The Raspberry pi connector can optionally house a Pi Zero for a compact solution or just connect to any Raspberry pi via a 40pin IDC it’s really up to you how you configure it, depending on your needs.

    1. Why have you used this particular M3 part? A friend commented that it would of been better to use say an interface to a generic ARM based Arduino. I can see their point, I was wondering if you have a specific project in mind for this board ?

      1. You might want to take a look at “A Strom in a Pint Pot” which is a follow on (part 2) to “The Perfect Storm”, the link is at the end of the original post. Here you will see what our thinking was in a bit more depth, enjoy…

    2. This project looks excellent but it has been regionalized by the PI connector. The Raspberry PI is *NOT* an international product they have cherry picked their markets and ignored most of the planet. Americans just don’t get that, just as they don’t get that HAD is an international site! And get this – I can buy approximately $200 worth of AMERICAN chips with FREE SHIPPING from CHINA for cost of SHIPPING ONE CHIP from America.

      So your product as excellent as it is, has a whopping great 40 pin connector that on first reading seems like it’s totally useless on most of the planet. On first perusing it even seemed that the mystorm was dependent on having a PI. And that was only after you responded and I went back to the page because the first time I went to the page it was literally “Raspberry Pi – Close Browser Tab”

      The ‘duino connector may be it’s saver but that’s still (assuming) a lot of IO that has been wasted.

      I would like to assume that the 40 pin connector can actually be useful if it has FPGA GPIO but I would expect that it is mostly going to the micro-controller.

      I really like that it has (at least provision for) SRAM and not SDRAM or DDR.

      I use both the Altera and Zilinx ISE/IDE’s and I would love to try something different especially if it is open source. I have been watching the icestorm project develop.

      What I didn’t find info on was what size the FPGA in LUTs Gates LE’s or whatever string Lattice uses as a metric.

      A basic bus diagram would be great to.

      Someone mentioned that an external FLASH would allow you to choose the bit stream at runtime. Some of the newer FPGAs will allow a partial bitstream load that then will choose a bitstream at runtime for the rest of the FPGA. I haven’t used any of those yet but I can definitely see it will have advantages. Perhaps a flash chip can hang off the 40 pin port?

      1. PS: I was wondering if the ‘duino connector is configure more to be plugged into a ‘duino or if it is equaly capable of hosting ‘duino like shield. I can see people wanting to use this as an analyzer / scope (with SRAM fitted) so a plug in shield with some signal conditioning and ADC would be wanted. Then plug in a small touch LCD screen and you have a pocket version.

        Also with the SRAM, it could be used as a video shield and GPU for even a ‘duino. It would be capable of VGA / HDMI easily. Some DAC and you have a synthesizer / music box / mp3 thingy. All depending on the size of the FPGA of course.

      2. I didn’t realize there was a ‘Page 2’ so I am reading that now.

        I have to mention that this is the first time I have seen someone using a ” 8-bit communications bust” lol

      3. Rob,

        Thankyou for your comments regarding the Raspberry Pi .

        Raspberry Pi has shipped more than 10 million units since Spring 2012, making it one of the largest volume suppliers of computers ever in the last 70 years history of computing

        The temporary low availability of the Pi Zero was a result of competing for factory assembly time with the new Pi 3 which was launched earlier this year.

        In March, they were operating out of one factor in South Wales – and the new Pi 3 took priority over the Pi Zero. Until new production capacity was made available, shortages of the Pi Zero were inevitable.

        Eben Upton recently made a presentation to a packed audience of entrepreneurs in South London, and fully explained and apologised for the poor supply situation.

        This hiccup in the supply chain is now generally solved, and more volume of PI Zeros will start to become available – regardless of what country you live in.

        When any product is in short supply, and demand outstrips supply, then market forces will naturally move to increase the price. Perhaps you might consider the mania over Tulip Bulbs in 1637 as an example of market forces.

        The $80 shipping costs that you claim are more likely down to underhand tactics by certain unauthorised dealers – rather than the Raspberry Pi Foundation having a policy of restricting the product to overseas markets.

        If it’s any consolation we are also actively looking at other Linux SBCs to provide the tool hosting for this board, including Oakland’s finest $9 CHIP and the currently Kickstarting Omega2 – both of which are under $10.

        1. This is typical of the marketing crap that has surrounded the Raspberry Pi Zero Stock from the beginning. What a crock of sh!t. My regional “official supplier” has never stocked a single board. They don’t even list it on their website and I expect they removed from their site because they got sick of the complaints about Raspberry Pi Zero Stock.

          This has come up several times here on HAD and I suggest you go do some reading if you think that responding to me is going to change anything because there is a very large and growing group of people who are sick to death of hearing about the Raspberry Pi Zero Stock.

          The marketing has been so poorly handled that the issue is and has been polarizing people. Do you understand exactly what that means!

          As for the psittacism above – well expect that I any many others will completely ignore it.

          I could wait and see if my “official supplier” ever gets stock but I have completely lost all faith in anything that has Raspberry Pi in the title now.

          Raspberry Pi Zero Stock.

          Raspberry Pi Zero Stock.

      4. Thanks Rob just to clarify there are 12 Pins on the Raspberry Pi GPIO header that are also connected to the Arm Cortex M3 and can be used by either MCU to communicate with the FPGA organised as a bus (not bust sorry corrected that!). Alternatively these can also be used as general purpose pins from the FPGA by using plugging a board or jumpers into the afore mentioned 40 pin connector. Nobody is forcing you to use a Raspberry Pi, You could use a beagle bone Black, an Olinuxuino or an Orange Pi if you like, just connect it up as required, you could just use it stand alone if you like, given your background and experience this will be trivial I am sure. Hope this helps

  3. Like most of you as soon as I heard them say PI 0. BAW…. I have not been able to get a PI 0 down to anything close to $35 with chipping and as high as $65.
    BUT what about a Orange PI would it work? That is a hell of a lot cheaper then a PI 0. I can get a Orange for $12 with Shipping.
    Would any of you think it would work?

      1. I have a few of them but this checking of suppliers or joining lists is a PITA especially for non UK residents.
        The postage is basically almost the same cost as the PiZero

  4. I just got hold of a numato mimas board, which looks like it is pretty much the same thing as the board in this article — but it has the benefit of having a bunch of expansion boards available off the shelf (hdmi, ethernet etc.) Whichever route you go, it’s fascinating stuff and quite a steep learning curve. has a rather good free vhdl book, although it doesn’t go quite far enough in terms of showing how to put together a complete project (I’m not sure about the whole scraping of either, but they seem to have good intentions).

    1. You’re comparing apples and oranges, and you ought to take a closer look.

      The numato mimas board is a Spartan6. This requires one use Xilinx ISE (about 6GiB, only works on x86 32/64 Linux or Windows) which is a fairly horrible experience, especially for a new user, being overly complicated to set up and use.

      It fights you all the way, but it is possible to get very good results with this.

      I don’t mean to knock the Spartan6 any: they are great chips, generally bigger and much more capable FPGA’s compared to the ice40’s. They have DSP hardware and embedded autorefreshing SDRAM controllers which are good for up to DDR2 at least, and some even have gigabit SERDES. None of which the ice40’s have.
      I have at least half a dozen Spartan6’s about.

      But they are very technical to use.

      The article is about a board using a ice40hx4k, which is of the series (SiliconBlue ice40, now owned by Lattice) which has a completely open-source toolchain which will run on, among other things, the aforementioned RaspberryPi Zero.

      It’s also comparitively trivial to install and start using. It’s only about 300 MB installed, and it’s only FPGA toolchain I know of that can be run natively on Mac OS X as well as 32 OR 64 bit ARM Linux.

      You really need at least 1 GiB of ram to build it in place though – or else you’ll need to dip into swap. But builds for the ice40hx8k only seem to take around 300 MiB of ram maximum, so should work fairly well on the RasPI 0.

      It’s a very different ballgame compared to trying to get ISE to run a build via a makefile.
      (In particular, generating cores in ISE is a pain – the tcl script approach works best for regenerating them, but you still need to run the GUI wizard at least once to generate the cores the first time).

      A very big point to watch out for however, is that the icestorm toolchain **does not support VHDL**.

      Unlike ISE, which can mix and match either, noone’s ante’d up the effort to give yosys VHDL support yet, so Verilog it is.

      IMHO this isn’t that much of an issue – if you’re a professional, you know and use both languages anyway, and if you’re just learning FPGA’s you’ll probably find verilog less anal-retentive to learn, being much closer to a C like language (but for curly brackets having a completely different – and very useful – meaning). VHDL was designed by committee – and it shows.

      But anyway, the point is that having icestorm means that setup is as trivial as a `sudo apt install …` line copy-pasted from the web, followed by `git clone` of three projects from GitHub, and then just `make && sudo make install` as many times.

      This is relatively painless compared to the ISE 14.7 install, which requires esoteric tweaks to be able to run at all, and which is so bloated that even Xilinx have decided to depreciate the whole thing. They’d prefer you to buy an Artix series FPGA instead, and use VIvado, their new heavyweight FPGA IDE built around eclipse.

      But AFAIK, VIvado doesn’t install to arm yet either.

      Having the tools on an embedded arm means one can also throw the standalone version of [cloud9](, and then you’re all set to point your browser at it and have a complete IDE with terminals and git integration running from anywhere, Internet connection or not.

      With the Pi 0 attached, this means an FPGA board which one can connect to and work with given merely a smartphone or tablet, no other hardware or software setup required, and that is a *huge* game changer.

      It means embedded systems done this way can host their own documentation and indeed complete build environment – making them very “repair friendly”, whoever’s they end up belonging to down the track.

      Contrast this with the average embedded controller board: if it’s deployed in something, you can pretty much guarantee that you won’t be doing any “repair” on it, even if it’s an Arduino or other open source thing, because you are SOL without the source code. And for some micro’s, without a licensed installation of the correct toolchain too.

      Sorry if I’m being a bit ranty, but this a very under appreciated piece of technology, and I believe that Clifford Wolf and “cottonseed” will rightfully have their names in history alongside RMS and Linus Torvalds.

  5. I’m very pleased to see what projects have come to fruition because of project IceStorm. I will definitely be picking up one or two of these boards whenever they become available (and probably build one myself when it is open-sourced). Excellent work!

  6. We hope to have myStorm boards available for sale in approximately 6 weeks time. The myStorm will be making it’s debut at the Open Source Hardware Camp (OSHCAMP) in Hebden Bridge, Yorkshire, over the weekend of 3/4 September.

  7. Would vote for a beefy QSPI flash chip onboard. Keeping bitstream in MCU’s flash is not the best option IMO. With external SPI flash you can have several bitstreams ready and the micro could load them to the FPGA according to the program’s needs. Would be pretty flexible.

    1. True but if you are connecting to the PI or similar you could just have a default image then load one from the PI saving you the hassle of storing it somewhere else

  8. @folknology could the FPGA be used to process a video stream?

    I’m thinking specifically about VGA or HDMI input, even if it is low frame rate. That is, handle the full frame rate of the video as generated by the source, and export a frame periodically (where periodically may be 1Hz, for instance).

        1. I thought you were talking about inputting VGA, outputting is fine at low resolutions using a ladder, I am actually working on an adaptor for myStorm for this along with PS/2 input that fits to the RGB array header.

        2. This table is scarier than the realities. With FPGA you only need to worry about the max clock rate. You have three channels for data (RGB) so divide Gb/s by three to start with. Obviously you are not going to get the highest clock rates without a very fast chip unless you have an external PISO register or a HDMI support chip but the lower rates are fine and if you are mentioning VGA then I assume that you would be quite happy with the lower HDMI resolutions.

          As for LVDS – some FPGA chips have LVDS inputs, any chip can generate LVDS. If you want VGA *input* then you will need some fast ADC or lots of GPIO pins for 3 R2R ladders.

Leave a 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.