What element inside an FPGA can save data temporarily to be used later in the design? In addition 1
to the LUT, FPGAs have several small temporary memories to save the results of LUTs in order 2
to implement sequential logic circuits. 3
These memories which called flip-flops are similar to the registers in a CPU hardware architecture. 4
A flip-flop is one of the basic storage units within an FPGA fabric. Flip-Flops are registers that can save 5
data being used later in the design. 6
These resisters can also act as a distributed memory space in the FPGA. 7
LUTs enable implementing the combinational logic on an FPGA. Combinational logics are digital 8
circuits that their outputs are functions of the present values of their inputs only. 9
Therefore, LUTs sometimes called function generators. 10
Adding FF to FPGAs enables them to implement sequential logic. The outputs of a sequential logic 11
depend not only on the present value on the inputs but also on the history of their values. 12
Any digital circuits can be implemented by LUTs and FFs. However, to increase the performance 13
of arithmetic logics, FPGAs usually add basic logical gates (including AND, OR, and NOT) to their structure in order 14
to facilitate the carry calculation involved in these types of operations. 15
More details about the logic circuit of these gates are beyond the scope of this course, and their 16
understanding is not necessary for learning HLS. 17
A collection of LUTs, FFs and logic gates are packed together and create a 18
slice in FPGA structure. 19
This figure shows a Slice in Xilinx 7-series, which is one of the most common Xilinx FPGA families. 20
It has three layers of elements, 6-input LUTs 21
Arithmetic carry logic circuits, FFs and multiplexers 22
A set of two Slices and a switch matrix to connect the slices to the routing on the FPGA is called a 23
Configurable Logic Block or CLB for short. An FPGA can be considered as a 2D 24
array of CLBs. This figure shows a 2D array of CLBs connected through a connection network. 25
The connection network consists of wires and switches. 26
The switches are configurable to provide paths to connect different CLBs in order to create complex 27
logic functions. 28
A group of I/O paths (shown around the FPGA structure in this figure) enables the internal logic to communicate 29
with the outside world to receive or send data. 30
The communication can be between FPGA and external memories, FPGA and external peripherals or FPGA 31
and CPUs. 32
Any arithmetic operation can be implemented on this traditional FPGA structure using the corresponding 33
bit-level logical expression. 34
However, the final circuits won’t be efficient, especially for floating-point arithmetic operators. 35
New FPGA structures add additional computational and data storage blocks that increase the computational 36
density and efficiency of the device. 37
These additional elements include: Embedded blocks of memories as data storage 38
These memories also called BRAM or Block RAM. 39
Phase-locked loops (PLLs) for driving the FPGA fabric at different clock rates. High-speed serial transceivers. 40
Off-chip memory controllers. Digital Signal Processing (DSP) elements that enable implementing efficient 41
floating-point arithmetic operations. Embedded multi-core CPU. Analog/Digital Converter. 42
Now that we have a big picture of the FPGA structure, we should connect that to a couple of peripherals 43
on a board to communicate with the environment. 44
So, our question for the next lecture is What is the structure of the FPGA-based evaluation board that 45
we are going to use along this course? 46
These are our takeaway messages: An FPGA has logical, storage and additional elements. Logical elements 47
can be used for logical and arithmetic operations 48
Storage elements can be used as registers or blocks of memories 49
Additional elements can be used for floating-point arithmetic operations, serial communication or other 50
complex functions. 51
Now the quiz questions 1) What are the two main memory resources in an FPGA? 52
2) Name two elements that can implement arithmetic operators?