Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

31
Basic FPGA Architecture (Spartan-6) Slice and I/O Resources

Transcript of Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Page 1: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Basic FPGA Architecture (Spartan-6)Slice and I/O Resources

Page 2: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Objectives

After completing this module, you will be able to:

Describe the CLB and slice resources available in Spartan-6 FPGAs

Describe flip-flop functionality

Anticipate building proper HDL code for Spartan-6 FPGAs

Page 3: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Spartan-6 CLB

CLB contains two slices

Connected to the

switch matrix for

routing to other FPGA

resources

Carry chain runs vertically in a column

from one slice to the

one above– The Spartan-6 FPGA has a carry chain for the

Slice0 carry chain only

Sw

itchM

atrix

CIN

COUT

Page 4: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Routing

Spartan-6 FPGAs use a diagonally symmetric interconnect pattern– A rich set of programmable interconnections exist

between one switch matrix and the switch matrices nearby

– Many CLBs can be reached with only a few “hops”• A hop is a connection through an active connection

point

With the exception of the carry chain, all slice connections are done through the switch matrix

The mapping of logical connections to these physical routing resources is guided by the use of timing constraints

CLB

Direct1 Hop2 Hops3 Hops

Page 5: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

6-Input LUT with Dual Output

6-input LUT can be two 5-input LUTs with common inputs– Minimal speed impact to

a 6-input LUT– One or two outputs– Any function of six

variables or two

independent functions

of five variables

Page 6: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

FPGA Slice Resources

Four six-input Look Up Tables (LUT)

Four flip-flop/latches

Four additional flip-flops– These are the new flip-flops

Carry chain– This is supported on four of the

eight flip-flops

Wide multiplexers

The implementation tools will choose how best to pack your design

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

0 1

Page 7: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Wide Multiplexers

Each F7MUX combines the outputs of two LUTs together– This can make a 7-input function

or an 8-1 multiplexer

The F8MUX combines the outputs of the two F7MUXes– This can make an 8-input function

or a 16-1 multiplexer

MUX output can bypass the flip-flop/latch

These muxes save LUTs and improve performance

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

0 1

Page 8: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Carry Logic

Carry logic can implement fast arithmetic addition and subtraction – Carry out is propagated vertically

through the four LUTs in a slice– The carry chain propagates from

one slice to the slice in the same column in the CLB above (upward)• This requires bit ordering

Carry look-ahead– Combinatorial carry look-ahead

over the four LUTs in a slice– Implements faster carry cascading

from slice to slice

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

0 1

Page 9: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Flip-Flops and Latches

Each slice has four flip-flop/latches (FF/L)– Can be configured as either flip-flops or

latches– The D input can come from the O6 LUT

output, the carry chain, the wide multiplexer, or the AX/BX/CX/DX slice input

Each slice also has four flip-flops (FF)– D input can come from O5 output or the

AX/BX/CX/DX input• These don’t have access to the carry chain,

wide multiplexers, or the slice inputs• Only the O5 input is available in the

Spartan-6 FPGA

Note…if any of the FF/L are configured as latches, the four FFs are not available

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

LUT/RAM/SRL

0 1

FF/LFF

Page 10: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

CLB Control Signals

All flip-flops and flip-flop/latches share the same CLK, SR, and CE signals– This is referred to as the “control set” of the flip-flops– CE and SR are active high– CLK can be inverted at the slice boundary

Set/Reset (SR) signal can be configured as synchronous or asynchronous– All four flip-flop/latches are configured the same– All four flip-flops are configured the same– SR will cause the flip-flop to be set to the state

specified by the SRVAL attribute

DFF/LATCH

D

CE

SR

Q

CK

DCE

SR

AFF/LATCH

CK

D

CE

SR

Q

CK

D

CE

SR

Q

CK

D

CE

SR

Q

CK

AFF

DFF

● ●

● ●

Page 11: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

SLICEM as Distributed RAM

Uses the same storage that is used for the look-up table function

Synchronous write, asynchronous read– Can be converted to synchronous read

using the flip-flops available in the slice

Various configurations – Single port

• One LUT6 = 64x1 or 32x2 RAM• Cascadable up to 256x1 RAM

– Dual port (D)• 1 read / write port + 1 read-only port

– Simple dual port (SDP)• 1 write-only port + 1 read-only port

– Quad-port (Q)• 1 read / write port + 3 read-only ports

SinglePort

DualPort

SimpleDual Port

QuadPort

32x2 32x4 32x6 32x8 64x1 64x2 64x3 64x4

128x1128x2 256x1

32x2D 32x4D 64x1D 64x2D

128x1D

32x6SDP 64x3SDP

32x2Q 64x1Q

Each port has independent address inputs

Page 12: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

SLICEM as 32-bit Shift Register

Versatile SRL-type shift registers– Variable-length shift register– Synchronous FIFOs– Content-Addressable Memory (CAM)– Pattern generator– Compensate for delay / latency

Shift register length is determined by the address– Constant value giving fixed delay line– Dynamic addressing for elastic buffer

SRL is non-loadable and has no reset

Cascade these up to 128x1 shift register in one slice– Effectively, 32 registers with one LUT

SRL Configurations in one Slice (4 LUTs)

16x1, 16x2, 16x4, 16x6, 16x8

32x1, 32x2, 32x3, 32x4

64x1, 64x2

96x1

128x1

32

MUXMUXA5

Qn

32-bit Shift register32-bit Shift registerD

CLKQ 31

LUT

Page 13: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Shift Register LUT Example

Operation D - NOP must add 17 pipeline stages of 64 bits each– 1,088 flip-flops (136 slices) or– 64 SRLs (16 slices)

20 Cycles

64Operation A

8 Cycles8 Cycles 12 Cycles12 Cycles

Operation B

3 Cycles3 Cycles

Operation C

64

20 Cycles

Paths are StaticallyBalanced

17 Cycles17 Cycles

Operation D - NOP

Page 14: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Three Types of Slices

Three types of slices– SLICEM: Full slice (25%)

• LUT can be used for logic and memory/SRL

• Has wide multiplexers and carry chain

– SLICEL: Logic and arithmetic only (25%)• LUT can only be used for logic

(not memory)• Has wide multiplexers and carry chain

– SLICEX: Logic only (50%)• LUT can only be used for logic (not

memory)• No wide multiplexers or carry chain

SLICEXSLICEX

SLICEMSLICEM

SLICEXSLICEX

SLICELSLICEL

oror

Spartan-6 FPGA

Page 15: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

I/O Bank Structure

Spartan-6 I/Os are located on the periphery– Every IOB contains registers for clocking data in

and out of the device– IOBs are grouped into banks

• 4 – 6 banks, depending on the density• 30 ~ 83 I/O pins per banks

IOBs require compatible I/O standards to be grouped into banks

• This is called the I/O Banking Rules

• Based on common VCCO, VREF

• More banks allows greater mixture of standards across

the chip

– Clocking resources are specific to each bank• Global and/or regional clocking resources

BANK

BANK

BA

NK

BA

NK

Spartan-6 FPGA

Page 16: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

I/O Versatility

Each I/O supports over 40+ voltage and protocol standards, including– LVCMOS – LVDS, Bus LVDS– LVPECL – SSTL – HSTL – RSDS_25 (point-to-point)

Each pin can be input and output (including 3-state)

Each pin can be individually configured – IODELAY, drive strength, input threshold, termination, weak pull-up or pull-

down– Based on the I/O Banking Rules (some standards not compatible within

the same bank)

Page 17: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

I/O Electrical Resources

P and N pins can be configured as single-ended signals

…or as a differential pair– Transmitter available only

in top and bottom banks (Bank0 and Bank2)• Receiver available in all banks• Receiver termination available in all banks

Whether your pin is single-ended or differential will affect your pin layout

N

P

LVDS

Termination

Tx

Rx

Tx

Rx

Page 18: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

IOB Element

Input path– Two DDR registers

Output path– Two DDR registers– Two 3-state enable

DDR registers

Separate clocks and clock enables for I and O

Set and reset signals are shared

Page 19: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

I/O Logical Resources

Two IOLOGIC blocks per I/O pair– Master and slave– Can operate independently or

be concatenated

Each IOLOGIC contains…– IOSERDES

• Parallel to serial converter (serializer)• Serial to parallel converter

(De-serializer)

– IODELAY• Selectable fine-grained delay

– SDR and DDR resources

IOSERDESIODELAY

Inte

rcon

nect

to F

PGA

fabr

ic

Master IOLOGIC

IOSERDESIODELAY

Slave IOLOGIC

Page 20: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Each flip-flop has four input signals– D – data input– CK – clock– CE – clock enable (Active High)– SR – async/sync set/reset (Active High)

• Either Set or Reset can be implemented (not both)

All eight flip-flops share the same control signals– CK – clock– CE – Clock Enable– SR – Set/Reset

Flip-Flop Details

DCE

SR

Q

FF

CK

Page 21: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Design Tips

Suggestions for faster and smaller designs– Leverage the FPGAs Global Reset whenever possible

– Design synchronously• Use synchronous Set/Reset whenever possible• Don’t gate your clocks (use the CE, instead)• Use the clock routing resources to minimize clock skew

– Use active-high CE and Set/Reset (no local inverter)

DCE

SR

Q

FF1

CK

DCE

SR

Q

FF8

CK

● ● ●

Page 22: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Software intelligently packs logic

LUT

Design

Related logic and flip-flops are coded

Software

Software packs slices for optimum performance

LUT

FPGA

LUT

Slice

LUT

Software places the logic and flip-flop in the same slice

Page 23: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Control Signals

Different flip-flop configurations– If coded registers do not map cleanly to the flip-flops, the software tools

will automatically implement the missing functionality by using LUT inputs– Can increase overall LUT utilization, but can be helpful for fitting the

design

Case Design FPGA

CE active Low

Both Synchronous Set and Reset are used

D QCE

CK

D Q

CK

D QCK

SsetSReset

D Q

CKSRSReset

SsetD

Software uses LUTs to map extra control functionality

CED

Page 24: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Control Set Reduction

Flip-flops with different control sets cannot be packed into the same slice

Software can be instructed to reduce the number of control sets by mapping control logic to LUT resources– This results in higher LUT utilization, but a lower overall slice utilization

D QCK

D QCK

D QCK

D QCK

D QCK

D QCK

DSset

DSReset

Design FPGA

3 S

lices

1 S

lice

Sset

SReset

Page 25: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Using the Slice Resources

Three primary mechanisms for using FPGA resources– Inference

• Describe the behavior of the desired circuit using Register Transfer Language (RTL)

• The synthesis tool will analyze the described behavior and use the required FPGA resources to implement the equivalent circuit

– Instantiation• Create an instance of the FPGA resource using the name of the primitive and

manually connecting the ports and setting the attributes

– CORE Generator™ tool and Architecture Wizard• The CORE Generator software and Architecture Wizard are graphical tools

that allow you to build and customize modules with specific functionality• The resulting modules range from simple modules containing few FPGA

resources or highly complex Intellectual Property (IP) cores

Page 26: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Inference

All primary slice resources can be inferred by XST and Synplify– LUTs

• Most combinatorial functions will map to LUTs

– Flip-flops• Coding style defines the behavior

– SRL• Non-loadable, serial functionality

– Multiplexers• Use a CASE statement or other conditional operators

– Carry logic• Use arithmetic operators (addition, subtraction, comparison)

Inference should be used wherever possible– HDL code is portable, compact, and easily understood and maintained

Page 27: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Instantiation

For a list of primitives that can be instantiated, see the HDL library guide– Provides a list of primitives, their functionality, ports, and attributes

Use instantiation when it is difficult to infer the exact resource you want

Help Software Manuals Libraries Guides

Page 28: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

CORE Generator and Architecture Wizard

The CORE Generator tool and Architecture Wizard can help you create modules with the required functionality– Typically used for FPGA-specific resources (like clocking, memory, or

I/O), or for more complex functions (like memory controllers or DSP functions)

Page 29: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Summary

All slices contain four 6-input LUTs and eight registers– LUTs can perform any combinatorial function of up to six inputs or two

functions of five inputs– Four of the eight registers can be used as flip-flops or latches; the

remaining four can only be used as flip-flops– Flip-flops have active high CE inputs and active high synchronous or

asynchronous Set/Rest inputs

SLICEL slices also contain carry logic and the dedicated multiplexers– The MUXF7 multiplexers combine LUT outputs to create 8-input

multiplexers– The MUXF8 multiplexers combine the MUXF7 outputs to create 16-input

multiplexers– The carry logic can be used to implement fast arithmetic functions

The LUTs in SLICEM slices can also SRL and distributed memory functionality

Manage your control set usage to reduce the size and increase the speed of your design

Page 30: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Where Can I Learn More?

Software Manuals– Start Xilinx ISE Design Suite 13.1 ISE Design Tools

Documentation Software Manuals– This includes the Synthesis & Simulation Design Guide

• This guide has example inferences of many architectural resources

– XST User Guide• HDL language constructs and coding recommendations

– Targeting and Retargeting Guide for Spartan-6 FPGAs, WP309– Spartan-6 FPGA User Guides

Xilinx Education Services courses– www.xilinx.com/training

• Xilinx tools and architecture courses• Hardware description language courses• Basic FPGA architecture, Basic HDL Coding Techniques, and other Free

Videos!

Page 31: Basic FPGA Architecture (Spartan-6) Slice and I/O Resources.

Xilinx is disclosing this Document and Intellectual Property (hereinafter “the Design”) to you for use in the development of designs to operate on, or interface with Xilinx FPGAs. Except as stated herein, none of the Design may be copied, reproduced, distributed, republished, downloaded, displayed, posted, or transmitted in any form or by any means including, but not limited to, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of Xilinx. Any unauthorized use of the Design may violate copyright laws, trademark laws, the laws of privacy and publicity, and communications regulations and statutes.

Xilinx does not assume any liability arising out of the application or use of the Design; nor does Xilinx convey any license under its patents, copyrights, or any rights of others. You are responsible for obtaining any rights you may require for your use or implementation of the Design. Xilinx reserves the right to make changes, at any time, to the Design as deemed desirable in the sole discretion of Xilinx. Xilinx assumes no obligation to correct any errors contained herein or to advise you of any correction if such be made. Xilinx will not assume any liability for the accuracy or correctness of any engineering or technical support or assistance provided to you in connection with the Design.

THE DESIGN IS PROVIDED “AS IS" WITH ALL FAULTS, AND THE ENTIRE RISK AS TO ITS FUNCTION AND IMPLEMENTATION IS WITH YOU. YOU ACKNOWLEDGE AND AGREE THAT YOU HAVE NOT RELIED ON ANY ORAL OR WRITTEN INFORMATION OR ADVICE, WHETHER GIVEN BY XILINX, OR ITS AGENTS OR EMPLOYEES. XILINX MAKES NO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE DESIGN, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT OF THIRD-PARTY RIGHTS.

IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES, INCLUDING ANY LOST DATA AND LOST PROFITS, ARISING FROM OR RELATING TO YOUR USE OF THE DESIGN, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE TOTAL CUMULATIVE LIABILITY OF XILINX IN CONNECTION WITH YOUR USE OF THE DESIGN, WHETHER IN CONTRACT OR TORT OR OTHERWISE, WILL IN NO EVENT EXCEED THE AMOUNT OF FEES PAID BY YOU TO XILINX HEREUNDER FOR USE OF THE DESIGN. YOU ACKNOWLEDGE THAT THE FEES, IF ANY, REFLECT THE ALLOCATION OF RISK SET FORTH IN THIS AGREEMENT AND THAT XILINX WOULD NOT MAKE AVAILABLE THE DESIGN TO YOU WITHOUT THESE LIMITATIONS OF LIABILITY.

The Design is not designed or intended for use in the development of on-line control equipment in hazardous environments requiring fail-safe controls, such as in the operation of nuclear facilities, aircraft navigation or communications systems, air traffic control, life support, or weapons systems (“High-Risk Applications”). Xilinx specifically disclaims any express or implied warranties of fitness for such High-Risk Applications. You represent that use of the Design in such High-Risk Applications is fully at your risk.

© 2012 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are the property of their respective owners.

Trademark Information