Professional Documents
Culture Documents
PLD
FPGA
PAL
PLA
PML
LUT
(Look-Up Table)
MUX
Gates
2
What is an FPGA?
Configurable Logic Blocks
Block RAMs ECE 645 Computer Arithmetic Block RAMs
Copyright 2012 Xilinx
.
Off-the-shelf
High performance Low development cost Low power Short time to market Low cost in high volumes
Reconfigurability
Xilinx
UMC (Taiwan) {*Xilinx acquired an equity stake in UMC in 1996} Seiko Epson (Japan) TSMC (Taiwan)
High-performance families
Virtex (0.22m) Virtex-E, Virtex-EM (0.18m) Virtex-II, Virtex-II PRO (0.13m) Virtex-4 (0.09m) Spartan/XL derived from XC4000 Spartan-II derived from Virtex Spartan-IIE derived from Virtex-E Spartan-3
10
11
CLB Structure
12
Storage element
Latch or flip-flop Set and reset True or inverted inputs Sync. or async. control
Copyright 2012 Xilinx
.
13
LUT
x1 x2 x3 x4
x1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
x2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
x3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
x4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
y 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0
Look-Up tables are primary elements for logic implementation Each LUT can implement any function of 4 inputs
x1 x2 y y
14
F5
F5 GXOR G
F4 F3 F2 F1 BX
A4 A3 A2 A1
WS
DI D
nBX BX 1 0
15
LUT
OUT
LUT
16
Distributed RAM
RAM16X1S
LUT
=
RAM32X1S
D WE WCLK A0 A1 A2 A3 A4
O
D WE WCLK A0 A1 A2 A3
LUT
=
LUT
or
RAM16X2S
D0 D1 WE WCLK A0 A1 A2 A3
O0 O1
RAM16X1D
D WE WCLK A0 A1 A2 SPO
or
A3
DPRA0 DPO DPRA1
DPRA2
DPRA3
17
Shift Register
Each LUT can be configured as shift register
Serial in, serial out
LUT IN CE CLK
D CE Q
Dynamically addressable delay up to 16 cycles For programmable pipeline Cascade for greater cycle delays Use CLB flip-flops to add depth
D CE
LUT
D CE
OUT
D CE
DEPTH[3:0]
18
Shift Register
12 Cycles
Operation A 64 4 Cycles Operation C 3 Cycles Operation B 8 Cycles
64
9-Cycle imbalance
19
D CK EC
F5IN BY SR XB
F4 F3 F2 F1
X Look-Up Table O
S D CK EC R Q
CIN CLK CE
SLICE
20
Each CLB contains separate logic and routing for the fast generation of sum & carry signals
Increases efficiency and performance of adders, subtractors, accumulators, comparators, and counters
MSB
Carry Logic Routing LSB
21
All major synthesis tools can infer carry logic for arithmetic functions
Addition (SUM <= A + B) Subtraction (DIFF <= A - B) Comparators (if A < B then) Counters (count <= count +1)
22
Block RAM
Port B Port A
Spartan-II True Dual-Port Block RAM
Block RAM
23
24
25
8k x 2
4,095
4k x 4
16k x 1
8,191 0
8+1
2k x (8+1)
2047 16+2 0 1023 16,383
ECE 645 Computer Arithmetic
Copyright 2012 Xilinx
.
1024 x (16+2)
26
27
WEB
ENB
DOB[8:0]
Each port can be configured with a different data bus width Provides easy data width conversion without any additional logic
ECE 645 Computer Arithmetic
Copyright 2012 Xilinx
.
28
29
30
18 x 18 Multiplier
Embedded 18-bit x 18-bit multiplier
2s complement signed operation
18 x 18 Multiplier
Data_B (18 bits)
31
D Q EC SR
Three-State Control
Output Path
Registered Input
D EC
SR
32
IOB Functionality
IOB provides interface between the package pins and CLBs Each IOB can work as uni- or bi-directional I/O Outputs can be forced into High Impedance Inputs and outputs can be registered
advised for high-performance I/O
33
Routing Resources
CLB CLB CLB
PSM
CLB CLB
PSM
CLB Programmable Switch Matrix
PSM
CLB CLB
PSM
CLB
34
Clock Distribution
35
36
FPGA Nomenclature
37
38
39
Multipliers 18 x 18
Block RAMs
Block RAMs
Multipliers 18 x 18
I /O Block
Multipliers 18 x 18 Block RAMs ECE 645 Computer Arithmetic Multipliers 18 x 18 Block RAMs
40
Virtex-II 1.5V
Device CLB Array Slices Maximum I/O BlockRAM (18kb) Multiplier Blocks Distributed RAM bits
XC2V40
XC2V80 XC2V250 XC2V500 XC2V1000 XC2V1500
8x8
16x8 24x16 32x24 40x32 48x40
256
512 1,536 3,072 5,120 7,680
88
120 200 264 432 528
4
8 24 32 40 48
4
8 24 32 40 48
8,192
16,384 49,152 98,304 163,840 245,760
XC2V2000
XC2V3000 XC2V4000 XC2V6000
56x48
64x56 80x72 96x88
10,752
14,336 23,040 33,792
624
720 912 1,104 1,108
56
96 120 144 168
56
96 120 144 168
344,064
458,752 737,280 1,081,344 1,490,944
41
N/A N/A
9
18 36
2,048
1,024 512
[10:0]
[9:0] [8:0]
[7:0]
[15:0] [31:0]
[0]
[1:0] [3:0]
42
entity RAM_16X1_DISTRIBUTED is port( CLK : in STD_LOGIC; WE : in STD_LOGIC; ADDR : in STD_LOGIC_VECTOR(3 downto 0); DATA_IN : in STD_LOGIC; DATA_OUT : out STD_LOGIC ); end RAM_16X1_DISTRIBUTED;
ECE 645 Computer Arithmetic
Copyright 2012 Xilinx
.
44
45
RAM_16X1_S_1: ram16x1s generic map (INIT => X"F0C1") port map (O=>DATA_OUT, A0=>ADDR(0), A1=>ADDR(1), A2=>ADDR(2), A3=>ADDR(3), D=>DATA_IN, WCLK=>CLK, WE=>WE );
end RAM_16X1_DISTRIBUTED_STRUCTURAL;
46
entity RAM_16X8_DISTRIBUTED is port( CLK : in STD_LOGIC; WE : in STD_LOGIC; ADDR : in STD_LOGIC_VECTOR(3 downto 0); DATA_IN : in STD_LOGIC_VECTOR(7 downto 0); DATA_OUT : out STD_LOGIC_VECTOR(7 downto 0) ); end RAM_16X8_DISTRIBUTED;
ECE 645 Computer Arithmetic
Copyright 2012 Xilinx
.
47
48
49
entity ROM_16X1_DISTRIBUTED is port( ADDR : in STD_LOGIC_VECTOR(3 downto 0); DATA_OUT : out STD_LOGIC ); end ROM_16X1_DISTRIBUTED;
50
51
);
end ROM_16X1_DISTRIBUTED_STRUCTURAL;
52