78
FIELD PROGRAMMABLE GATE ARRAYS (FPGAS) Roth Text: Chapter 3 (section 3.4) Chapter 6 Nelson Text: Chapter 11 FPGAs 1

FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)

Roth Text: Chapter 3 (section 3.4) Chapter 6

Nelson Text: Chapter 11

FPGAs

1

Page 2: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Programmable logic taxonomy

FPGAs

2

LabDevice

Page 3: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Field Programmable Gate Arrays

FPGAs

3Typical Complexity = 5M – 1B transistors

Page 4: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Basic FPGA Operation• Writing configuration memory⇒ defines system function

– Input/Output Cells

– Logic in PLBs

– Connections between PLBs & I/O cells

• Changing configuration memory data ⇒ changes system function

– Can change at anytime

– Even while system function is in operation

FPGAs

4

1110011010001000100101010001011100010100101010101001001000100010101001001001100100100001111000110010100010000110010001010001001001001000101001010101001001001010001010010100010100101001000100101010111010101010101010101010101111011111000000000000001101001111100001001110000011100100101000000001111100100100010100111001001010000111100011100010010101010101010101010010100101010100100101010101010101001001001

Page 5: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

5

Page 6: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

6

Page 7: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Ranges of Resources

FPGA Resource Small FPGA

Large FPGA

LogicPLBs per FPGA 256 25,920

LUTs and flip-flops per PLB 1 8

RoutingWire segments per PLB 45 406

PIPs per PLB 139 3,462

SpecializedCores

Bits per memory core 128 36,864Memory cores per FPGA 16 576

DSP cores 0 512

OtherInput/output cells 62 1,200

Configuration memory bits 42,104 79,704,832

FPGAs7

Page 8: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Programmable ASIC logic cells• Xilinx : “configurable logic block” (CLB) contains

– SRAM lookup tables (LUTs) to implement combinational logic– D flip flops– Multiplexers to establish paths in the CLB

• Actel “ACT” : multiplexers implement logic

• Altera “Flex” : similar to Xilinx CLB

• Altera “MAX” : PALs implement logic

FPGAs

8

Page 9: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Mux-based logic blocks in FPGAs

FPGAs

9

Text Figure 3.33

Page 10: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Actel ACT architecture (Fig. 5.1)(mux-based logic modules)

FPGAs

10

ACT 1 logic modulePass transistor implementation

Page 11: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

11

Xilinx FPGA families (2015)

Digikey.com (4/03/18):Spartan-3A XC3S50A: $8.05Spartan-6 XC6SLX4: $11.48Artix-7 XC7A100T: $136.50Kinetix-7 XC7K70T: $139.65Virtex7 XC7V1140T-G2FLG1925E: $32,815.17

Page 12: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx FPGAs• Virtex and Spartan 2– Array of 96 to 6,144 PLBs

• 4 LUTs/RAMs (4-input)• 4 FF/latches

– 4 to 32 4K-bit dual-port RAMs• Virtex II, Virtex II Pro

– Array of 352 to 11,204 PLBs• 8 LUTs/RAMs (4-input)• 8 FF/latches

– 12 to 444 18K-bit dual-port RAMs– 12 to 444 18×18-bit multipliers– 0 to 2 PowerPC processor cores

• Virtex 4– Array of 1,536 to 22,272 PLBs

• 4 LUTs/RAMs (4-input)• 4 LUTs (4-input)• 8 FF/latches

– 48 to 552 18K-bit dual-port RAMs• Also operate as FIFOs

– 32 to 512 DSP cores include:– 0 to 2 PowerPC processor cores

FPGAs

12

PC PC

Spartan 3 Array of 192 to 8,320 PLBs

4 LUTs/RAMs (4-input) 4 LUTs (4-input) 8 FF/latches

4 to 104 18K-bit dual-port RAMs 4 to 104 18×18-bit multipliers

Special coresI/O cellsRouting

PLBs

Page 13: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx 7 Series Families

FPGAs

13

Page 14: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx Artix-7 Family

FPGAs

14

Page 15: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx “UltraScale” Family

FPGAs

15

Kintex and Virtex UltraScale and UltraScale+

Page 16: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx: Basic CLB Architecture• Look-up Table (LUT) implements truth table• Memory elements:

– Flip-flop/latch

– Some FPGAs - LUTs can also implement small RAMs

• Carry & control logic implements fast adders/subtractors

FPGAs

16carry in

LUT/RAM Carry &

ControlLogic

Flip-flop/Latch

4

carry out

3

Control

OutputQ output

Input[1:4]

clock, enable, set/reset

Page 17: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Combinational Logic Functions

• Gates are combined to create complex circuits

• Multiplexer example– If S = 0, Z = A

– If S = 1, Z = B

– Very common digital circuit

– Heavily used in FPGAs

• S input controlled by configuration memory bit

• We’ll see it again

FPGAs

17

AS

B

Z

0

1

A

B

S

Z

Logic symbol

01

S A B Z0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 01 0 1 11 1 0 01 1 1 1

Truth table

Page 18: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

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

FPGAs

18

0

1

A

B

S

Z

Multiplexer

S A B Z0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 01 0 1 11 1 0 01 1 1 1

Truth table

B A S

0

1

Z

0

1

0

1

0

1

0

1

0

1

0

1

0

0

1

1

0

1

0

1

1 0 1

1

Page 19: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Look-up Table Based RAMs• Functions of more variables than LUT inputs

f(a1,a0,b1,b0) = a1f(1,a0,b1,b0) + a1’f(0,a0,b1,b0)

FPGAs

Page 20: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Look-up Table Based RAMs• Artix-7 6-input LUTs can be partitioned into two 5-input LUTs

FPGAs

Page 21: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Look-up Table Based RAMs

• Normal LUT mode performs read operations

• Address decoder with write enable generates clock signals to latches for write operations

• Small RAMs but can be combined for larger RAMs

FPGAs

21

Data In

Addr

ess

Dec

oderWriteEnable

In0In1In2

ck0

ck1

ck2

ck3

ck4

ck5

ck6

ck7

In0 In1 In2

0

1

Z

0

1

0

1

0

1

0

1

0

1

0

1

0

0

1

1

0

1

0

1

Page 22: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

A Simple CLB• Two 3-input LUTs

– Can implement any 4-input combinational logic function

• 1 flip-flop– Programmable:

• Active levels

• Clock edge

• Set/reset• 22 configuration

memory bits– 8 per LUT

• C0-7

• S0-7

– 6 controls• CB0-7

FPGAs

22

C0C1C2C3C4C5C6C7

111 110 101 100 011 010 001 000D2-0

outLUTCout

D2-0

D3

FF

CB4

Clock

Set/Reset

Sout01

CB3

01

01

01

Clock Enable

CB = ConfigurationMemory Bit

Smux

CEmux SRmux

SOmux

CB5

CB1CB0 CB2

LUT C8x1

LUT S8x1

3

Page 23: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Example CLB• Artix-7 SLICEL (1/2 shown)• Four 6-input Look-Up Tables (LUTs)

– Any combinational logic function of up to 6 inputs– SLICEM LUT can function as small RAM (16x1-bit) or

shift register (up to 16-bit)

• Eight D flip-flops– Programmable as latches– Programmable clock edge, clock enable, set/reset

• Extra logic– Fast carry for adders– MUXs for Shannon expansion– And more

FPGAs23

Page 24: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Synchronous sequential circuit

FPGAs24

Page 25: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

CLBs and Slices in rows/columns

FPGAs25

Page 26: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Using lookup-table (LUT) programmable logic

FPGAs

26

Page 27: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

27𝑍𝑍 𝑎𝑎, 𝑏𝑏, 𝑐𝑐,𝑑𝑑, 𝑒𝑒, 𝑓𝑓 = 𝑎𝑎 � 𝑍𝑍 0, 𝑏𝑏, 𝑐𝑐,𝑑𝑑, 𝑒𝑒, 𝑓𝑓 + 𝑎𝑎 � 𝑍𝑍 1, 𝑏𝑏, 𝑐𝑐,𝑑𝑑, 𝑒𝑒, 𝑓𝑓 = 𝑎𝑎𝑍𝑍0 + 𝑎𝑎𝑍𝑍1

Shannon’s Expansion Theorem (partition into smaller functions):

Functions of more variablesthan # of LUT inputs

Page 28: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

𝑀𝑀 = 𝑆𝑆1𝑆𝑆0𝐼𝐼0 + 𝑆𝑆1𝑆𝑆0𝐼𝐼1 + 𝑆𝑆1𝑆𝑆0𝐼𝐼2 + 𝑆𝑆1𝑆𝑆0𝐼𝐼3

FPGAs

28

M1 M2

𝑀𝑀 = 𝑆𝑆1𝑆𝑆0𝐼𝐼0 + 𝑆𝑆1𝑆𝑆0𝐼𝐼1 + 𝑆𝑆1𝑆𝑆0𝐼𝐼2 + 𝑆𝑆1𝑆𝑆0𝐼𝐼3

M1 M2

Page 29: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

29

Page 30: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

30

Fig. 6-13 Simplified Spartan andVirtex Slice

Page 31: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Input/Output Cells

FPGAs

31

• Signals between I/O pins and the logic array

Page 32: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

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

– Pull-up/down resistors

• Routing resources

– Connections to core of array

• Programmable I/O voltage & current levels

FPGAs

32

Tri-state Control

Output Data

Input Data

to/frominternal routing

resources Pad

Page 33: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Detailed I/O Cell

FPGAs

33

Page 34: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Interconnect Network• Wire segments of varying length

– xN = N CLBs in length

• 1, 2, 4, and 6 are most common

– xH = half the array in length

– xL = length of full array

• Programmable Interconnect Points (PIPs)

• Also known as Configurable Interconnect Points (CIPs)

– Transmission gate connects to 2 wire segments

– Controlled by configuration memory bit

• 0 = wires disconnected

• 1 = wires connected

FPGAs

34

configbit

Wire A

Wire B

Page 35: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx interconnect

structures

FPGAs

35

Page 36: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

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

• Compound cross-point PIP– Collection of 6 break-point PIPs

• Can route to two isolated signal nets

FPGAs

36

Page 37: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Switch box

FPGAs

37

• Connects CLB to the “routing fabric”

Page 38: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Spartan 3 Routing Resources

FPGAs

38

PLB consistsof 4 slices

switch matrixover 2,400 PIPs

mostly MUX PIPs

x6 wiresegments

x2 wiresegments

xH & xL wiresegments

over 450total wire

segmentsin PLB

Page 39: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

39

Page 40: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Fully routed design

40

S1

S2

S3

Net N1: Site S1 output pin O1 connects to input pin I1 on site S3Net N2: Site S1 output pin O2 connects to input pin I1 on site S2Black “dots” are routing pipsPredefined connections exist between switch boxes

W2END0 W2BEG0

LOGICIN1

W2END1 W2BEG1

LOGICOUT1S2BEG0

S2END0

E2BEG2 E2END2

LOGICIN2

.I1

.O1

.O2.I1

(5,7) (6,7) (7,7) (8,7)

(8,6)(7,6)(6,6)(5,6)

LOGICOUT2Net N1

Net N2

Page 41: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

ELEC 4200 Lab 0 in Spartan 6

FPGAs

41

Page 42: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Lab 0 in Spartan 6(routing details)

FPGAs

42

Page 43: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Ex: modulo7 counter (device xc6slx25t)

FPGAs

43

Nets

IO Pads

CLBs

INTs

Page 44: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Clock Region

Clock Region

LogicResources

LogicResources

LogicResources

LogicResources

LogicResources

LogicResources

LogicResources

LogicResources

Center ClockColumn(s)

Clock Routing

FPGA clock regions

FPGAs

44

Page 45: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

47

8

10

CLKC tile

INT CLEXM

BUFG

BUFH

Main vertical spine

“Folded” vertical spine(one each in top and bottom half)

Distribution wire in center of clock region

Clock to INTsin one column

Spartan 6 clock tree example

FPGAs

45

Page 46: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

7 Series FPGA high-level clock architecture view

FPGAs

46

Page 47: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Basic view of a clock region

FPGAs

47

Page 48: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Clock management tile (CMT)Mixed-mode clock manager (MMCM)

FPGAs

48MMCM Outputs = frequency divided, phase shifted, invertedUp to 24 CMTs per Series 7 device

ClockSources

MMCMOutputs

Page 49: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

49

Clock management tile (CMT) Phase-locked loop (PLL)

PLLOutputs

ClockSources

PLL = frequency synthesizer using a voltage-controlled oscillator (VCO)

Page 50: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

BUFGsFrom top edge global clock pads

From bottom edge global clock pads

From left edge Global clock pads

From right edge global clock pads

From DCM/PLLand fabric

From DCM/PLLand fabric

BUFG controlsfrom fabric

Switch Box

Vertical spines

Spartan 6 global clock sources

FPGAs

50

Clock created by MIPS controllogic

From clockinput pad

Page 51: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Specialized “hard “ cores– RAMs – single-port, dual-port, FIFOs

• 128 bits to 36K bits per RAM

• 4 to 575 RAM cores per FPGA

– DSPs – 18x18-bit multiplier, 48-bit accumulator, etc.• up to 512 per FPGA

– Microprocessors and/or microcontrollers• Up to 2 per FPGA (hard core processor)

• Support soft core processors

– Synthesized from HDL into programmable resources

– Communication functions• Gigabit transceivers

• Ethernet MAC

• PCE Express bus

FPGAs

51

Page 52: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGA Architectures• 4000/Spartan

– NxN array of unit cells• Unit cell = CLB + routing

– Special routing along center axes

– I/O cells around perimeter

• Virtex/Spartan-2– MxN array of unit cells– Added block 4K RAMs at edges

• Virtex-2/Spartan-3– Block 18K RAMs in array– Added 18x18 multipliers with each RAM– Added PowerPCs in Virtex-2 Pro

• Virtex-4/Virtex-5– Added 48-bit DSP cores w/multipliers– I/O cells along columns for BGA

FPGAs

52

PC PC

PC

PC

Page 53: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx Virtex-4 FPGAs• Configuration memory: 4.7M to

50.8M bits of RAM• PLBs: 1,536 to 22,272

– 4 slices per PLB• 2 LUTs & 2 FFs per slice• 2 slices can operate as RAMs/SRs

• Block RAMs: 48 to 552 18K-bit dual-port RAMs– Also operate as FIFOs

• DSP cores: 32 to 512, each includes:– 18x18-bit multiplier– 48-bit adder & accumulator

• Up to 2 PowerPC processorsFPGAs

53

PC

PC

Page 54: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Block RAMs• 36 Kbit dual-port RAM• Each port independently configurable:

– IK words x 36 bits• 32 data bits + 4 parity bits

– 2K words x 18 bits• 16 data bits + 2 parity bits

– 4K words x 9 bits• 8 data bits + 1 parity bit

– 8K words x 4 bits (no parity)– 16K words x 2 bits (no parity)– 32K words x 1 bit (no parity)

• Each port has independently programmable

– clock edge, active levels for write enable, RAM enable, reset

FPGAs

54

Page 55: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

55

Page 56: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

6-56

ROMContents

Page 57: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Distributed RAM

FPGAs

6-57

Page 58: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

6-58

Page 59: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

59Refer to the “synthesis guide” for recommended HDL forms

Page 60: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

60

DSP Blocks: Multiplier and Support Circuits

Page 61: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

7 Series DSP48E1 DSP slice

FPGAs

61

• 25 × 18 two’s-complement multiplier: Dynamic bypass• 48-bit accumulator: Can be used as a synchronous up/down counter• Power-saving pre-adder: Optimizes symmetrical filter applications and

reduces DSP slice requirements

Page 62: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

DSP48E1 slice details

FPGAs

62

Page 63: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Embedded Processors

Embedded Processor

Core Type

Max Clock Frequency SlicesPLBs Block

RAMsPowerPC Hard 222 MHz 1000 250 9

Microblaze Soft 180 MHz 940 235 9Picoblaze Soft 221 MHz 333 84 3Picoblaze

(optimized) Soft 233 MHz 274 69 3

FPGAs63

Hard coreFasterFixed positionFew devices

Virtex-4 Processors:

Soft coreSlowerCan be placed anywhereApplicable to many devices

PowerPCMicroBlazeMicroBlaze

PicoBlaze

ARM Processors in 7 Series

Page 64: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx Zynq SoC devices

FPGAs

64

Zynq-7000 SoC: Dual-core ARM Cortex-A9 MPCore (up to 1GHz)Zynq UltraScale+ MPSoC:

• Quad-core ARM Cortex-A53 MP (up to 1.5 GHz)• Dual-core ARM Cortex-R5 MPCore (up to 600MHz)• GPY ARM Mali-400 MP2 (up to 667MHz)

PL =ProgrammableLogic

Page 65: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Zynq-7000 SoC Features (1)

FPGAs

65

Continued next slide

Processing System Resources

Page 66: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Zynq-7000 SoC Features (2)

FPGAs

66

Programmable Logic Resources

Page 67: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

67

Page 68: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Zynq-7000 SoC Processor System

FPGAs

68

Page 69: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGAs

69

Page 70: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Zynq-7000 SoC Logic Fabric

FPGAs

70

Series-7 CLBs, IOBs, etc. (as in Artix-7)

Page 71: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Configuration Interfaces• Master – FPGA retrieves its own configuration from ROM after power-up

– Serial or Parallel options

• Slave – FPGA configured by external source (i.e., a µP)– Serial or Parallel options– Used for dynamic reconfiguration– Can also read configuration memory contents

• Boundary Scan Interface– 4-wire IEEE standard serial interface for testing– Write and read access to configuration memory

• Not available in all FPGAs

• Used for dynamic partial reconfiguration

– Interfaces to FPGA core• Not available in all FPGAs

• Connections between Boundary Scan Interface and internal routing network and PLBs (Xilinx provides 2-4 of these ports)

• Other configuration interfaces in some FPGAs

FPGAs

71

clock

PROM withConfiguration

Data

data out

CCLK

FPGA inMasterMode

Din Dout

CCLK

FPGA inSlaveMode

Din Dout

CCLK

FPGA inSlaveMode

Din Dout

Page 72: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Slave configuration modes

FPGAs

72

Page 73: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Nexys4 DDR configuration options

FPGAs

73

1. USB-JTAG : PC connection via USB or JTAG2. Master SPI: Program from “quad mode” flash memory (x1, x2, x4 width)3. USB/SD: Program from micro SD card or USB memory stick

1

3

2

Artix-7 100T bitstream is typically 30,606,304 bits

Page 74: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

FPGA Configuration Memory• PLB addressable

– Good for partial reconfiguration

– X-Y coordinates of PLB location to be written

• Requires tag to identify which resources will be configured

• Frame addressable

– Vertical or horizontal frame

– Access to all PLBs in frame

• Only portion of logic and routing resources accessible in a given frame

• Many frames to configure PLBs

– Major address for column, minor address for frame

FPGAs

74

Hybrid, i.e.:Virtex-4Virtex-5Virtex-6

Page 75: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Daisy Chain Configuration

FPGAs

75

EPROM

ConfigurationBits

Page 76: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Xilinx Configuration Interface Pins

FPGAs

76

Page 77: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Configuration Techniques

• Full configuration & readback– Simple configuration interface

• Internal automatic calculation of frame address– Long download time for large FPGAs

• Partial reconfiguration & readback– Only change portions of configuration memory with respect to reference

design• Reduces download time for reconfiguration

– Requires more complicated interface• Command Register (CMR)• Frame Length Register (FLR)• Frame Address Register (FAR)• Frame Data Register

– Input (FDRI) – for download– Output (FDRO) – for readback (note separate access)

FPGAs

77

Page 78: FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)nelsovp/courses/elec... · Programmable ASIC logic cells • Xilinx : “configurable logic block” (CLB) contains ... I/O cells Routing PLBs

Full Configuration Example• Dummy Word 0xFFFFFFFF• Synchronize Word 0xAA995566• CMD Write 0x30008001

– Reset CRC 0x00000007• FLR Write 0x30016001

– FLR = 0x00000024– Frame length = 37 words

• 1,184 bits ÷ 32 bits/word• COR Write 0x30012001

– COR Write 0x00003FE5• IDCODE Write 0x3001C001

– Device ID = 0x0140D093 (3S50) • MASK Write 0x3000C001

– MASK = 0x00000000• CMD Write 0x30008001

– Switch CCLK 0x00000009• FAR Write 0x30002001

– FAR = 0x00000000 (full config)• CMD Write 0x30008001

– Write CFG 0x00000001• FDRI Write 0x30004000

– # words to write 0x50003555

FPGAs

78

Xilinx ASCII BitstreamCreated by Bitstream I.32Design name: s3mod7.ncdArchitecture: spartan3Part: 3s50tq144Date: Tue Sep 04 15:50:09 2007Bits: 4392641111111111111111111111111111111110101010100110010101010101100110001100000000000010000000000000010000000000000000000000000000011100110000000000010110000000000001000000000000000000000000001001000011000000000001001000000000000101000000000000000011111111100101001100000000000111000000000000010000000101000000110100001001001100110000000000001100000000000001000000000000000000000000000000000011000000000000100000000000000100000000000000000000000000001001001100000000000000100000000000010000000000000000000000000000000000110000000000001000000000000001000000000000000000000000000000010011000000000000010000000000000001010000000000000011010101010101start of actual configuration data