Introduction to FPGAs
Introductory talk to programmable logic technology, the FPGAs. Marek starts the talk by explaining what the FPGAs are and how they work on the inside in detail, which in turn clarifies the best workloads for FPGAs. This is followed by a look at the HDL languages used to develop FPGA content, both Verilog and VHDL, as well as more progressive approaches like Chisel and SpinalHDL. After that, FLOSS tools for programming the FPGAs are explored, including IceStorm, Chibi, X-Ray projects. Finally, a brief look at FPGAs and kits available on the market concludes the first part.
The core part of the talk focuses on creating a simple FPGA design from the ground up. Marek explains how to implement the HDL code in Verilog, as this is much more approachable for software engineers. This is followed by simulating the code using Icarus, writing a test bench for it and observing the result using GTKwave, all on a common PC running GNU/Linux. The next step uses IceStorm tools and the iCE40 FPGA to program and run the design on actual hardware.
The final part of the talk focuses on debugging the FPGA design, both using simulation and physically on an actual hardware.