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