In this course we will go over the process and tools used to program Field Programmable Gate Arrays (FPGAs). FPGAs are very flexible devices which consist of large arrays of logic elements which can be connected in arbitrary ways. The devices can also be reprogrammed on the fly, in the field, allowing them to implement different or improved algorithms.
One has to be careful on terminology, though. Programming typically means writing a program in some high, or low, level language. While we use a form of software to specify what we want the FPGA to do, the term programming has another meaning. For a FPGA, programming is the process of applying a bit pattern to the chip which controls the action of the "switches" that control the flow of data.
We will look at the whole process of developing that bit pattern and applying it to a device. In this course we will have examples from a number of vendors, such as Xilinx, Intel and Microsemi.