FPGA for Dummies

advertisement
FPGA for
Dummies
Basic FPGA architecture
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA for Dummies
• Historical introduction, where we come from;
• FPGA Architecture:
 basic blocks (Logic, FFs, wires and IOs);
 additional elements;
• FPGA Programming:
Design flow;
Software;
• FPGA DSP:
Digital filters examples;
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA for Dummies
• Historical introduction, where we come from;
• FPGA Architecture:
 basic blocks (Logic, FFs, wires and IOs);
 additional elements;
• FPGA Programming:
Design flow;
Software;
• FPGA DSP:
Digital filters examples;
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Field Programmable Gate Arrays
(FPGAs)
FPGAs initially were Similar to CPLDs, so a function to be
implemented in FPGA is partitioned into modules (each
implemented in a logic block) and then the logic blocks are
connected with the programmable interconnection: ARRAY of
logic GATES is the G and A in FPGA.
By way of a configuration file or bit stream, an FPGA can be
configured to implement the user’s desired function: this allows
customization at the user’s electronics bench, or even in the
final end product.
This is why FPGAs are FIELD PROGRAMMABLE.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Complex Programmable Logic
Devices (CPLDs)
The key resource in a CPLD
is the PROGRAMMABLE
INTERCONNECT
(Tradeoff between
SPACE FOR MACROCELLS
and
SPACE FOR
INTERCONNECT)
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Architecture
The basic structure of an FPGA is
composed of the following elements:
 Look-up table (LUT): This element
performs logic operations
 Flip-Flop (FF): This register
element stores the result of the
LUT
 Wires: These elements connect
elements to one another, both
Logic and clock
 Input/Output (I/O) pads: These
physically available ports get
signals in and out of the FPGA.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: Logic
How can we implement any circuit in an FPGA?
Combinational logic is represented by a truth table
(e.g. full adder).
 Implement truth table in small memories (LUTs).
 A function is implemented by writing all possible
values that the function can take in the LUT
 The inputs values are used to address the LUT
and retrieve the value of the function
corresponding to the input values
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: Logic
A LUT is basically a multiplexer that
evaluates the truth table stored in the
configuration SRAM cells (can be seen as
a one bit wide ROM).
How to handle sequential logic?
Add a flip-flop to the output of LUT
(Clocked Storage element).
This is called Basic Logic Element (BLE):
circuit can now use output from LUT or
from FF.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Slice Flip-Flop Capabilities
All flip-flops are D type
All flip-flops have a single clock input (CLK)
 Clock can be inverted at the slice
boundary
All flip-flops have an active high chip enable (CE)
All flip-flops have an active high SR input
 Input can be synchronous or
asynchronous, as determined by the
configuration bit stream
 Sets the flip-flop value to a predetermined state, as determined by the
configuration bit stream
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Slice Flip-Flop Timing
Signal timing must satisfy
 Setup & Hold times;
 Propagation delay;
At the maximum required frequency
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Xilinx Configurable Logic
Blocks (CLBs)
Xilinx Configurable Logic
Blocks (CLBs) usually
contain more than 1 BLE:
this is an efficient way of
handling common I/O
between adjacent LUTs and
saves routing resources
(eg. Ripple-carry adder).
2x1
3-in, 2-out
LUT
3-in, 2-out
LUT
FF
2x1
FF
2x1
FF
2x1
FF
2x1
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Xilinx Configurable Logic
Blocks (CLBs)
The arithmetic logic provides a XOR-gate and
faster carry chain to build faster adder
without wasting too much LUT-resources.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Xilinx Configurable Logic
Blocks (CLBs)
The CLB is the modern Xilinx FPGA basic block: the number of CLB
varies from devices to devices:
Spartan 3, VirtexII, Virtex II-Pro
Virtex 4:
 4 slices
 2 basic blocks per slice
Virtex 5:
 2 slices
 4 basic blocks per slice
Virtex 6:
 2 slices (split in 2
columns)
 4 6-inputs LUT
 8 FF (storing LUT
results)
Virtex 7:
 2 pairs of slices (split in 2
columns arranged
symmetrically)
 4 6-inputs LUT
 8 FF (storing LUT results)
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Altera FPGA Logic Array Blocks
Altera’s FPGAs (Cyclone, FLEX) basic unit of logic is the Logic Element
(LE) and is also LUT-based (4-LUT, flip flop, multiplexer and additional
logic for carry chain) similar to Xilinx: LEs can operate in different modes
each of which defines different usage of the LUT inputs. Altera LEs are
grouped into Logic Array Blocks (LAB)).
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Altera FPGA Logic Array Blocks
Altera’s Stratix II FPGAs the basic computing unit is called Adaptive
Logic Module (ALM): each LAB contains 8 ALMs.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Altera FPGA Logic Array Blocks
ALM can be used to implement functions with variable number of
inputs. This ensures a backward compatibility to 4-input-based
designs. It is possible to implement module with up to 8 inputs.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
LatticeSemiconductor FPGA Logic
Blocks
The Programmable Logic Cell (PLC) is the fundamental building
block of the FPGA Fabric.
The PLC consists of 2 components:
 PFU – Programmable Function Unit (Very simple logic!)
 Programmable Routing Block or Big Switch Box (Muxes)
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: wires
Before FPGA is programmed, it doesn’t
know which CLBs will be connected:
connections are design dependent, so
there are wires everywhere (both for
DATA and CLOCK)!!!!!
CLBs are typically arranged in a grid,
with wires on all sides.
CLB
CLB
CLB
CLB
CLB
CLB
To connect CLB to wires some
Connection box are used: these
devices allow inputs and outputs of
CLB to connect to different wires
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: wires
Connection boxes allow CLBs to connect to routing wires but that only
allows to move signals along a single wire; to connect wires together
Switch boxes (switch matrices) are used: these connect horizontal
and vertical routing channels. The flexibility defines how many wires a
single wire can connect into the box.
Switch box/matrix
ROUTABILITY is a measure of the
number of circuits that can be routed
CLB
CLB
HIGHER FLEXIBILITY
=
BETTER ROUTABILITY
CLB
CLB
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: wires
FPGA layout is called a “FABRIC”: is a 2-dimensional array of CLBs and
programmable interconnections. Sometimes referred to as an “island
style” architecture.
16-bit SR
16x1 RAM
a
b
c
d
e
4-input
LUT
y
mux
flip-flop
q
clock
clock enable
set/reset
In the switch boxes there are short channels (useful
for connecting adjacent CLBs) and long channels
(useful for connecting CLBs that are separated, this
reduce routing delay for non-adjacent CLBs)
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: memory
The FPGA fabric includes embedded memory
elements that can be used as random-access
memory (RAM), read-only memory (ROM), or
shift registers. These elements are block RAMs
(BRAMs), LUTs, and shift registers.
Using LUTs as SRAM, this is called
DISTRIBUTE RAM
Included dedicated RAM components in the FPGA fabric are called
BLOCKs RAM
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: memory
ALTERA Embedded Memory
XILINX 36K/18K
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: input/output
The IO PAD connect the signals from
the PCB to the internal logic.
The IOB are organized in banks
(depending on the technology and the
producer the number of IOB per bank
change).
All the PAD in the same bank, share a
common supply voltage: not all the
different standard could be implemented
at the same time in the same bank!!!!
There are special PAD for ground
(GND),
supplies
(VCC,
VCCINT,
VCCAUX, etc…), clocks and for
programming (JTAG).
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
FPGA Components: input/output
The IO Blocks (IOB) support a wide range of
commercial standard (LVTTL, LVCMOS,
LVDS, etc…) both single ended and
differential (in that case pair of contiguous
pad are used).
In the PAD are available FF that are use to
resynchronize the signal with the internal
clock.
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
XILINX 7 serie families
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
ALTERA 10/V serie families
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Vendor comparison
ESS | FPGA for Dummies | 2015-12-08 | Maurizio Donna
Download