LUT's, FF's, DSP's and BRAM's are all common terms, amongst many others, that will be thrown around by FPGA engineers on an almost daily basis, there's good reason for this as these are all core building blocks for FPGA designs! So what are they? Let's break them down one by one.
LUT's, Look Up Tables, are a fundamental building block which as the name suggests are a physical implementation of a look up table, similar to a truth table, where input combinations yield specific outputs. They are nicely implemented in RAM with a simple example being a 2-input AND gate described by a 2-input memory cell with the memory locations containing a value of 0 for all combinations except for when both inputs are a '1'. We use LUT's to build up digital circuits in our design, also known as combinatorial logic in FPGA nomenclature.
FF's, Flip Flops, are the other main component in an FPGA which act as a data storage element where the data on the input is transferred to the output on clock edges. For the most part interesting things happen with an FPGA on rising edges. Flip Flops are used in what's known as sequential logic which are featured in the vast majority of FPGA designs.
DSP's, Digital Signal Processing Elements, commonly referred to as a DSP Slice, are building blocks for some DSP action. Multipliers, accumulators and subtractors are all nicely bundled up in DSP slices and are used extensively in DSP applications such as filters used in video and audio processing.
BRAM's, Block RAM's, are a key memory building block used for storing large amounts of data, typically used when crossing clock domains. They consist of a width and depth which when multiplied together equate to the memory offering of the BRAM implemented. They can be instantiated as a single port, dual port or a FIFO BRAM depending on the needs of the application.
See the FPGA and Digital Signal Processing course for the deep dive treatment for each of these key building blocks!