FPGA Lab

Starting or thinking of starting some new exploration\learning of the FPGA world.

What is the benefit of an FPGA? When to use an FPGA and when a microcontroller?

FPGA, by definition, is a highly flexible thing – you have access to multiple logic blocks which can be configured to work with specific logic functionality (with fuses or with look-up tables), and it has configurable routing. As a result, if you need something really unique, you have access to bare logic building blocks. Also, it will operate simultaneously in parallel (you normally won’t get it with a microcontroller).
The price for that is an extra parasitic and an extra power consumption. However, modern FPGAs will be able to work at damn high speeds, and if your application requires a lot of data processing, an FPGA is the way.
If you are in IC design, things are shifting from FPGA to HDL -> PnR -> Simulations and optimizations (STA, OCV, etc), this is pretty much where all digital design engineers work. As a nice bonus, they can test some of the code on high-end FPGA evaluation boards.
And as the last statement here: you can make a CPU using an FPGA, but you can not do the opposite.

FPGA (discrete) HDL flow in IC design
Online simulation toolsXcelium simulator (xrun) flow, , how to create tb in the text file
Software simulation toolsMixed-mode simulation flow
DebugDebug
Evaluation board choiceGeneration of gates/schematic from RTL
Generation/compilation of RTL, HWPnR, STA flow

Lab projects

Simple “blinker”

SPI

I2C

UART

SD card reader

Touch screen interface

SDR radio projects