All about FPGA engineering
The FPGA approach versus standard software
The figure below shows the difference between data processing in software and in an FPGA. A processor runs software that is simply a sequence of operations that will be executed by the CPU one at a time. Software reads in the data and after all the operations have been executed, the results are output. To achieve higher data rates a faster processor is the solution.
In an FPGA, data processes can be divided into stages (pipelined) and operations done simultaneously (Stages 1, 2 and 3 in the figure), thus reducing the processing time. Processing blocks can also be paralleled (three columns shown below) and data multiplexed across them, allowing higher data rate. Finally, each stage can be optimized for its function,
HDL, the design languages for FPGA
A Hardware Description Language (HDL) is a way of describing a logical circuit without drawing a schematic. Schematics can be used but are not practical beyond certain size. Two main such languages exist today: VHDL and Verilog.
Synthesis and Implementation, how the source is translated
Synthesis is the process that takes the human-readable source files and creates a netlist with gates and registers. A functional evaluation is usually done at this stage to verify the process it implements, but without taking into account the problems that arise from the location of the actual elements on the actual chip.
Implementation assigns functions on logic blocks and routes the connections between them. More accurate timing analysis can be done at this point to ensure the correct functionality of the design.
SRAM and Flash based FPGA
Most FPGA are built on SRAM (Static RAM) technology because a higher density can be achieved. They will loose the configuration after power off and need an external serial or parallel flash memory to keep it. Configuration is encrypted to prevent copying it. Less usual Flash-based FPGAs