The focus of this article is on the process of selecting an FPGA development board. A focus is placed on beginners because more advanced users have probably developed an intuition for this process for themselves already. I will not be making a lot of specific suggestion in this guide, but I will link some pages with some more specific suggestions. This guide will help you actually select a board out of those suggestions.
The process is actually quite complicated and nuanced, it depends on quite a few situational details that are worth thinking about. Some initial thoughts are…
- Current skill level in general electrical engineering and software development
- What they want to make with the FPGA
- Whether this is someone looking at FPGAs as a hobby or as a future career
- Hobbyists might be interested in open source tooling
- Those looking towards a career in the field probably want to look at AMD/Xilinx FPGAs/SoCs to start, unless they are looking at low power solutions, in which case Lattice is a good place to start
- How much money they have to spend and the likelihood this is a 4-6 month interest or a career long investment
Who I call beginners are people who have yet to take or will never take an undergraduate FPGA course (not including a digital logic course which is typically too shallow in FPGA details). These are people who have some software and electrical background. They have programmed any microcontroller in C, plugged stuff into a breadboard, or might even be quite a few years into an embedded software or electrical design career.
Most experienced FPGA developers will tell you, most of the design needs to be done in simulation. This is correct, however, I think it is still pretty important to have a basic board to grasp the details of implementation.
This usually means I want to suggest a board that is low cost because at this point, there is a high risk that they won’t ever touch the devkit again after playing around with FPGAs for a few weeks.
- Generally for a beginner, it makes sense to select popular devkits that have more example designs and board specific tutorials
- It is normally, not reasonable to spend more then $200 at this stage
- Expensive development kits are often way more complicated and get in the way of learning
- Have a look at the age of the chip, it is usually not recommended to learn on a chip only supported by Xilinx ISE for instance unless for some reason, you have to learn Xilinx ISE
Types of Beginners: Software Developers
FPGAs are sometimes useful in the software space as an accelerator sitting in a server. In this case, sometimes I don’t recommend buying an FPGA development kit. It can make more sense for software developers looking at acceleration applications to look at Amazon AWS F1 instances where they can rent a PCIe attached FPGA.
If they want to look at more typical FPGA applications, the selection criteria is more similar to what I list below for embedded software developers.
Types of Beginners: Embedded Software Developers
For existing embedded software developers, it is a good idea to get an idea of what they want to create on an FPGA.
Is it a custom SoC (RISC-V), or do they want to learn to use a hardened SoC (AMD/Xilinx Zynq or Intel/Altera Cyclone V SoC)? Maybe they want to get into “pure” FPGA development?
This is important because the peripherals that need to be attached to make the devkit usable for these projects are very different.
If it is a custom SoC they want to build, it is likely they want some amount of external RAM, and easy to interface low speed IOs to implement SPI, UART and I2C peripherals.
If they want to gain experience with a hardened SoC, then the only options within reasonable price points are Zynq and Cyclone V SoC boards.
If they want to get into “pure” FPGA development, then the development board should NOT be something like a hardened SoC such as a Zynq because half the peripherals will be attached to the ARM processor making it extremely difficult or impossible to get data in/out of the FPGA in the way more typical for pure FPGA designs. For example, if you want to setup an FPGA only Ethernet stack using Verilog-Ethernet and your Zynq board only has one Ethernet port, it is likely connected to the ARM processor (Zynq PS) directly so you can’t really get the raw Ethernet frames to/from the FPGA fabric easily.
Types of Beginners: PCB Designers
Existing PCB designers may or may not want to design a custom board for their FPGA projects.
If they do want to design a custom board in the future, I will often suggest they first get a development kit with a removable system on module (SoM). This is because in the future, they can design a custom board that uses the SoM from the devkit. It makes porting the prototype design easier. In many cases, it could also mean they only have to buy 1 FPGA/SoC SoM for several custom boards. If they only intend on using one of those boards at a time, there is no reason to buy several expensive FPGAs. They can spend more on a single SoM and move it around.
There are a few good suggestions on this front, boards from Trenz and Alinx have removable SoMs. A good option might also be the Digilent CMODs which just has classic 0.1″ headers.
If they have no intent on designing a custom board, then the selection criteria is more similar to what I look at for existing embedded software developers.
Intermediates are usually looking at doing their first big project after an undergraduate course, it might be a hobby project or a capstone project. At this point, the devkit selection becomes more application specific. It really depends on what the project is about, what you want to connect to the FPGA and usually it also means a higher budget for a board. There is less of a chance the board will be wasted.
Board selection becomes about the needs of the project… FPGA area, peripherals, interfaces and IO bandwidths.
Depending on the project, an estimation of required FPGA area should be done. Larger FPGA is not always better because compile times and prices go up with area but you definitely don’t want to go smaller then needed. Also note that FPGA synthesis and place/route tools (AMD/Xilinx Vivado, Intel/Altera Quartus, among others) might have a software license fee for the larger chips. Check the manufacturers website. For example, Vivado is free for a Kintex 7 160t but requires a $3000-4000 license for a Kintex 7 410t.
The best way to figure out FPGA area is to look at your previous projects and imagine how much more logic is required for your new project. You should be able to do back of the envelope estimations. Multiply these estimations by 2-3x to give yourself room to grow and for debug logic (such as AMD/Xilinx ILAs or Intel/Altera SignalTap).
Peripherals, Interfaces and IO Bandwidth
Specific to the project, it could be easier if some or all of the peripherals you need are already on the development kit.
There must also be enough IO bandwidth on the selected host interface (to a microcontroller, laptop or servers) if there is one.
- Low bandwidth (100kbit/s – 3 MBit/s) – UART, SPI
- Medium bandwidth (100Mbit/s – 10Gbit/s) – Ethernet (PHY on board or SFP cages)
- High bandwidth (10Gbit/s – 60Gbit/s) – Ethernet (QSFP cages), PCIe of varying widths depending on need
For networking applications, a lot of boards with SFP or QSFP might be suitable.
For computer vision or image processing applications, you might want to connect cameras to either an SoC where software is running to make your life easier, or you might want a MIPI CSI interface directly to a camera sensor. Other options might include connecting to your image input device over Ethernet or maybe you are capturing off HDMI.
For DSP/SDR applications there are many ways to get the RF data in/out of your FPGA, there are a few solutions here.
- Attach a DAC/ADC or RF frontend to an existing, popular FPGA development kit over HSMC or FMC. Often the card with the analog to digital conversion being attached is an evaluation board from Analog Devices or Texas Instruments. In this case, have a look at what FPGA development kit they suggest
- Modify the design on an existing SDR, see the Analog Devices ADALM Pluto, National Instruments USRPs or something like the Nuand BladeRF
- Use a device such as an AMD/Xilinx RFSoC or Intel/Altera DirectRF
For compute acceleration problems, the solution could be Amazon AWS F1 cloud FPGAs or something like an off the shelf PCIe card (AMD/Xilinx Alveo or something similar).
Sources of Development Kits
Pretty much the official source for AMD/Xilinx FPGA and SoC development kits – https://digilent.com/
Pretty much the official source for Intel/Altera FPGA and SoC development kits – https://www.terasic.com.tw/en/
Third party, decently popular board partners
- Alinx – https://alinx.com/en
- Trenz – https://shop.trenz-electronic.de/en/Products/Trenz-Electronic/
- MYiR – https://www.myirtech.com/product.asp
Open source hardware and/or open source toolchain supported
I mostly mention AMD/Xilinx and Intel/Altera, but there are quite a few other players in the industry.
For low power devices or devices that happen to be supported by some open source tooling, have a look at Lattice FPGAs and their boards – https://www.latticesemi.com/
A decent selection guide with a breakdown based on device types, interfaces or applications – https://www.fpgadeveloper.com/comprehensive-list-of-fpga-development-boards/
A breakdown of some low cost boards with highlights on what is on the board – https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
List of Lattice boards with open source tooling support – https://github.com/kelu124/awesome-latticeFPGAs