F Pga Overview
F Pga Overview
Configuration Memory Programmable Logic Blocks (PLBs) Programmable Input/Output Cells Programmable Interconnect Typical Complexity = 5M 1B transistors
A Simple PLB
Two 3-input LUTs
Can implement any 4-input combinational logic function
1 flip-flop
Programmable:
Active levels Clock edge D2-0 Set/reset
3 LUT C 8x1 LUT S 8x1 CB5 Clock Enable Set/Reset Clock D2-0
C7
C6
C5
C4
C3
C2
C1
C0
111 110 101 100 011 010 001 000 LUT out Cout Smux 0 1 0 1 CEmux CB3 SRmux 0 1 FF CB4 SOmux 0 Sout 1
6 controls
CB0-7
CB0 CB1 CB2
CB
Logic symbol A B 0 S1
0 1
Look-up Tables
Recall multiplexer example Configuration memory holds outputs for truth table Internal signals connect to control signals of multiplexers to select value of truth table for any given input value
0 0 1 1 0 1 0 1
0 1 0 0 1 1 0 0 1 1 0 1 0 1
Multiplexer A B S Truth table SAB Z 000 0 001 0 010 1 011 1 100 0 101 1 110 0 111 1
0 1
Z 1
1 B
0 A
1 S
In0
In1
In2
Example PLB
of a PLB (called a slice) from Xilinx Spartan 3
Two 4-input Look-Up Tables (LUTs)
Can perform any combinational logic function of up to 4 inputs Can function as small RAM (16x1-bit) or shift register (up to 16-bit)
Extra logic
Fast carry for adders MUXs for Shannon expansion And more
Interconnect Network
Transmission gate connects to 2 wire segments Controlled by configuration memory bit Wire A
0 = wires disconnected 1 = wires connected
config bit Wire B
PIPs
Break-point PIP
Connect or isolate 2 wire segments
Cross-point PIP
Turn corners
Multiplexer PIP
Directional and buffered Select 1-of-N inputs for output
Decoded MUX PIP N config bits select from 2N inputs Non-decoded MUX PIP 1 config bit per input
Input/Output Cells
Bi-directional buffers
Programmable for input or output Tri-state control for bi-directional operation Flip-flops/latches for improved timing
Set-up and hold times Clock-to-output delay
Tri-state Control
Pull-up/down resistors
Routing resources
Output Data
Pad
Input Data
FPGAs
Recent trend - incorporate specialized cores
RAMs single-port, dual-port, FIFOs
128 bits to 36K bits per RAM 4 to 575 per FPGA
RAMs/multipliers
100 150 200 250 300 350 400 450 50 0
Specialized Cores
2S15 2S30 2S50 2S100 2S150 2S200 V50 V100 V150 V200 V300 V400 V600 V800 V1000 3S50 3S200 3S400 3S1000 3S1500 3S2000 3S4000 3S5000 2V40 2V80 2V250 2V500 2V1000 2V1500 2V2000 2V3000 2V4000 2V6000 2V8000 2VP2 2VP4 2VP7 2VP20 2VPX20 2VP30 2VP40 2VP50 2VP70 2VPX70 2VP100
1K words x 18 bits
16 data bits + 2 parity bits
2K words x 9 bits
8 data bits + 1 parity bit
4K words x 4 bits (no parity) 8K words x 2 bits (no parity) 16K words x 1 bit (no parity)
Spartan 3 (XC3S200)
PLBs = 24 rows x 20 columns = 480
4 slices/PLB
2 L slices
L= logic
2 M slices
M= memory
Ranges of Resources
FPGA Resource Logic Routing Specialized Cores Other
PLBs per FPGA LUTs and flip-flops per PLB Wire segments per PLB PIPs per PLB Bits per memory core Memory cores per FPGA DSP cores Input/output cells Configuration memory bits
Small FPGA Large FPGA 256 1 45 139 128 16 0 62 42,104 25,920 8 406 3,462 36,864 576 512 1,200 79,704,832
Xilinx FPGAs
Virtex and Spartan 2
Array of 96 to 6,144 PLBs
4 LUTs/RAMs (4-input) 4 FF/latches
12 to 444 18K-bit dual-port RAMs 12 to 444 1818-bit multipliers 0 to 2 PowerPC processor cores
PC
PC
Virtex 4
Array of 1,536 to 22,272 PLBs
4 LUTs/RAMs (4-input) 4 LUTs (4-input) 8 FF/latches
Spartan 3
4 LUTs (4-input) 8 FF/latches
480 Array of 192 to 8,320 PLBs 4 LUTs/RAMs (4-input) 3S200 12 4 to 104 18K-bit dual-port RAMs 12 4 to 104 1818-bit multipliers