A guide covering FPGA(Field Programmable Gate Arrays) devices such as the PolarFire®, Artix 7 , Spartan 6 and Zynq-7000. Along with the tools, applications and libraries that will make you a better and more efficient developer with FPGA devices. Also, learn about cool projects that you can build with your FPGA device.
Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.
Testing a LabVIEW FPGA Design. Source: NI
Checkout the PolarFire® FPGA Development Kits
Checkout the Artix 7 FPGA Development board
Checkout the Spartan 6 FPGA Development board
Checkout the Zynq-7000 for ARM/FPGA SoC Development board
FPGA(Field Programmable Gate Arrays) are semiconductor devices that are based around a matrix of configurable logic blocks (CLBs) connected via programmable interconnects. FPGAs can be reprogrammed to desired application or functionality requirements after manufacturing.
TinyFPGA is a new series of boards that are low-cost, open source FPGA boards in a tiny form factor.
FPGA & SoC Design Tools from Microsemi
QuickLogic Embedded FPGA (eFPGA) Intellectual Property (IP) and Software
FPGA for Beginners with Development Boards from Digilent®
Hundreds of FPGA Projects on Instructables
FPGA Fundamentals from NI(National Instruments)
Getting Started With LabVIEW FPGA from NI(National Instruments)
Programming and FPGA Basics - INTEL® FPGAS
FPGA Online Training Courses on LinkedIn Learning
UMass Lowell's Graduate Certificate in Field Programmable Gate Arrays(FPGA)
FPGA Design Fundamentals Course (UC San Diego Extension)
FPGA II Course (UC San Diego Extension)
FPGAs & SoCs Training from Microsemi
DSP fundamentals for FPGAs course from MATLAB and Simulink Training
LabVIEW FPGA is a software add-on for LabVIEW that you can use to more efficiently and effectively design FPGA-based systems through a highly integrated development environment, IP libraries, a high-fidelity simulator, and debugging features.
Apio is a multiplatform toolbox, with static pre-built packages, project configuration tools and easy command interface to verify, synthesize, simulate and upload your verilog designs.
IceStorm is a project that aims at documenting the bitstream format of Lattice iCE40 FPGAs and providing simple tools for analyzing and creating bitstream files.
Icestudio is a visual editor for open FPGA boards. Built on top of the Icestorm project using Apio.
FuseSoC is an award-winning package manager and a set of build tools for HDL (Hardware Description Language) code and FPGA/ASIC development.
OpenWiFi is an open-source IEEE802.11/Wi-Fi baseband chip/FPGA design.
PipeCNN is an OpenCL-based FPGA Accelerator for Large-Scale Convolutional Neural Networks (CNNs). Currently, there is a growing trend among developers in the FPGA community to utilize High Level Synthesis (HLS) tools to design and implement customized circuits on FPGAs.
Verilator is an open-source SystemVerilog simulator and lint system.
Verilog to Routing(VTR) is a collaborative project to provide a open-source framework for conducting FPGA architecture and CAD Research & Development. The VTR design flow takes as input a Verilog description of a digital circuit, and a description of the target FPGA architecture.
PlatformIO is a professional collaborative platform for embedded development with no vendor lock-in. It provides support for multiplatforms and frameworks such as IoT, Arduino, CMSIS, ESP-IDF, FreeRTOS, libOpenCM3, mbed OS, Pulp OS, SPL, STM32Cube, Zephyr RTOS, ARM, AVR, Espressif (ESP8266/ESP32), FPGA, MCS-51 (8051), MSP430, Nordic (nRF51/nRF52), NXP i.MX RT, PIC32, RISC-V.
PlatformIO for VSCode is a plugin that provides support for the PlatformIO IDE on VSCode.
Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M and RISC-V based embedded platforms. Tock's design centers around protection, both from potentially malicious applications and from device drivers.
OpenTimer is a High-Performance Timing Analysis Tool for VLSI Systems.
LLVM is a library that has collection of modular/reusable compiler and toolchain components (assemblers, compilers, debuggers, etc.). With these components LLVM can be used as a compiler framework, providing a front-end(parser and lexer) and a back-end (code that converts LLVM's representation to actual machine code).
TinyGo is a Go compiler(based on LLVM) intended for use in small places such as microcontrollers, WebAssembly (Wasm), and command-line tools.
Chipyard is an open source framework for agile development of Chisel-based systems-on-chip. It will allow you to leverage the Chisel HDL, Rocket Chip SoC generator, and other Berkeley projects to produce a RISC-V SoC with everything from MMIO-mapped peripherals to custom accelerators.
The Eclipse Embedded CDT is a collection of plug-ins for Arm & RISC-V C/C++ developers. Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework(ARM, AArch64, M68K, Mips, Sparc, X86) based on QEMU.
Keystone is a lightweight multi-platform, multi-architecture(Arm, Arm64, Hexagon, Mips, PowerPC, Sparc, SystemZ & X86) assembler framework.
Reko is a decompiler for machine code binaries.
Renode is Antmicro's virtual development framework for multinode embedded networks (both wired and wireless) and is intended to enable a scalable workflow for creating effective, tested and secure IoT systems.
Diosix is a lightweight, secure, multiprocessor bare-metal hypervisor written in Rust for RISC-V.
- If would you like to contribute to this guide simply make a Pull Request.
Distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) Public License.