Cheap FPGA Board Roundup

There’s never been a better time to get into using FPGAs. Nearly all vendors have some level of free software and while boards haven’t gotten as cheap as ones with microcontrollers, the prices are way down. [Joel Williams] was frustrated when his board of choice became unavailable, so he decided to compile data on as many cheap boards as he could.

[Joel] covers the major vendors like Intel and Altera. But he also includes information on Actel, Cypress, and Lattice. While the list probably isn’t comprehensive, it is a lot of information about many popular boards. The notes are helpful and point out oddities about the boards in many cases.

We didn’t see our favorite — the Lattice iCeStick — on the list. But there were some boards in the $10 range including the UPDuino, which looks like fun and will stack with an Arduino Nano or Pro. We also saw another of our favorites, the MAX1000 board which is a great little low-cost board.

We liked [Joel’s] comments about not worrying too much about the things you could add easily like serial memory and character LCDs. He suggests you worry more about things that you want that would be hard for you to add yourself, such as an Ethernet port, or HDMI. The list was updated a few months ago and we hope [Joel] will continue to maintain it. He does solicit suggestions.

If you are interested in learning about FPGAs, we have a set of boot camps for you at Hackaday.io, that you might like to check out.

24 thoughts on “Cheap FPGA Board Roundup

  1. I’ve been interested into getting into FPGAs for a while, but have never had a use case for them. Most of the embedded projects I work on can either be solved by microcontrollers for low-level stuff, or by a desktop (or raspberry pi, even) for the higher level stuff.

    I’m building a room mapping robot at the moment, and was wondering if I could implement the SLAM processing in an FPGA. That could be a good project to dive in!

    Are there any other “mainstream” uses for FPGAs besides DSP and video processing?

    1. Sure, high speed data acquisition (think oscilloscopes and that sort), motion control, various number crunching stuff, test and measurement (other than DSP, think data analysis), networking, high performance computing…

    2. Hard real-time anything. Validating a CPU-based solution to a hard real-time problem is possible, but difficult. If you need a lot of processing, you have to deal with unpredictable cache latency, branch prediction, interrupt response, and the like.

      None of those apply to an FPGA, and you can perform multiple real-time operations completely in parallel without any risk of them interfering with each other, and you never have to count cycles or pin pages to the L1 cache or the like.

    3. Intel has made a lot of effort to setup their FPGA software and hardware as OpenCL accelerators. I’m pretty sure Xilinx has as well. This does mean it still lends itself towards DSP and video processing but would also help with any properly parallelized workload that can be any combination of DSP as well as any computational workload and I/O of a microcontroller.

      I’ve played around with near real time sensor inputs for a drone control unit myself and a few friends had planned. We were able to get the drone to self balance and avoid obstacles indoors using IR sensors and accelerators, dam shame in our outdoor test it took off and just flew the fuck away, it did avoid the trees while running away from us. (we suspected that the GPS system stopped working or has a bug so it ended up having no reference points to follow the course we planned).

      As for “mainstream” well not really, not yet anyway. Were getting close but I suspect the nearest mainstream application will be ARM SOC’s powering a single board computer with FPGA functionality for I/O and processing acceleration (OpenCL as I mentioned earlier). Both Xilinx and Intel have “hard/soft” core processors, on the “hard” side you’ve got an ARM soc that offers you a single board computer experiance not unlike Raspberry Pi and on the “soft” side you have an FPGA capable of being slaved to the ARM side or being a stand alone FPGA.

  2. Tons… here’s one vendor’s list: https://www.xilinx.com/applications.html

    Here’s the thing. First, almost anything can be done with anything — it is a matter of how hard and how well. Clearly you don’t have to use FPGAs to do DSP, but you can get great speed out of it, for example. A lot of projects you see on the Internet are not necessarily good uses for an FPGA but they can be educational anyway.

    What’s odd, though, to me is that FPGAs get used different ways by different people. So one sector includes the people who need to do lots of parallel processing like — as you say — DSP or video or high speed networking. Some people want to build custom CPU architectures because they can do great code if they have, say, a fast butterfly instruction for FFT or whatever. This has somewhat been subsumed by mainstream processors having multiple execution capability (think ARM NEON, for example or MMX). Then there is another class where I just want a processor with custom I/O. Either the I/O combination isn’t available on a regular chip or I want one part number that can be reconfigured for lots of things. So I’ll get an FPGA with a processor (e.g., Zynq) or I will put a processor in the FPGA fabric. Then I’ll add whatever I want… PWM, UARTs, NICs, etc in the rest of the fabric. I might not even write it, I might just buy “IP” and compose a system — this is a very common use case. Custom SoC. Another use is for reconfigurable computing, an area I think we have a long way to go in. So I might configure my FPGA one way to collect data and then reconfigure part of it to send that data somwhere every 12 hours.

    There are probably other ways, too.

    1. Agreed – the purpose of an FPGA is to give the designer ultimate freedom in silicon without necessarily accessing a wafer-fab plant.
      Yes, they could just drag and drop the core IP’s to make something but they can also revise and update their “hardware” with software updates. If an IP core does not work then it could either be altered or replaced with something else.
      If you use a microcontroller (and upwards) then you have the (probably small) risk that the design you are trying to achieve could be affected by a hardware/mask problem or something similar and you would have to either wait for a workaround, replacement part or use completely different component altogether.

    2. One of the funnier applications I’ve seen – a company needed a monstrous Ethernet -> Serial converter – like 30+ serial lines – nothing particularly fast, only a lot of them. So, take one Zynq, let that do the networking, Linuxing, servering, and create the awful amount of serial lines in the FPGA fabric.

  3. The big use case I have always considered was a splice in inline audio real time crypto modules suitable in power consumption for COTS handheld and mobile radios.
    I have no idea what circuitry they have in the NSA compliant(they have a NSA backdoor) Harris mil-spec plug in modules but I figure a FPGA would be good to digitise and encrypt with maybe something reading from USB and/or OTA audio in to sync and roll over the day’s(hours?) codes.
    There are legal issues with this use case but I am more interested in a build transmitted into a 50ohm load than commercial viability. It is hard to buy a component without a good first build plan.

  4. For the hacker, cheap and accessible FPGA seem to be coming into their element as “glue”. Interfacing between random technologies…. the $20 piece of surplus that does the job of a $5000 piece of kit if only anything could talk to it right.

    1. FPGAs as “glue” is about 20 years out-of-date. While this was the original purpose of CPLDs and the first couple of generations of FPGAs, this is generally no longer the case. There is more than enough logic in inexpensive FPGAs today to host CPUs, numerous peripherals, DSP, and other significant forms of IP.

      The issue pertaining to the ability to “talk to it right” – there are several ways to program one of these devices. The lowest level is using VHDL or Verilog. Here you can instantiate individual blocks within the device and wire them together explicitly, or you could use the behavioral aspect of coding and describe behaviors with loops, case statements, and the like. More recently folks have been using C/C++ to quickly describe how logic in the FPGA should operate. Note that these methods are not mutually exclusive. We haven’t even begun talking about the plethora of IP that can just “snap together” to accelerate design times.

    1. As someone working at a company trying to make FPGA programming easier, I totally agree, the tooling is holding back FPGAs. For compute they’re miles away from the ease of something like TensorFlow where changing a few lines of config gets your code running on a GPU and that’s a darned shame.

      I’d shamelessly plug here but we’re a way off from supporting hobbyist FPGAs so not terribly relevant unless you’ve got saturated 100gig interfaces :P

      1. Thank you! Which FPGA board would you recommend, with Linux programming support and price being the most important considerations. RAM does not have to big, tens of kilobits will do nicely.

  5. Joel’s article was a great help to me when selecting an FPGA to get started with. Ultimately, I didn’t choose one on his list (I went for the NEXYS 4 video for the HDMI sink), but it showed me what to look out for and what to ignore.

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.