162
R Spartan-3E Libraries Guide for HDL Designs ISE 7.1i

Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

Spartan-3E Libraries Guide for HDL Designs

ISE 7.1i

Page 2: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

About This GuideR

2 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

© 2005 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.

NOTICE OF DISCLAIMER: Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose.

Page 3: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

About this Guide

The Spartan-3E™ Libraries Guide for HDL Designs is part of the ISE documentation collection. A separate version of this guide is also available for users who prefer to work with schematics in their circuit design activities. (See Spartan-3E™ Libraries Guide for Schematic Designs.)

Guide ContentsThis guide contains the following:

• Information about additional resources and conventions used in this guide.

• A general introduction to the Spartan-3E primitives.

• A listing of the primitives and macros that are supported by the Spartan-3E archi-tecture, organized by functional categories.

• Individual sections for each of the primitive design elements, including VHDL and Verilog instantiation and inference code examples.

• Referrals to additional sources of information.

Additional ResourcesFor additional information, go to http://www.xilinx.com/support. The following table lists some of the resources you can access from this website. You can also directly access these resources using the provided URLs.

Resource Description/URL

Tutorials Tutorials covering Xilinx design flows, from design entry to verification and debugging

http://www.xilinx.com/support/techsup/tutorials/index.htm

Answer Browser Database of Xilinx solution records

http://www.xilinx.com/xlnx/xil_ans_browser.jsp

Application Notes

Descriptions of device-specific design techniques and approaches

http://www.xilinx.com/apps/appsweb.htm

Data Sheets Pages from The Programmable Logic Data Sheets, which contains device-specific information on Xilinx device characteristics, including readback, boundary scan, configuration, length count, and debugging http://www.xilinx.com/xlnx/xweb/xil_publications_index.jsp

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 3ISE 7.1i 1-800-255-7778

Page 4: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

ConventionsThis document uses the following conventions. An example illustrates each convention.

TypographicalThe following typographical conventions are used in this document:

Problem Solvers Interactive tools that allow you to troubleshoot your design issues

http://www.xilinx.com/support/troubleshoot/psolvers.htm

Tech Tips Latest news, design tips, and patch information for the Xilinx design environmenthttp://www.xilinx.com/xlnx/xil_tt_home.jsp

Convention Meaning or Use Example

Courier font Messages, prompts, and program files that the system displays

speed grade: - 100

Courier bold Literal commands that you enter in a syntactical statement

ngdbuild design_name

Helvetica bold Commands that you select from a menu

File → Open

Keyboard shortcuts Ctrl+CItalic font Variables in a syntax statement for

which you must supply valuesngdbuild design_name

References to other manuals See the Development System Reference Guide for more information.

Emphasis in text If a wire is drawn so that it overlaps the pin of a symbol, the two nets are not connected.

Square brackets [ ] An optional entry or parameter. However, in bus specifications, such as bus[7:0], they are required.

ngdbuild [option_name] design_name

Braces { } A list of items from which you must choose one or more

lowpwr ={on|off}

Vertical bar | Separates items in a list of choices lowpwr ={on|off}

Vertical ellipsis...

Repetitive material that has been omitted

IOB #1: Name = QOUT’ IOB #2: Name = CLKIN’...

Horizontal ellipsis . . . Repetitive material that has been omitted

allow block block_name loc1 loc2 ... locn;

Resource Description/URL

4 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 5: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

Online DocumentThe following conventions are used in this document:

IntroductionThis version of the Libraries Guide describes the primitive and macro design elements that make up the Xilinx Unified Libraries and are supported by the Spartan-3E architecture, and includes examples of instantiation and inference code for each primitive.

Xilinx maintains software libraries with hundreds of functional design elements (primitives and macros) for different device architectures. New functional elements are assembled with each release of development system software. In addition to a comprehensive, Unified Library containing all design elements, beginning in 2003, Xilinx developed a separate library for each architecture. This Spartan-3E guide is the first in a series of architecture-specific libraries.

If you have active designs that were created with former Xilinx library primitives or macros, you may need to change references to the design elements that you were using to reflect the elements described herein.

This guide describes the primitive elements available for Xilinx Spartan-3E FPGA devices. Common logic functions can be implemented with these elements and more complex functions can be built by combining macros and primitives.

Functional CategoriesThe functional categories list the available design elements in each category along with a brief description of each element that is supported under each Xilinx architecture.

Naming ConventionsExamples of the general naming conventions for the unified library elements are shown in the following figures.

Convention Meaning or Use Example

Blue text Cross-reference link to a location in the current document

See the section “Additional Resources” for details.

Red text Cross-reference link to a location in another document

See Figure 2-5 in the Virtex-II Handbook.

Blue, underlined text Hyperlink to a website (URL) Go to http://www.xilinx.com for the latest speed files.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 5ISE 7.1i 1-800-255-7778

Page 6: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

Naming Conventions

Combinatorial Naming Conventions

Attributes and ConstraintsAttributes are characteristics that help define the functionality of primitive elements. Where appropriate, an "Available Attributes" table is included in the individual descriptions of design elements. Constraints are instructions placed on components, or nets, to indicate their placement, implementation, optimization, and so forth. The Constraints Guide provides additional information about constraints and certain attributes.

X7764

Clear (Asynchronous)4-BitCounter, Binary

Load

Clock Enable

Bi-Directional

C B 4 C L E D

CONTROL PINSSIZEFUNCTION

Example 1

Example 2

16-BitFlip-Flop, D-type

Precedence of Control Pins

Precedence of Control Pins

Reset (Synchronous)

Clock Enable

F D 1 6 R E

CONTROL PINSSIZEFUNCTION

X4316

AND3B2

Logic Function

Number of Inputs

Inverting (Bubble) Inputs

Number of Inverting Inputs

6 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 7: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

Table of Contents

About this Guide

Guide Contents ............................................................................................................................ 3Additional Resources ................................................................................................................ 3Conventions .................................................................................................................................. 4

Typographical ......................................................................................................................... 4Online Document ................................................................................................................... 5

Introduction .................................................................................................................................. 5Functional Categories ................................................................................................................ 5Naming Conventions ................................................................................................................. 5Attributes and Constraints ...................................................................................................... 6

Functional Categories

Arithmetic Functions ................................................................................................................. 9Clock Components ..................................................................................................................... 9Config/BSCAN Components .................................................................................................. 9I/O Components .......................................................................................................................... 9RAM/ROM .................................................................................................................................. 10Registers & Latches .................................................................................................................. 10Shift Registers ............................................................................................................................ 10Slice/CLB Primitives ................................................................................................................ 10

About the Spartan-3E Design Elements

BSCAN_SPARTAN3 ................................................................................................................ 15BUFG ............................................................................................................................................. 17BUFGCE ....................................................................................................................................... 19BUFGCE_1 ................................................................................................................................... 21BUFGMUX .................................................................................................................................. 23BUFGMUX_1 .............................................................................................................................. 25CAPTURE_SPARTAN3 ........................................................................................................... 27DCM .............................................................................................................................................. 29FDCPE ........................................................................................................................................... 35FDRSE ........................................................................................................................................... 37IBUF, 4, 8, 16 ................................................................................................................................ 39IBUFDS ......................................................................................................................................... 41IBUFG ............................................................................................................................................ 43IBUFGDS ..................................................................................................................................... 45IDDR2 ........................................................................................................................................... 47IOBUF ............................................................................................................................................ 51IOBUFDS ..................................................................................................................................... 53KEEPER ........................................................................................................................................ 55LUT1, 2, 3, 4 ................................................................................................................................. 57LUT1_D, LUT2_D, LUT3_D, LUT4_D ............................................................................... 61LUT1_L, LUT2_L, LUT3_L, LUT4_L ................................................................................... 65MULT_AND ................................................................................................................................ 69MULT18X18SIO ......................................................................................................................... 71MUXCY ......................................................................................................................................... 73MUXCY_D ................................................................................................................................... 75MUXCY_L .................................................................................................................................... 77MUXF5 .......................................................................................................................................... 79MUXF5_D .................................................................................................................................... 81MUXF5_L ..................................................................................................................................... 83MUXF6 .......................................................................................................................................... 85MUXF6_D .................................................................................................................................... 87MUXF6_L ..................................................................................................................................... 89

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 7ISE 7.1i 1-800-255-7778

Page 8: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

MUXF7 .......................................................................................................................................... 91MUXF7_D .................................................................................................................................... 93MUXF7_L ..................................................................................................................................... 95MUXF8 .......................................................................................................................................... 97MUXF8_D .................................................................................................................................... 99MUXF8_L ................................................................................................................................... 101OBUF ........................................................................................................................................... 103OBUFDS ..................................................................................................................................... 105OBUFT ......................................................................................................................................... 107OBUFTDS .................................................................................................................................. 109ODDR2 ....................................................................................................................................... 111PULLDOWN ............................................................................................................................. 113PULLUP ...................................................................................................................................... 115RAM16X1D ............................................................................................................................... 117RAM16X1S ................................................................................................................................ 121RAM32X1S ................................................................................................................................ 123RAM64X1S ................................................................................................................................ 125ROM16X1 ................................................................................................................................... 127ROM32X1 ................................................................................................................................... 129ROM64X1 ................................................................................................................................... 131ROM128X1 ................................................................................................................................. 133ROM256X1 ................................................................................................................................. 135SRL16 ........................................................................................................................................... 137SRL16_1 ...................................................................................................................................... 141SRL16E ........................................................................................................................................ 143SRL16E_1 .................................................................................................................................... 145SRLC16 ........................................................................................................................................ 147SRLC16_1 ................................................................................................................................... 149SRLC16E ..................................................................................................................................... 151SRLC16E_1 ................................................................................................................................ 153STARTUP_SPARTAN3E ....................................................................................................... 155XORCY ........................................................................................................................................ 157XORCY_D .................................................................................................................................. 159XORCY_L ................................................................................................................................... 161

8 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 9: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

Arithmetic FunctionsR

Functional Categories

This section categorizes, by function, the Spartan-3E design elements that are described in detail later in this guide. The elements (primitive and macro implementations) are listed in alphanumeric order under each functional category.

Arithmetic Functions

Clock Components

Config/BSCAN Components

I/O Components

Arithmetic Functions I/O Components Shift Registers

Clock Components RAM/ROM Slice/CLB Primitives

Config/BSCAN Components Registers & Latches

Design Element Description

MULT18X18SIO Primitive: 18x18 Cascadable Signed Multiplier with Optional Input and Output registers, Clock Enable, and Synchronous Reset

Design Element Description

BUFG Primitive : Global Clock Buffer

BUFGCE Primitive : Global Clock MUX with Clock Enable and Output State 0

BUFGCE_1 Primitive : Global Clock MUX Buffer with Clock Enable and Output State 1

BUFGMUX Primitive : Global Clock MUX Buffer with Output State 0

BUFGMUX_1 Primitive : Global Clock MUX with Output State 1

DCM Primitive: Digital Clock Manager

Design Element Description

BSCAN_SPARTAN3 Primitive: Spartan-3 Boundary Scan Logic Control Circuit

CAPTURE_SPARTAN3 Primitive: Spartan-3 Register State Capture for Bitstream Readback

STARTUP_SPARTAN3E Primitive : Spartan-3E User Interface to the GSR, GTS, Configuration Startup Sequence and Multi-Boot Trigger Circuitry

Design Element Description

IBUFDS Primitive : Differential Signaling Input Buffer with Selectable I/O Interface

IBUFG Primitive : Dedicated Input Buffer with Selectable I/O Interface

IBUFGDS Primitive : Dedicated Differential Signaling Input Buffer with Selectable I/O Interface

IDDR2 Primitive: Dual Data Rate Input D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set/Reset

ODDR2 Primitive: Dual Data Rate Output D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set/Reset

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 9ISE 7.1i 1-800-255-7778

Page 10: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM/ROMR

RAM/ROM

Registers & Latches

Shift Registers

Slice/CLB Primitives

IOBUF Primitive : Bi-Directional Buffer with Selectable I/0 Interface (multiple primitives)

IOBUFDS Primitive : 3-State Differential Signaling I/O Buffer with Active Low Output Enable

KEEPER Primitive : KEEPER Symbol

OBUF Primitive : Single- and Multiple-Output Buffer

OBUFDS Primitive : Differential Signaling Output Buffer with Selectable I/O Interface

OBUFT Primitive: 3-State Output Buffer with Active Low Output Enable

OBUFTDS Primitive : 3-State Output Buffer with Differential Signaling, Active-Low Output Enable, and Selectable I/O Interface

PULLDOWN Primitive : Resistor to GND for Input Pads

PULLUP Primitive : Resistor to VCC for Input PADs, Open-Drain, and 3-State Outputs

Design Element Description

RAM16X1D Primitive : 16-Deep by 1-Wide Static Dual Port Synchronous RAM

RAM16X1S Primitive : 16-Deep by 1-Wide Static Synchronous RAM

RAM32X1S Primitive: 32-Deep by 1-Wide Static Synchronous RAM

RAM64X1S Primitive: 64-Deep by 1-Wide Static Synchronous RAM

ROM16X1 Primitive: 16-Deep by 1-Wide ROM

ROM32X1 Primitive: 32-Deep by 1-Wide ROM

ROM64X1 Primitive: 64-Deep by 1-Wide ROM

ROM128X1 Primitive: 128-Deep by 1-Wide ROM

ROM256X1 Primitive: 256-Deep by 1-Wide ROM

Design Element Description

FDCPE Primitive : D Flip-Flop with Clock Enable and Asynchronous Preset and Clear

FDRSE Primitive : D Flip-Flop with Synchronous Reset and Set and Clock Enable

Design Element Description

SRL16 Primitive : 16-Bit Shift Register Look-Up-Table (LUT)

SRL16_1 Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Negative-Edge Clock

SRL16E Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Clock Enable

SRL16E_1 Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Negative-Edge Clock and Clock Enable

SRLC16 Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Carry

SRLC16_1 Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Carry and Negative-Edge Clock

SRLC16E Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Carry and Clock Enable

SRLC16E_1 Primitive : 16-Bit Shift Register Look-Up-Table (LUT) with Carry, Negative-Edge Clock, and Clock Enable

Design Element Description

LUT1 Primitive : 1-Bit Look-Up-Table with General Output

LUT2 Primitive : 2-Bit Look-Up-Table with General Output

LUT3 Primitive : 3-Bit Look-Up-Table with General Output

Design Element Description

10 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 11: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

Slice/CLB PrimitivesR

LUT4 Primitive : 4-Bit Look-Up-Table with General Output

LUT1_D Primitive : 1-Bit Look-Up-Table with Dual Output

LUT2_D Primitive : 2-Bit Look-Up-Table with Dual Output

LUT3_D Primitive : 3-Bit Look-Up-Table with Dual Output

LUT4_D Primitive : 4-Bit Look-Up-Table with Dual Output

LUT1_L Primitive : 1-Bit Look-Up-Table with Local Output

LUT2_L Primitive : 2-Bit Look-Up-Table with Local Output

LUT3_L Primitive : 3-Bit Look-Up-Table with Local Output

LUT4_L Primitive : 4-Bit Look-Up-Table with Local Output

MULT_AND Primitive : Fast Multiplier AND

MUXCY Primitive : 2-to-1 Multiplexer for Carry Logic with General Output

MUXCY_D Primitive : 2-to-1 Multiplexer for Carry Logic with Dual Output

MUXCY_L Primitive : 2-to-1 Multiplexer for Carry Logic with Local Output

MUXF5 Primitive : 2-to-1 Lookup Table Multiplexer with General Output

MUXF5_D Primitive : 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF5_L Primitive : 2-to-1 Lookup Table Multiplexer with Local Output

MUXF6 Primitive : 2-to-1 Lookup Table Multiplexer with General Output

MUXF6_D Primitive : 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF6_L Primitive : 2-to-1 Lookup Table Multiplexer with Local Output

MUXF7 Primitive : 2-to-1 Lookup Table Multiplexer with General Output

MUXF7_D Primitive : 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF7_L Primitive : 2-to-1 Lookup Table Multiplexer with Local Output

MUXF8 Primitive : 2-to-1 Lookup Table Multiplexer with General Output

MUXF8_D Primitive : 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF8_L Primitive : 2-to-1 Lookup Table Multiplexer with Local Output

XORCY Primitive : XOR for Carry Logic with General Output

XORCY_D Primitive : XOR for Carry Logic with Dual Output

XORCY_L Primitive : XOR for Carry Logic with Local Output

Design Element Description

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 11ISE 7.1i 1-800-255-7778

Page 12: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

Slice/CLB PrimitivesR

12 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 13: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

About the Spartan-3E Design Elements

The remaining sections in this book describe each primitive design element that can be used under the Spartan-3E architecture.

The design elements are organized in alphanumeric order, with all numeric suffixes in ascending order. For example, FDCPE precedes FDRSE, and IBUF precedes IBUFDS.

The following information is provided for each library element, where applicable

• Name of each element

• Description of each element, including truth tables, where applicable

• A description of the attributes associated with each design element, where appropriate.

• Examples of VHDL and Verilog instantiation and inference code, where applicable

• Referrals to additional sources of information.

Designers who prefer to work with schematics are encouraged to consult the Spartan-3E Libraries Guide for Schematic Designs.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 13ISE 7.1i 1-800-255-7778

Page 14: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

R

14 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 15: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BSCAN_SPARTAN3R

BSCAN_SPARTAN3

Primitive: Spartan-3 Boundary Scan Logic Control Circuit

BSCAN_SPARTAN3 currently serves the “BSCAN_SPARTAN-3E” function and provides access to the BSCAN sites on a Spartan-3E device. It is used to create internal boundary scan chains. The 4-pin JTAG interface (TDI, TDO, TCK, and TMS) are dedicated pins in Spartan-3E. To use normal JTAG for boundary scan purposes, just hook up the JTAG pins to the port and go. The pins on the BSCAN_SPARTAN symbol do not need to be connected, unless those special functions are needed to drive an internal scan chain.

A signal on the TDO1 input is passed to the external TDO output when the USER1 instruction is executed; the SEL1 output goes High to indicate that the USER1 instruction is active.The DRCK1 output provides USER1 access to the data register clock (generated by the TAP controller). The TDO2 and SEL2 pins perform a similar function for the USER2 instruction and the DRCK2 output provides USER2 access to the data register clock (generated by the TAP controller). The RESET, UPDATE, SHIFT, and CAPTURE pins represent the decoding of the corresponding state of the boundary scan internal state machine. The TDI pin provides access to the TDI signal of the JTAG port in order to shift data into an internal scan chain.

Usage

This design element is instantiated rather than inferred.

VHDL Instantiation Template

-- Component Declaration for BSCAN_SPARTAN3 should be placed-- after architecture statement but before begin keyword

component BSCAN_SPARTAN3port (CAPTURE : out STD_ULOGIC;

DRCK1 : out STD_ULOGIC;DRCK2 : out STD_ULOGIC;RESET : out STD_ULOGIC;SEL1 : out STD_ULOGIC;SEL2 : out STD_ULOGIC;SHIFT : out STD_ULOGIC;TDI : out STD_ULOGIC;UPDATE : out STD_ULOGIC;TD01 : in STD_ULOGIC;TD02 : in STD_ULOGIC);

end component;

-- Component Attribute specification for BSCAN_SPARTAN3-- should be placed after architecture declaration but-- before the begin keyword

-- Enter attributes here

-- Component Instantiation for BSCAN_SPARTAN3 should be -- placed in architecture after the begin keyword

BSCAN_SPARTAN3_INSTANCE_NAME : BSCAN_SPARTAN3

DCM_BASE

CLKFX

CLKDV

CLK2X

CLK270

CLK180

CLK90

CLKFX180

RST

CLKFB

CLKIN

CLK2X180

CLK0

LOCKED

X10103

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 15ISE 7.1i 1-800-255-7778

Page 16: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BSCAN_SPARTAN3R

port map (CAPTURE => user_CAPTURE,DRCK1 => user_DRCK1,DRCK2 => user_DRCK2,RESET => user_RESET,SEL1 => user_SEL1,SEL2 => user_SEL2,SHIFT => user_SHIFT,TDI => user_TDI,UPDATE => user_UPDATE,TD01 => user_TD01,TD02 => user_TD02);

Verilog Instantiation Template

// BSCAN_SPARTAN3:Boundary Scan primitve for connecting internal logic// JTAG interface. Spartan-II// Xilinx HDL Libraries Guide version 7.1i

BSCAN_SPARTAN3 BSCAN_SPARTAN3_inst ( .CAPTURE(CAPTURE), // CAPTURE output from TAP controller .DRCK1(DRCK1), // Data register output - USER1 functions .DRCK2(DRCK2), // Data register output - USER2 functions .RESET(RESET), // Reset output from TAP controller .SEL1(SEL1), // USER1 active output .SEL2(SEL2), // USER2 active output .SHIFT(SHIFT), // SHIFT output from TAP controller .TDI(TDI), // TDI output from TAP controller .UPDATE(UPDATE), // UPDATE output from TAP controller .TDO1(TDO1), // Data input for USER1 function .TDO2(TDO2) // Data input for USER2 function );

For More Information

Consult the Spartan-3E Data Sheets.

16 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 17: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGR

BUFG

Primitive: Global Clock Buffer

BUFG, an architecture-independent global buffer, distributes high fan-out clock signals throughout a PLD device. The Xilinx implementation software converts each BUFG to an appropriate type of global buffer for the Spartan-3E device.

To use a BUFG in a schematic, connect the input of the BUFG symbol to the clock source. The clock source can be an external PAD symbol, an IBUF symbol, or internal logic. For a negative-edge clock input, insert an INV (inverter) symbol between the BUFG output and the clock input. The inversion is implemented at the Configurable Logic Block (CLB) or Input Output Block (IOB) clock pin.

BUFG is simply a clock buffer with one clock input and one clock output.

Usage

To use a specific type of buffer, instantiate it manually. This design element is supported for schematics and instantiation. Synthesis tools usually infer a BUFGP on any clock net. If there are more clock nets than BUFGPs, the synthesis tool usually instantiates BUFGPs for the clocks that are most utilized. The BUFGP contains both a BUFG and an IBUFG.

VHDL Instantiation Template

-- BUFG: Global Clock Buffer (source by an internal signal) -- Xilinx HDL Language Template version 7.1i

BUFG_inst : BUFG port map ( O => O, -- Clock buffer output I => I -- Clock buffer input );

-- End of BUFG_inst instantiation

Verilog Instantiation Template

// BUFG: Global Clock Buffer (source by an internal signal) // Xilinx HDL Language Template version 7.1i

BUFG BUFG_inst ( .O(O), // Clock buffer output .I(I) // Clock buffer input );

// End of BUFG_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

X9428

I O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 17ISE 7.1i 1-800-255-7778

Page 18: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGR

18 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 19: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGCER

BUFGCE

Primitive: Global Clock Buffer with Clock Enable and Output State 0

BUFGCE is a clock buffer with one clock input, one clock output, and a clock enable line. Its O output is "0" when clock enable (CE) is Low (inactive). When clock enable (CE) is High, the I input is transferred to the O output.

Usage

This design element is supported for schematics and instantiations but not for inference.

VHDL Instantiation Template

-- BUFGCE: Global Clock Buffer with Clock Enable (active high) -- All FPGA -- Xilinx HDL Language Template version 7.1i

BUFGCE_inst : BUFGCE port map ( O => O, -- Clock buffer ouptput CE => CE, -- Clock enable input I => I -- Clock buffer input );

-- End of BUFGCE_inst instantiation

Verilog Instantiation Template

// BUFGCE: Global Clock Buffer with Clock Enable (active high) // All FPGA // Xilinx HDL Language Template version 7.1i

BUFGCE BUFGCE_inst ( .O(O), // Clock buffer ouptput .CE(CE), // Clock enable input .I(I) // Clock buffer input );

// End of BUFGCE_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

Inputs Outputs

I CE O

X 0 0

I 1 I

X9384

CE

I O

BUFGCE

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 19ISE 7.1i 1-800-255-7778

Page 20: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGCER

20 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 21: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGCE_1R

BUFGCE_1

Primitive: Global Clock Buffer with Clock Enable and Output State 1

BUFGCE is a clock buffer with one clock input, one clock output, and a clock enable line. Its O output is High (1) when clock enable (CE) is Low (inactive). When clock enable (CE) is High, the I input is transferred to the O output.

Usage

This design element is supported for schematics and instantiations but not for inference.

VHDL Instantiation Template

-- BUFGCE_1: Global Clock Buffer with Clock Enable (active low) -- All FPGA -- Xilinx HDL Language Template version 7.1i

BUFGCE_1_inst : BUFGCE_1 port map ( O => O, -- Clock buffer ouptput CE => CE, -- Clock enable input I => I -- Clock buffer input);

-- End of BUFGCE_1_inst instantiation

Verilog Instantiation Template

// BUFGCE_1: Global Clock Buffer with Clock Enable (active low) // All FPGA // Xilinx HDL Language Template version 7.1i

BUFGCE_1 BUFGCE_1_inst ( .O(O), // Clock buffer ouptput .CE(CE), // Clock enable input .I(I) // Clock buffer input );

// End of BUFGCE_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

Inputs Outputs

I CE O

X 0 1

I 1 I

X9385

CE

I O

BUFGCE_1

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 21ISE 7.1i 1-800-255-7778

Page 22: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGCE_1R

22 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 23: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGMUXR

BUFGMUX

Primitive: Global Clock MUX Buffer with Output State 0

BUFGMUX is a multiplexed global clock buffer that can select between two input clocks I0 and I1. When the select input (S) is Low, the signal on I0 is selected for output (O). When the select input (S) is High, the signal on I1 is selected for output.

BUFGMUX and BUFGMUX_1 are distinguished by which state the output assumes when it switches between clocks in response to a change in its select input. BUGFMUX assumes output state 0 and BUFGMUX_1 assumes output state 1.

Note: BUFGMUX guarantees that when S is toggled, the state of the output will remain in the inactive state until the next active clock edge (either I0 or I1) occurs.

Usage

This design element is supported for schematics and instantiations but not for inference.

VHDL Instantiation Template

-- BUFGMUX: Global Clock Buffer 2-to-1 MUX -- All FPGA -- Xilinx HDL Language Template version 7.1i

BUFGMUX_inst : BUFGMUX port map ( O => O, -- Clock MUX output I0 => I0, -- Clock0 input I1 => I1, -- Clock1 input S => S -- Clock select input );

-- End of BUFGMUX_inst instantiation

Verilog Instantiation Template

// BUFGMUX: Global Clock Buffer 2-to-1 MUX // All FPGA // Xilinx HDL Language Template version 7.1i

BUFGMUX BUFGMUX_inst ( .O(O), // Clock MUX output .I0(I0), // Clock0 input .I1(I1), // Clock1 input

Inputs Outputs

I0 I1 S O

I0 X 0 I0

X I1 1 I1

X X ↑ 0

X X ↓ 0

X9251

BUFGMUX

OI1

I0

S

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 23ISE 7.1i 1-800-255-7778

Page 24: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGMUXR

.S(S) // Clock select input );

// End of BUFGMUX_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

24 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 25: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGMUX_1R

BUFGMUX_1

Primitive: Global Clock MUX Buffer with Output State 1

BUFGMUX_1 is a multiplexed global clock buffer that can select between two input clocks I0 and I1. When the select input (S) is Low, the signal on I0 is selected for output (O). When the select input (S) is High, the signal on I1 is selected for output.

BUFGMUX and BUFGMUX_1 are distinguished by which state the output assumes when it switches between clocks in response to a change in its select input. BUFGMUX assumes output state 0 and BUFGMUX_1 assumes output state 1.

Usage

This design element is supported for schematics and instantiations but not for inference.

VHDL Instantiation Template

-- BUFGMUX_1: Global Clock Buffer 2-to-1 MUX (inverted select) -- All FPGA -- Xilinx HDL Language Template version 7.1i

BUFGMUX_1_inst : BUFGMUX_1 port map ( O => O, -- Clock MUX output I0 => I0, -- Clock0 input I1 => I1, -- Clock1 inputS => S -- Clock select input );

-- End of BUFGMUX_1_inst instantiation

Verilog Instantiation Template

// BUFGMUX_1: Global Clock Buffer 2-to-1 MUX (inverted select) // All FPGA // Xilinx HDL Language Template version 7.1i

BUFGMUX_1 BUFGMUX_1_inst ( .O(O), // Clock MUX output .I0(I0), // Clock0 input .I1(I1), // Clock1 input .S(S) // Clock select input );

Inputs Outputs

I0 I1 S O

I0 X 0 I0

X I1 1 I1

X X ↑ 1

X X ↓ 1

X9252

BUFGMUX_1

OI1

I0

S

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 25ISE 7.1i 1-800-255-7778

Page 26: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

BUFGMUX_1R

// End of BUFGMUX_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

26 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 27: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

CAPTURE_SPARTAN3R

CAPTURE_SPARTAN3

Primitive: Spartan-3 Register State Capture for Bitstream Readback

CAPTURE_SPARTAN3 currently serves the function of “CAPTURE_SPARTAN3E” and provides user control over when to capture register (flip-flop and latch) information for readback. Spartan-3E devices provide the readback function through dedicated configuration port instructions.

The CAPTURE_SPARTAN3 symbol is optional. Without it, readback is still performed, but the asynchronous capture function it provides for register states is not available.

Spartan-3E allows for capturing register (flip-flop and latch) states only. Although LUT RAM, SRL, and block RAM states are read back, they cannot be captured. An asserted high CAP signal indicates that the registers in the device are to be captured at the next Low-to-High clock transition.

By default, data is captured after every trigger (transition on CLK while CAP is asserted). To limit the readback operation to a single data capture, add the ONESHOT attribute to CAPTURE_SPARTAN3.

Usage

This design element is instantiated rather than inferred.

VHDL Instantiation Template

-- CAPTURE_SPARTAN3: Register State Capture for Bitstream Readback-- All FPGA-- Xilinx HDL Libraries Guide version 7.1i

CAPTURE_SPARTAN3_inst : CAPTURE_SPARTAN3 port map ( CAP => CAP, -- Capture input CLK => CLK -- Clock input );

Verilog Instantiation Template

// CAPTURE_SPARTAN3: Register State Capture for Bitstream Readback// All FPGA// Xilinx HDL Libraries Guide version 7.1i

CAPTURE_SPARTAN3 CAPTURE_SPARTAN3_inst ( .CAP(CAP), // Capture input .CLK(CLK) // Clock input );

For More Information

Consult the Spartan-3E Data Sheets.

X9931

CLK

CAP

CAPTURE_SPARTAN3

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 27ISE 7.1i 1-800-255-7778

Page 28: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

CAPTURE_SPARTAN3R

28 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 29: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

DCM

Primitive: Digital Clock Manager

DCM is a digital clock manager that provides multiple functions. It can implement a clock delay locked loop, a digital frequency synthesizer, digital phase shifter, and a digital spread spectrum.

Note: All unused inputs must be driven Low, automatically tying the inputs Low if they are unused.

Clock Delay Locked Loop (DLL)

DCM includes a clock delay locked loop used to minimize clock skew for Spartan-3E devices. DCM synchronizes the clock signal at the feedback clock input (CLKFB) to the clock signal at the input clock (CLKIN). The locked output (LOCKED) is high when the two signals are in phase. The signals are considered to be in phase when their rising edges are within a specified time (ps) of each other.

DCM supports two frequency modes for the DLL. By default, the DLL_FREQUENCY_MODE attribute is set to Low and the frequency of the clock signal at the CLKIN input must be in the Low (DLL_CLKIN_MIN_LF to DLL_CLKIN_MAX_LF) frequency range (MHz). In Low frequency mode, the CLK0, CLK90, CLK180, CLK270, CLK2X, CLKDV, and CLK2X180 outputs are available.

When the DLL_FREQUENCY_MODE attribute is set to High, the frequency of the clock signal at the CLKIN input must be in the High (DLL_CLKIN_MIN_HF to DLL_CLKIN_MAX_HF) frequency range (MHz). In High frequency mode, only the CLK0, CLK180, and CLKDV outputs are available.

On-chip synchronization is achieved by connecting the CLKFB input to a point on the global clock network driven by a BUFG, a global clock buffer. The BUFG connected to the CLKFB input of the DCM must be sourced from either the CLK0 or CLK2X outputs of the same DCM. The CLKIN input should be connected to the output of an IBUFG, with the IBUFG input connected to a pad driven by the system clock.

Off-chip synchronization is achieved by connecting the CLKFB input to the output of an IBUFG, with the IBUFG input connected to a pad. Either the CLK0 or CLK2X output can be used but not both. The CLK0 or CLK2X must be connected to the input of OBUF, an output buffer. The CLK_FEEDBACK attribute controls whether the CLK0 output, the default, or the CLK2X output is the source of the CLKFB input.

The duty cycle of the CLK0 output is 50-50 unless the DUTY_CYCLE_CORRECTION attribute is set to FALSE, in which case the duty cycle is the same as that of the CLKIN input. The duty cycle of the phase shifted outputs (CLK90, CLK180, and CLK270) is the same as that of the CLK0 output. The duty cycle of the CLK2X, CLK2X180, and CLKDV outputs is 50-50 unless CLKDV_DIVIDE is a non-integer and the DLL_FREQUENCY_MODE is High (see “CLKDV_DIVIDE,” in the Constraints Guide

X9469

CLKIN

CLKFB

DSSEN

RST

PSINCDEC

PSEN

PSCLK

STATUS [7:0]

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

LOCKED

PSDONE

DCM

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 29ISE 7.1i 1-800-255-7778

Page 30: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

for details). The frequency of the CLKDV output is determined by the value assigned to the CLKDV_DIVIDE attribute.

Digital Frequency Synthesizer (DFS)

The CLKFX and CLKFX180 outputs in conjunction with the CLKFX_MULTIPLY and CLKFX_DIVIDE attributes provide a frequency synthesizer that can be any multiple or division of CLKIN. CLKFX and CLKIN are in phase every CLKFX_MULTIPLY cycles of CLKFX and every CLKFX_DIVIDE cycles of CLKIN when a feedback is provided to the CLKFB input of the DLL. The frequency of CLKFX is defined by the following equation.

FrequencyCLKFX= (CLKFX_MULTIPLY_value/CLKFX_DIVIDE_value) * FrequencyCLKIN

Both the CLKFX or CLKFX180 output can be used simultaneously.

CLKFX180 is 1x the CLKFX frequency, shifted 180o with regards to CLKFX. CLKFX and CLKFX180 always have a 50/50 duty cycle.

The DFS_FREQUENCY_MODE attribute specifies the allowable input clock and output clock frequency ranges.

The CLK_FEEDBACK attribute set to NONE will cause the DCM to be in the Digital Frequency Synthesizer mode. The CLKFX and CLKFX180 will be generated without phase correction with respect to CLKIN.

Digital Phase Shifter (DPS)

The phase shift (skew) between the rising edges of CLKIN and CLKFB may be configured as a fraction of the CLKIN period with the PHASE_SHIFT attribute. This allows the phase shift to remain constant as ambient conditions change. The CLKOUT_PHASE_SHIFT attribute controls the use of the PHASE_SHIFT value. By default, the CLKOUT_PHASE_SHIFT attribute is set to NONE and the PHASE_SHIFT attribute has no effect.

By creating skew between CLKIN and CLKFB, all DCM output clocks are phase shifted by the amount of the skew.

DCM Clock Delay Lock Loop Outputs

Output Description

CLK0 Clock at 1x CLKIN frequency

CLK180 Clock at 1x CLK0 frequency, shifted 180o with regards to CLK0

CLK270* Clock at 1x CLK0 frequency, shifted 270o with regards to CLK0

CLK2X* Clock at 2x CLK0 frequency, in phase with CLK0

CLK2X180* Clock at 2x CLK0 frequency shifted 180o with regards to CLK2X

CLK90* Clock at 1x CLK0 frequency, shifted 90o with regards to CLK0

CLKDV Clock at (1/n) x CLK0 frequency, where n=CLKDV_DIVIDE value. CLKDV is in phase with CLK0.

LOCKED All enabled DCM features locked.

* The CLK90, CLK270, CLK2X, and CLK2X180 outputs are not available if the DLL_FREQUENCY_MODE is set to High.

30 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 31: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

When the CLKOUT_PHASE_SHIFT attribute is set to FIXED, the skew set by the PHASE_SHIFT attribute is used at configuration for the rising edges of CLKIN and CLKFB. The skew remains constant.

When the CLKOUT_PHASE_SHIFT attribute is set to VARIABLE, the skew set at configuration is used as a starting point and the skew value can be changed dynamically during operation using the PS* signals. This digital phase shifter feature is controlled by a synchronous interface. The inputs PSEN (phase shift enable) and PSINCDEC (phase shift increment/decrement) are set up to the rising edge of PSCLK (phase shift clock). The PSDONE (phase shift done) output is clocked with the rising edge of PSCLK (the phase shift clock). PSDONE must be connected to implement the complete synchronous interface. The rising-edge skew between CLKIN and CLKFB may be dynamically adjusted after the LOCKED output goes High.

The PHASE_SHIFT attribute value specifies the initial phase shift amount when the device is configured. Then the PHASE_SHIFT value is changed one unit when PSEN is activated for one period of PSCLK. The PHASE_SHIFT value is incremented when PSINCDEC is High and decremented when PSINCDEC is Low during the period that PSEN is High. When the DCM completes an increment or decrement operation, the PSDONE output goes High for a single PSCLK cycle to indicate the operation is complete. At this point the next change may be made. When RST (reset) is High, the PHASE_SHIFT attribute value is reset to the skew value set at configuration.

If CLKOUT_PHASE_SHIFT is FIXED or NONE, the PSEN, PSINCDEC, and PSCLK inputs must be tied to GND. The program will automatically tie the inputs to GND if they are not connected by the user.

Additional Status Bits

The STATUS output bits return the following information.

* Phase Shift Overflow will also go high if the end of the phase shift delay line is reached (see the product data sheet for the most current value of the maximum shifting delay).

** If only the DFS outputs are used (CLKFX & CLKFX180), this status bit will not go high if CLKIN stops.

DCM Additional Status Bits

Bit Description

0 Phase Shift Overflow*1 = |PHASE_SHIFT| > 255

1 DLL CLKIN stopped**1 = CLKIN stopped toggling

2 DLL CLKFX stopped1 = CLKFX stopped toggling

3 No

4 No

5 No

6 No

7 No

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 31ISE 7.1i 1-800-255-7778

Page 32: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

LOCKED

When LOCKED is high, all enabled signals are locked.

RST

The master reset input (RST) resets DCM to its initial (power-on) state. The signal at the RST input is asynchronous and must be held High for 2ns.

Usage

This component is generally instantiated in the code as it cannot be easily inferred in synthesis tools. Some synthesis tools may allow inference via an attribute. See your synthesis tool documentation.

Available Attributes

VHDL Instantiation Template

-- DCM : In order to incorporate this function into the design,

Attribute Type Allowed Values

Default

CLKDV_DIVIDE 2-Bit Floating 2.0 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5, 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0

CLKFX_DIVIDE 1-Bit Binary 1.0 1 to 32

CLKFX_MULTI-PLY 4-Bit Binary 4.0 1 to 32

CLKIN_DIVIDE_BY_2 Boolean FALSE TRUE

FALSE

CLKIN_PERIOD 0.0

CLKOUT_PHASE_SHIFT

Real NONE NONE

FIXED

VARIABLE

CLK_FEEDBACK Real 1X NONE

1X

2X

DESKEW_ADJUST Real SYSTEM_SYNCHRONOUS

SOURCE_SYNCHRONOUS

SYSTEM_SYNCHRONOUS

DFS_FREQUENCY_MODE

Real LOW HIGH

LOW

DLL_FREQUENCY_MODE

Real LOW HIGH

LOW

DUTY_CYCLE_CORRECTION

Boolean TRUE TRUE

FALSE

FACTORY_JF 16-Bit Binary 16'hC080

PHASE_SHIFT Integer 0 -255 to 255

STARTUP_WAIT Boolean FALSE TRUE

FALSE

32 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 33: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

-- VHDL : the following instance declaration needs to be placed-- instance : in the architecture body of the design code. The-- declaration : instance name (DCM_inst) and/or the port declarations-- code : after the "=>" assignment maybe changed to properly-- : connect this function to the design. Unused inputs-- : and outputs may be removed or commented out.

-- Library : In addition to adding the instance declaration, a use-- declaration : statement for the UNISIM.vcomponents library needs to be-- for : added before the entity declaration. This library-- Xilinx : contains the component declarations for all Xilinx-- primitives : primitives and points to the models that will be used-- : for simulation.

-- Copy the following two statements and paste them before the-- Entity declaration, unless they already exists.

Library UNISIM;use UNISIM.vcomponents.all;

-- <-----Cut code below this line and paste into the architecture body---->

-- DCM: Digital Clock Manager Circuit for Virtex-II/II-Pro and Spartan-3 -- Xilinx HDL Language Template version 7.1i

DCM_inst : DCM -- The following generics are only necessary if you wish to change the default

behavior. generic map ( CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5 -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32 CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature CLKIN_PERIOD => 0.0, -- Specify period of input clock CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of NONE, FIXED or VARIABLE CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE, 1X or 2X DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS

or -- an integer from 0 to 15 DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency

synthesis DLL_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for DLL DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE FACTORY_JF => X"C080", -- FACTORY JF Values PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255 STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE port map ( CLK0 => CLK0, -- 0 degree DCM CLK ouptputCLK180 => CLK180, -- 180 degree DCM CLK output CLK270 => CLK270, -- 270 degree DCM CLK output CLK2X => CLK2X, -- 2X DCM CLK output CLK2X180 => CLK2X180, -- 2X, 180 degree DCM CLK out CLK90 => CLK90, -- 90 degree DCM CLK output CLKDV => CLKDV, -- Divided DCM CLK out (CLKDV_DIVIDE) CLKFX => CLKFX, -- DCM CLK synthesis out (M/D) CLKFX180 => CLKFX180, -- 180 degree CLK synthesis out LOCKED => LOCKED, -- DCM LOCK status output

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 33ISE 7.1i 1-800-255-7778

Page 34: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

DCMR

PSDONE => PSDONE, -- Dynamic phase adjust done output STATUS => STATUS, -- 8-bit DCM status bits output CLKFB => CLKFB, -- DCM clock feedback CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM) PSCLK => PSCLK, -- Dynamic phase adjust clock input PSEN => PSEN, -- Dynamic phase adjust enable input PSINCDEC => PSINCDEC, -- Dynamic phase adjust increment/decrement RST => RST -- DCM asynchronous reset input);

-- End of DCM_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

34 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 35: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

FDCPER

FDCPE

Primitive: D Flip-Flop with Clock Enable and Asynchronous Preset and Clear

FDCPE is a single D-type flip-flop with data (D), clock enable (CE), asynchronous preset (PRE), and asynchronous clear (CLR) inputs and data output (Q). The asynchronous PRE, when High, sets the Q output High; CLR, when High, resets the output Low. Data on the D input is loaded into the flip-flop when PRE and CLR are Low and CE is High on the Low-to-High clock (C) transition. When CE is Low, the clock transitions are ignored.

The flip-flop is asynchronously cleared, output Low, when power is applied.

For Spartan-3E, the power on condition can be simulated when global set/reset (GSR) is active.

GSR defaults to active-High but can be inverted by adding an inverter in front of the GSR input of the Spartan-3E symbol.

Usage

This design element typically should be inferred in the design code; however, the element can be instantiated for cases where strict placement control, relative placement control, or initialization attributes need to be applied.

Available Attributes

VHDL Instantiation Template

-- FDCPE: Single Data Rate D Flip-Flop with Asynchronous Clear, Set and -- Clock Enable (posedge clk). All families. -- Xilinx HDL Language Template version 7.1i FDCPE_inst : FDCPE port map ( Q => Q, -- Data output C => C, -- Clock input CE => CE, -- Clock enable input CLR => CLR, -- Asynchronous clear input D => D, -- Data input

Inputs Outputs

CLR PRE CE D C Q

1 X X X X 0

0 1 X X X 1

0 0 0 X X No Change

0 0 1 0 ↑ 0

0 0 1 1 ↑ 1

Attribute Type Allowed Values Default Description

INIT 1-Bit Binary

0 or 1 0 Sets the initial value of Q output after configuration

Q

D

C

FDCPE

CE

PRE

CLR

X4389

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 35ISE 7.1i 1-800-255-7778

Page 36: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

FDCPER

PRE => PRE -- Asynchronous set input ); -- End of FDCPE_inst instantiation

Verilog Instantiation Template

// FDCPE: Single Data Rate D Flip-Flop with Asynchronous Clear, Set and // Clock Enable (posedge clk). All families. // Xilinx HDL Language Template version 7.1i FDCPE FDCPE_inst ( .Q(Q), // Data output .C(C), // Clock input .CE(CE), // Clock enable input .CLR(CLR), // Asynchronous clear input .D(D), // Data input .PRE(PRE) // Asynchronous set input ); // The following defparam declaration is only necessary if you wish to change the

initial // value of the register to a one. If the instance name to the FDCPE is changed,

that // change needs to be reflected in the defparam statements.

defparam FDCPE_inst.INIT = 1'b0; // End of FDCPE_inst instantiation

36 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 37: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

FDRSER

FDRSE

Primitive: D Flip-Flop with Synchronous Reset and Set and Clock Enable

FDRSE is a single D-type flip-flop with synchronous reset (R), synchronous set (S), and clock enable (CE) inputs and data output (Q). The reset (R) input, when High, overrides all other inputs and resets the Q output Low during the Low-to-High clock transition. (Reset has precedence over Set.) When the set (S) input is High and R is Low, the flip-flop is set, output High, during the Low-to-High clock (C) transition. Data on the D input is loaded into the flip-flop when R and S are Low and CE is High during the Low-to-High clock transition.

The flip-flop is asynchronously cleared, output Low, when power is applied.

Spartan-3E simulates power-on when global set/reset (GSR) is active.

GSR defaults to active-High but can be inverted by adding an inverter in front of the GSR input of the Spartan-3E symbol.

Usage

This design element typically should be inferred in the design code; however, the element can be instantiated for cases where strict placement control, relative placement control, or initialization attributes need to be applied.

Available Attributes

VHDL Instantiation Template

-- FDRSE: Single Data Rate D Flip-Flop with Synchronous Clear, Set and -- Clock Enable (posedge clk). All families. -- Xilinx HDL Language Template version 7.1i FDRSE_inst : FDRSE port map ( Q => Q, -- Data output C => C, -- Clock input CE => CE, -- Clock enable inputD => D, -- Data input

Inputs Outputs

R S CE D C Q

1 X X X ↑ 0

0 1 X X ↑ 1

0 0 0 X X No Change

0 0 1 1 ↑ 1

0 0 1 0 ↑ 0

Attribute Type Allowed Values Default Description

INIT 1-Bit Binary

0 or 1 0 Sets the initial value of Q output after configuration

X3732

FDRSE

C

CE

QD

R

S

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 37ISE 7.1i 1-800-255-7778

Page 38: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

FDRSER

R => R, -- Synchronous reset input S => S -- Synchronous set input ); -- End of FDRSE_inst instantiation

Verilog Instantiation Template

// FDRSE: Single Data Rate D Flip-Flop with Synchronous Clear, Set and // Clock Enable (posedge clk). All families. // Xilinx HDL Language Template version 7.1i FDRSE FDRSE_inst ( .Q(Q), // Data output .C(C), // Clock input .CE(CE), // Clock enable input .D(D), // Data input .R(R), // Synchronous reset input .S(S) // Synchronous set input ); // The following defparam declaration is only necessary if you wish to change the

initial // value of the register to a one. If the instance name to the FDRSE is changed,

that // change needs to be reflected in the defparam statements.

38 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 39: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUF, 4, 8, 16R

IBUF, 4, 8, 16

Primitive and Macros: Single- and Multiple-Input Buffers

IBUF, IBUF4, IBUF8, and IBUF16 are single- and multiple-input buffers. An IBUF isolates the internal circuit from the signals coming into a chip. IBUFs are contained in input/output blocks (IOBs). IBUF inputs (I) are connected to an IPAD or an IOPAD. IBUF outputs (O) are connected to the internal circuit.

IBUF8 Implementation Spartan-3E

Usage

IBUFs are typically inferred for all top level input ports, but they can also be instantiated if necessary.

Available Attributes

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

IFD_DELAY_VALUE – Specifies the amount of additional delay to add to the registered path within the IOB. Accepted values are AUTO, 0 through 8 where AUTO (adjust the delay to ensure no positive hold times are present) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Templates

-- IBUF: Single-ended Input Buffer -- All devices -- Xilinx HDL Libraries Guide version 6.3i IBUF_inst : IBUF generic map ( IOSTANDARD => "DEFAULT") port map ( O => O, -- Buffer output I => I -- Buffer input (connect directly to top-level port)

X9442

IBUF

I O

X9443

IBUF4

I0 O0

O1

O2

O3

I1

I2

I3

X9839

IBUF

IBUF

IBUF

IBUF

IBUF

IBUF

IBUF

IBUF

O7

O6

O[7:0]

O0

O1

O2

O3

O4

O5

I0

I1

I2

I3

I4

I5

I6

I7

I[7:0]

IBUF8

X3803

IBUF16

X3815

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 39ISE 7.1i 1-800-255-7778

Page 40: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUF, 4, 8, 16R

); -- End of IBUF_inst instantiation

Verilog Instantiation Templates

// IBUF: Single-ended Input Buffer // All devices // Xilinx HDL Libraries Guide version 6.3i IBUF IBUF_inst ( .O(O), // Buffer output .I(I) // Buffer input (connect directly to top-level port) ); // Edit the following defparam to specify the I/O standard for this

port. If the // instance name is change, that change needs to be reflecting the

this defparam.

defparam IBUF_inst.IOSTANDARD = "DEFAULT";

// End of IBUF_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

40 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 41: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFDSR

IBUFDS

Primitive: Differential Signaling Input Buffer with Selectable I/O Interface

IBUFDS is an input buffer that supports low-voltage, differential signaling. In IBUFDS, a design level interface signal is represented as two distinct ports (I and IB), one deemed the "master" and the other the "slave." The master and the slave are opposite phases of the same logical signal (for example, MYNET and MYNETB).

Usage

This design element is supported for instantiation but not for inference.

Available Attributes

IOSTANDARD – Specifies the I/O standard to configure this input. Consult the Virtex-4 User Guide for information on supported I/O standards for this architecture

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

IFD_DELAY_VALUE – Specifies the amount of additional delay to add to the registered path within the IOB. Accepted values are AUTO, 0 through 8 where AUTO (adjust the delay to ensure no positive hold times are present) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Template

-- IBUFDS: Differential Input Buffer -- All FPGA -- Xilinx HDL Language Template version 7.1i

IBUFDS_inst : IBUFDS -- Edit the following generic to specify the I/O standard for this port. generic map ( IOSTANDARD => "LVDS_25") port map ( O => O, -- Clock buffer output I => I, -- Diff_p clock buffer input (connect directly to top-level port) IB => IB -- Diff_n clock buffer input (connect directly to top-level port) );

-- End of IBUFDS_inst instantiation

Inputs Outputs

I IB O

0 0 No Change

0 1 0

1 0 1

1 1 No Change

X9255

OIIB

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 41ISE 7.1i 1-800-255-7778

Page 42: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFDSR

Verilog Instantiation Template

// IBUFDS: Differential Input Buffer // All FPGA // Xilinx HDL Language Template version 7.1i

IBUFDS IBUFDS_inst ( .O(O), // Clock buffer output .I(I), // Diff_p clock buffer input (connect directly to top-level port) .IB(IB) // Diff_n clock buffer input (connect directly to top-level port) );

// Edit the following defparam to specify the I/O standard for this port. If the // instance name is changed, that change needs to be reflecting the this defparam.

defparam IBUFDS_inst.IOSTANDARD = "DEFAULT";

// End of IBUFDS_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

42 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 43: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFGR

IBUFG

Primitive: Dedicated Input Buffer with Selectable I/O InterfaceIBUFG is dedicated to dedicated input buffers for connecting to the clock buffer BUFG or DCM. You can attach an IOSTANDARD attribute to an IBUFG instance.

The Xilinx implementation software converts each BUFG to an appropriate type of global buffer for the target PLD device. The IBUFG input can only be driven by the global clock pins. The IBUFG output can drive CLKIN of a DCM, BUFG, or user logic. IBUFG can be routed to user logic and does not have to be routed to a DCM.

Attach an IOSTANDARD attribute to an IBUFG and assign the value indicated in the "IOSTANDARD (Attribute Value)" column to program the input for the I/O standard associated with that value.

Usage

This design element is supported for schematic and instantiation. Synthesis tools usually infer a BUFGP on any clock net. If there are more clock nets than BUFGPs, the synthesis tool usually instantiates BUFGPs for the clocks that are most utilized. The BUFGP contains both a BUFG and an IBUFG.

Available Attributes

IOSTANDARD – Specifies the I/O standard to configure this input.

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Template

-- IBUFG: Global Clock Buffer (sourced by an external pin) -- Xilinx HDL Language Template version 7.1i

IBUFG_inst : IBUFG -- Edit the following generic to specify the I/O standard for this port. generic map ( IOSTANDARD => "LVCMOS25") port map ( O => O, -- Clock buffer output I => I -- Clock buffer input (connect directly to top-level port) );

-- End of IBUFG_inst instantiation

Verilog Instantiation Template

// IBUFG: Global Clock Buffer (sourced by an external pin) // All FPGAs // Xilinx HDL Language Template version 7.1i

IBUFG IBUFG_inst ( .O(O), // Clock buffer output .I(I) // Clock buffer input (connect directly to top-level port)

IBUFG

I O

X10181

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 43ISE 7.1i 1-800-255-7778

Page 44: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFGR

);

// Edit the following defparam to specify the I/O standard for this port. If the // instance name is changed, that change needs to be reflecting the this defparam.

defparam IBUFG_inst.IOSTANDARD = "DEFAULT";

// End of IBUFG_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

44 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 45: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFGDSR

IBUFGDS

Primitive: Dedicated Differential Signaling Input Buffer with Selectable I/O Interface

IBUFGDS is a dedicated differential signaling input buffer for connection to the clock buffer (BUFG) or DCM. In IBUFGDS, a design level interface signal is represented as two distinct ports (I and IB), one deemed the "master" and the other the "slave." The master and the slave are opposite phases of the same logical signal (for example, MYNET and MYNETB).

Usage

This design element is supported for instantiation, but not for inference.

Available Attributes

IOSTANDARD – Specifies the I/O standard to configure this input.

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the clock path out of the IBUFG. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Template

-- IBUFGDS: Differential Global Clock Input Buffer -- All FPGA -- Xilinx HDL Language Template version 7.1i

IBUFGDS_inst : IBUFGDS -- Edit the following generic to specify the I/O standard for this port. generic map ( IOSTANDARD => "LVDS_25") port map ( O => O, -- Clock buffer outputI => I, -- Diff_p clock buffer input (connect directly to top-level port) IB => IB -- Diff_n clock buffer input (connect directly to top-level port) );

-- End of IBUFGDS_inst instantiation

Verilog Instantiation Template

// IBUFGDS: Differential Global Clock Buffer (sourced by an external pin) // All FPGA

Inputs Outputs

I IB O

0 0 No Change

0 1 0

1 0 1

1 1 No Change

X9255

OIIB

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 45ISE 7.1i 1-800-255-7778

Page 46: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IBUFGDSR

// Xilinx HDL Language Template version 7.1i

IBUFGDS IBUFGDS_inst ( .O(O), // Clock buffer output .I(I), // Diff_p clock buffer input .IB(IB) // Diff_n clock buffer input );

// Edit the following defparam to specify the I/O standard for this port. If the // instance name is changed, that change needs to be reflecting the this defparam.

defparam IBUFGDS_inst.IOSTANDARD = "DEFAULT";

// End of IBUFGDS_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

46 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 47: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IDDR2R

IDDR2

Primitive: Double Data Rate Input D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set/Reset

The IDDR2 is an input double data rate (DDR) register useful in capturing double data-rate signals entering the FPGA. The IDDR2 requires two clocks to be connected to the component, C0 and C1, so that data is captured at the positive edge of both C0 and C1 clocks. The IDDR2 features an active high clock enable port, CE, which may be used to suspend the operation of the registers and both set and reset ports that may be configured to be synchronous or asynchronous to the respective clocks. The IDDR2 has an optional alignment feature, which allows both output data ports to the component to be aligned to a single clock.

Usage

The IDDR2 currently must be instantiated in order to be incorporated into the design. In order to change the default behavior of the IDDR2, attributes may be modified via the generic map (VHDL) or named parameter value assignment (Verilog) as a part of the instantiated component. The IDDR2 may be either connected directly to a top-level input port in the design where an appropriate input buffer can be inferred or to an instantiated IBUF, IOBUF, IBUFDS or IOBUFDS. All inputs and outputs of this component should either be connected or properly tied off.

Available Attributes

DDR_ALIGNMENT – Specifies how the data will be presented on the Q0 and Q1 ports. When set to "NONE," the data on the Q0 port will be aligned with the positive edge of the C0 clock and the data on the Q1 port will be aligned with the positive edge of the C1 clock. When set to "C0", the data on both Q0 and Q1 ports are aligned to the positive edge of the C0 clock, and when set to "C1", the data on the Q0 and Q1 ports are aligned to the positive edge of the C1 clock. Data is always captured on the positive edge of both clocks.

INIT_Q0 – Specifies the initial value upon power-up or the assertion of GSR for the Q0 port. This attribute should be set to 0.

INIT_Q1 - Specifies the initial value upon power-up or the assertion of GSR for the Q1 port. This attribute should be set to 0.

SRTYPE – When set to "SYNC," the reset, R, and set, S, ports are synchronous to the associated clock inputs.

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

IFD_DELAY_VALUE – Specifies the amount of additional delay to add to the registered path within the IOB. Accepted values are AUTO, 0 through 8 where AUTO (adjust the delay to ensure no positive hold times are present) is the default value. Increasing values increases the magnitude of the delay.

IDDR2

C0

D

Q0

Q1

C1

CE

S

R

X10237

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 47ISE 7.1i 1-800-255-7778

Page 48: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IDDR2R

VHDL Instantiation Template

-- IDDR2: Input Double Data Rate Input Register with-- Set, Reset and Clock Enable. Spartan-3E-- Xilinx HDL Libraries Guide version 7.1i

IDDR2_inst : IDDR2generic map ( DDR_ALIGNMENT => "NONE", -- Sets output alignment -- to "NONE", "C0" or "C1" INIT_Q0 => '0', -- Sets initial state of the Q0 -- output to ‘0’ or ‘1’ INIT_Q1 => '0', -- Sets initial state of the Q1 -- output to ‘0’ or ‘1’ SRTYPE =>= "SYNC") -- Specifies "SYNC" or "ASYNC" -- set/resetport map ( Q0 => Q0, -- 1-bit output captured with C0 clock Q1 => Q1, -- 1-bit output captured with C1 clock C0 => C0, -- 1-bit clock input C1 => C1, -- 1-bit clock input CE => CE, -- 1-bit clock enable input D => D, -- 1-bit DDR data input R => R, -- 1-bit reset input S => S -- 1-bit set input);

-- End of IDDR2_inst instantiation

Verilog Instantiation Templae

// IDDR2: Input Double Data Rate Input Register with// Set, Reset and Clock Enable. Spartan-3E// Xilinx HDL Libraries Guide version 7.1i

IDDR2 #( // The following parameters specify the behavior // of the component. .DDR_ALIGNMENT("NONE"), // Sets output alignment // to "NONE", "C0" or "C1" .INIT_Q0(1'b0), // Sets initial state of the Q0 // output to 1'b0 or 1'b1 .INIT_Q1(1'b0), // Sets initial state of the Q1 // output to 1'b0 or 1'b1 .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" // set/resetIDDR2_inst ( .Q0(Q0), // 1-bit output captured with C0 clock .Q1(Q1), // 1-bit output captured with C1 clock .C0(C0), // 1-bit clock input .C1(C1), // 1-bit clock input .CE(CE), // 1-bit clock enable input .D(D), // 1-bit DDR data input .R(R), // 1-bit reset input .S(S) // 1-bit set input);

// End of IDDR2_inst instantiation

48 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 49: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IDDR2R

For More Information

Consult the Spartan-3E Data Sheets.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 49ISE 7.1i 1-800-255-7778

Page 50: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IDDR2R

50 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 51: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IOBUFR

IOBUF

Primitive: Bi-Directional Buffer with Selectable I/O Interface

For Spartan-3E, IOBUF is a bi-directional buffer whose I/O interface corresponds to a specific I/O standard. You can attach an IOSTANDARD attribute to an IOBUF instance.

IOBUF components that use the LVTTL, LVCMOS15, LVCMOS18, LVCMOS25, LVCMOS33 signaling standards have selectable capacitance drive and slew rates using the capacitance DRIVE and SLEW constraints. The defaults are CAPACITANCE = DONT_CARE, DRIVE=12 mA, and SLOW slew.

IOBUFs are composites of IBUF and OBUFT elements. The O output is X (unknown) when IO (input/output) is Z. IOBUFs can be implemented as interconnections of their component elements.

Usage

These design elements are instantiated and inferred.

Available Attributes

Attach an IOSTANDARD attribute to an IOBUF and assign the value indicated in the "IOSTANDARD (Attribute Value)" column to program the input for the I/O standard associated with that value.

The LVTTL, LVCMOS15, LVCMOS18, LVCMOS25, LVCMOS33 attributes also require a slew value (FAST or SLOW) and DRIVE value.

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

IFD_DELAY_VALUE – Specifies the amount of additional delay to add to the registered path within the IOB. Accepted values are AUTO, 0 through 8 where AUTO (adjust the delay to ensure no positive hold times are present) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Template

-- IOBUF: Single-ended Bi-directional Buffer -- All devices -- Xilinx HDL Language Template version 7.1i IOBUF_inst : IOBUF

Inputs Bidirectional Outputs

T I IO O

1 X Z X

0 1 1 1

0 0 0 0

T

I IO

O

X8406

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 51ISE 7.1i 1-800-255-7778

Page 52: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IOBUFR

-- Edit the following generics to specify the I/O standard, drive and slew rate. generic map ( DRIVE => 12, IOSTANDARD => "LVCMOS25", SLEW => "SLOW") port map ( O => O, -- Buffer output IO => IO, -- Buffer inout port (connect directly to top-level port) I => I, -- Buffer input T => T -- 3-state enable input );

-- End of IOBUF_inst instantiation

Verilog Instantiation Template

// IOBUF: Single-ended Bi-directional Buffer // All devices // Xilinx HDL Language Template version 7.1i IOBUF IOBUF_inst ( .O(O), // Buffer output .IO(IO), // Buffer inout port (connect directly to top-level port) .I(I), // Buffer input .T(T) // 3-state enable input ); // Edit the following defparams to specify the I/O standard, drive and slew rate. If // the instance name is changed, that change needs to be reflecting the this

defparam.

defparam IOBUF_inst.DRIVE = 12; defparam IOBUF_inst.IOSTANDARD = "DEFAULT"; defparam IOBUF_inst.SLEW = "SLOW";

// End of IOBUF_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

52 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 53: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IOBUFDSR

IOBUFDS

Primitive: 3-State Differential Signaling I/O Buffer with Active Low Output Enable

IOBUFDS is a single 3-state, differential signaling input/output buffer with active Low output enable.

* The dash (-) means No Change.

Usage

This design element is instantiated rather than inferred.

Available Attributes

IBUF_DELAY_VALUE – Specifies the amount of additional delay to add to the non-registered path out of the IOB. Accepted values are 0 through 16 where 0 (no additional delay added) is the default value. Increasing values increases the magnitude of the delay.

IFD_DELAY_VALUE – Specifies the amount of additional delay to add to the registered path within the IOB. Accepted values are AUTO, 0 through 8 where AUTO (adjust the delay to ensure no positive hold times are present) is the default value. Increasing values increases the magnitude of the delay.

VHDL Instantiation Template

-- IOBUFDS: Differential Bi-directional Buffer -- All FPGA -- Xilinx HDL Language Template version 7.1i IOBUFDS_inst : IOBUFDS -- Edit the following generics to specify the I/O standard, drive and slew rate. generic map ( DRIVE => 12, IOSTANDARD => "LVDS_25", SLEW => "SLOW") port map ( O => O, -- Buffer output IO => IO, -- Diff_p inout (connect directly to top-level port) IOB => IOB, -- Diff_n inout (connect directly to top-level port)I => I, -- Buffer input T => T -- 3-state enable input );

Inputs Bidirectional Outputs

I T IO IOB O

X 1 Z Z - *

0 0 0 1 0

1 0 1 0 1

T

I IOIOB

O

X9827

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 53ISE 7.1i 1-800-255-7778

Page 54: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

IOBUFDSR

-- End of IOBUFDS_inst instantiation

Verilog Instantiation Template

// IOBUFDS: Differential Bi-directional Buffer // All FPGA // Xilinx HDL Language Template version 7.1i IOBUFDS IOBUFDS_inst ( .O(O), // Buffer output .IO(IO), // Diff_p inout (connect directly to top-level port) .IOB(IOB), // Diff_n inout (connect directly to top-level port) .I(I), // Buffer input .T(T) // 3-state enable input ); // Edit the following defparams to specify the I/O standard, drive and slew rate. If // the instance name is changed, that change needs to be reflecting the this

defparam.

defparam IOBUFDS_inst.DRIVE = 12; defparam IOBUFDS_inst.IOSTANDARD = "DEFAULT"; defparam IOBUFDS_inst.SLEW = "SLOW";

// End of IOBUFDS_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

54 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 55: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

KEEPERR

KEEPER

Primitive: KEEPER Symbol

KEEPER is a weak keeper element used to retain the value of the net connected to its bidirectional O pin. For example, if a logic 1 is being driven onto the net, KEEPER drives a weak/resistive 1 onto the net. If the net driver is then 3-stated, KEEPER continues to drive a weak/resistive 1 onto the net.

Usage

For HDL, this design element is instantiated rather than inferred.

VHDL Instantiation Template

-- KEEPER: I/O Buffer Weak Keeper -- All FPGA -- Xilinx HDL Language Template version 7.1i KEEPER_inst : KEEPER port map ( O => O -- Keeper output (connect directly to top-level port) ); -- End of KEEPER_inst instantiation

Verilog Instantiation Template

// KEEPER: I/O Buffer Weak Keeper // All FPGA // Xilinx HDL Language Template version 7.1i KEEPER KEEPER_inst ( .O(O), // Keeper output (connect directly to top-level port) ); // End of KEEPER_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

OX8718

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 55ISE 7.1i 1-800-255-7778

Page 56: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

KEEPERR

56 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 57: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1, 2, 3, 4R

LUT1, 2, 3, 4

Primitive: 1-, 2-, 3-, 4-Bit Look-Up-Table with General Output

LUT1, LUT2, LUT3, and LUT4 are, respectively, 1-, 2-, 3-, and 4-bit look-up-tables (LUTs) with general output (O).

A mandatory INIT attribute, with an appropriate number of hexadecimal digits for the number of inputs, must be attached to the LUT to specify its function.

LUT1 provides a look-up-table version of a buffer or inverter.

LUTs are the basic Spartan-3E building blocks. Two LUTs are available in each CLB slice; four LUTs are available in each CLB. The variants, “LUT1_D, LUT2_D, LUT3_D, LUT4_D”and “LUT1_L, LUT2_L, LUT3_L, LUT4_L”provide additional types of outputs that can be used by different timing models for more accurate pre-layout timing estimation.

Usage

LUTs are generally inferred with the logic portions of the HDL code. Xilinx suggests that you instantiate LUTs only if you have a need to implicitly specify the logic mapping, or if you need to manually place or relationally place the logic.

VHDL Instantiation Template for LUT1

-- LUT1: 1-input Look-Up Table with general output -- Xilinx HDL Language Template version 7.1i

LUT1_inst : LUT1 -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( O => O, -- LUT general output I0 => I0 -- LUT input );

LUT3 Function Table

Inputs Outputs

I2 I1 I0 O

0 0 0 INIT[0]

0 0 1 INIT[1]

0 1 0 INIT[2]

0 1 1 INIT[3]

1 0 0 INIT[4]

1 0 1 INIT[5]

1 1 0 INIT[6]

1 1 1 INIT[7]

INIT = binary equivalent of the hexadecimal number assigned to the INIT attribute

O

I0

LUT1

X9852

LUT2

X8379

I0

O

I1

LUT3

X8382

I0 O

I2

I1

LUT4

X8385

I0

I3

I1O

I2

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 57ISE 7.1i 1-800-255-7778

Page 58: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1, 2, 3, 4R

-- End of LUT1_inst instantiation

Verilog Instantiation Template For LUT1

// LUT1: 1-input Look-Up Table with general output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT1 LUT1_inst ( .O(O), // LUT general output .I0(I0) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT1_inst.INIT = 2'h0;

// End of LUT1_inst instantiation

VHDL Instantiation Template for LUT2

-- LUT2: 2-input Look-Up Table with general output -- Xilinx HDL Language Template version 7.1i

LUT2_inst : LUT2 -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( O => O, -- LUT general output I0 => I0, -- LUT input I1 => I1 -- LUT input );

-- End of LUT2_inst instantiation

VHDL Instantiation Template for LUT3

-- LUT3: 3-input Look-Up Table with general output -- Xilinx HDL Language Template version 7.1i

LUT3_inst : LUT3 -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"00") port map ( O => O, -- LUT general output I0 => I0, -- LUT input I1 => I1, -- LUT input I2 => I2 -- LUT input );

58 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 59: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1, 2, 3, 4R

-- End of LUT3_inst instantiation

Verilog Instantiation Template For LUT3

// LUT3: 3-input Look-Up Table with general output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT3 LUT3_inst ( .O(O), // LUT general output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified,// that modification needs to be reflected in the defparam below.

defparam LUT3_inst.INIT = 8'h00;

// End of LUT3_inst instantiation

VHDL Instantiation Template for LUT4

-- LUT4: 4-input Look-Up Table with general output -- Xilinx HDL Language Template version 7.1i

LUT4_inst : LUT4 -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0000") port map ( O => O, -- LUT general output I0 => I0, -- LUT input I1 => I1, -- LUT input I2 => I2, -- LUT input I3 => I3 -- LUT input );

-- End of LUT4_inst instantiation

Verilog Instantiation Template For LUT4

// LUT4: 4-input Look-Up Table with general output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT4 LUT4_inst ( .O(O), // LUT general output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2), // LUT input .I3(I3) // LUT input );

// The following defparam needs to be edited in order to define the

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 59ISE 7.1i 1-800-255-7778

Page 60: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1, 2, 3, 4R

// contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT4_inst.INIT = 16'h0000;

// End of LUT4_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

60 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 61: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_D, LUT2_D, LUT3_D, LUT4_DR

LUT1_D, LUT2_D, LUT3_D, LUT4_D

Primitive: 1-, 2-, 3-, 4-Bit Look-Up-Table with Dual Output

LUT1_D, LUT2_D, LUT3_D, and LUT4_D are, respectively, 1-, 2-, 3-, and 4-bit look-up-tables (LUTs) with two functionally identical outputs, O and LO. The O output is a general interconnect. The LO output is used to connect to another output within the same CLB slice and to the fast connect buffer.

A mandatory INIT attribute, with an appropriate number of hexadecimal digits for the number of inputs, must be attached to the LUT to specify its function.

LUT1_D provides a look-up-table version of a buffer or inverter.

See also “LUT1, 2, 3, 4”and“LUT1_L, LUT2_L, LUT3_L, LUT4_L”

Usage

LUTs are generally inferred with the logic portions of the HDL code. Xilinx suggests that you instantiate LUTs only if you have a need to implicitly specify the logic mapping, or if you need to manually place or relationally place the logic.

VHDL Instantiation Template for LUT1_D

-- LUT1_D: 1-input Look-Up Table with general and local outputs -- Xilinx HDL Language Template version 7.1i

LUT1_D_inst : LUT1_D -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( LO => LO, -- LUT local output O => O, -- LUT general output I0 => I0 -- LUT input );

LUT3_D Function Table

Inputs Outputs

I2 I1 I0 O LO

0 0 0 INIT[0] INIT[0]

0 0 1 INIT[1] INIT[1]

0 1 0 INIT[2] INIT[2]

0 1 1 INIT[3] INIT[3]

1 0 0 INIT[4] INIT[4]

1 0 1 INIT[5] INIT[5]

1 1 0 INIT[6] INIT[6]

1 1 1 INIT[7] INIT[7]

INIT = binary equivalent of the hexadecimal number assigned to the INIT attribute

I0

LUT1_D

X8377

LO

O

LUT2_D

X8380

I0

LOI1

O

LUT3_D

X8383

I0 O

I2

I1

LO

LUT4_D

X8386

I0

I3

I1

LOI2

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 61ISE 7.1i 1-800-255-7778

Page 62: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_D, LUT2_D, LUT3_D, LUT4_DR

-- End of LUT1_D_inst instantiation

Verilog Instantiation Template For LUT1_D

// LUT1_D: 1-input Look-Up Table with general and local outputs // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT1_D LUT1_D_inst ( .LO(LO), // LUT local output .O(O), // LUT general output .I0(I0) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT1_D_inst.INIT = 2'h0;

// End of LUT1_D_inst instantiation

VHDL Instantiation Template for LUT2_D

-- LUT2_D: 2-input Look-Up Table with general and local outputs -- Xilinx HDL Language Template version 7.1i

LUT2_L_inst : LUT2_L -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( LO => LO, -- LUT local output O => O, -- LUT general output I0 => I0, -- LUT input I1 => I1 -- LUT input );

-- End of LUT3_D_inst instantiation

Verilog Instantiation Template For LUT3_D

// LUT3_D: 3-input Look-Up Table with general and local outputs // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT3_D LUT3_D_inst ( .LO(LO), // LUT local output .O(O), // LUT general output .I0(I0), // LUT input.I1(I1), // LUT input .I2(I2) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified,

62 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 63: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_D, LUT2_D, LUT3_D, LUT4_DR

// that modification needs to be reflected in the defparam below.

defparam LUT3_D_inst.INIT = 8'h00;

// End of LUT3_D_inst instantiation

VHDL Instantiation Template for LUT4_D

-- LUT4_D: 4-input Look-Up Table with general and local outputs -- Xilinx HDL Language Template version 7.1i

LUT4_D_inst : LUT4_D -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0000") port map ( LO => LO, -- LUT local output O => O, -- LUT general output I0 => I0, -- LUT input I1 => I1, -- LUT input I2 => I2, -- LUT input I3 => I3 -- LUT input );

-- End of LUT4_D_inst instantiation

Verilog Instantiation Template For LUT4_D

// LUT4_D: 4-input Look-Up Table with general and local outputs // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT4_D LUT4_D_inst ( .LO(LO), // LUT local output .O(O), // LUT general output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2), // LUT input .I3(I3) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT4_D_inst.INIT = 16'h0000;

// End of LUT4_D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 63ISE 7.1i 1-800-255-7778

Page 64: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_D, LUT2_D, LUT3_D, LUT4_DR

64 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 65: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_L, LUT2_L, LUT3_L, LUT4_LR

LUT1_L, LUT2_L, LUT3_L, LUT4_L

Primitive: 1-, 2-, 3-, 4-Bit Look-Up-Table with Local Output

LUT1_L, LUT2_L, LUT3_L, and LUT4_L are, respectively, 1-, 2-, 3-, and 4- bit look-up-tables (LUTs) with a local output (LO) that is used to connect to another output within the same CLB slice and to the fast connect buffer.

A mandatory INIT attribute, with an appropriate number of hexadecimal digits for the number of inputs, must be attached to the LUT to specify its function.

LUT1_L provides a look-up-table version of a buffer or inverter.

See also “LUT1, 2, 3, 4”and “LUT1_D, LUT2_D, LUT3_D, LUT4_D”

Usage

LUTs are generally inferred with the logic portions of the HDL code. Xilinx suggests that you instantiate LUTs only if you have a need to implicitly specify the logic mapping, or if you need to manually place or relationally place the logic.

VHDL Instantiation Template for LUT1_L

-- LUT1_L: 1-input Look-Up Table with local output -- Xilinx HDL Language Template version 7.1i

LUT1_L_inst : LUT1_L -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( LO => LO, -- LUT local output I0 => I0 -- LUT input );-- End of LUT1_L_inst instantiation

LUT3_L Function Table

Inputs Outputs

I2 I1 I0 LO

0 0 0 INIT[0]

0 0 1 INIT[1]

0 1 0 INIT[2]

0 1 1 INIT[3]

1 0 0 INIT[4]

1 0 1 INIT[5]

1 1 0 INIT[6]

1 1 1 INIT[7]

INIT = binary equivalent of the hexadecimal number assigned to the INIT attribute

I0

LUT1_L

X8378

LO

LUT2_L

X8381

I0

LOI1

LUT3_L

X8384

I0

I2

I1

LO

LUT4_L

X8387

I0

I3

I1LO

I2

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 65ISE 7.1i 1-800-255-7778

Page 66: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_L, LUT2_L, LUT3_L, LUT4_LR

Verilog Instantiation Template For LUT1_L

// LUT1_L: 1-input Look-Up Table with local output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT1_L LUT1_L_inst ( .LO(LO), // LUT local output .I0(I0) // LUT input );// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT1_L_inst.INIT = 2'h0;

// End of LUT1_L_inst instantiation

VHDL Instantiation Template for LUT2_L

-- LUT2_L: 2-input Look-Up Table with local output -- Xilinx HDL Language Template version 7.1i

LUT2_L_inst : LUT2_L -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0") port map ( LO => LO, -- LUT local output I0 => I0, -- LUT input I1 => I1 -- LUT input );

-- End of LUT2_L_inst instantiation

Verilog Instantiation Template For LUT2_L

// LUT2_L: 2-input Look-Up Table with local output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT2_L LUT2_L_inst ( .LO(LO), // LUT local output .I0(I0), // LUT input .I1(I1) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT2_L_inst.INIT = 4'h0;

// End of LUT2_L_inst instantiation

66 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 67: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_L, LUT2_L, LUT3_L, LUT4_LR

VHDL Instantiation Template for LUT3_L

-- LUT3_L: 3-input Look-Up Table with local output -- Xilinx HDL Language Template version 7.1i

LUT3_L_inst : LUT3_L -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"00") port map ( LO => LO, -- LUT local output I0 => I0, -- LUT input I1 => I1, -- LUT input I2 => I2 -- LUT input );

-- End of LUT3_L_inst instantiation

Verilog Instantiation Template For LUT3_L

// LUT3_L: 3-input Look-Up Table with local output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT3_L LUT3_L_inst ( .LO(LO), // LUT local output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.defparam LUT3_L_inst.INIT = 8'h00;

// End of LUT3_L_inst instantiation

VHDL Instantiation Template for LUT4_L

-- LUT4_L: 4-input Look-Up Table with local output -- Xilinx HDL Language Template version 7.1i

LUT4_L_inst : LUT4_L -- The following generic needs to be edited in order to define the -- contents of the LUT. generic map ( INIT => X"0000") port map ( LO => LO, -- LUT local output I0 => I0, -- LUT input I1 => I1, -- LUT input I2 => I2, -- LUT input I3 => I3 -- LUT input );

-- End of LUT4_L_inst instantiation

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 67ISE 7.1i 1-800-255-7778

Page 68: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

LUT1_L, LUT2_L, LUT3_L, LUT4_LR

Verilog Instantiation Template For LUT4_L

// LUT4_L: 4-input Look-Up Table with local output // For use with all FPGAs. // Xilinx HDL Language Template version 7.1i

LUT4_L LUT4_L_inst ( .LO(LO), // LUT local output .I0(I0), // LUT input .I1(I1), // LUT input .I2(I2), // LUT input .I3(I3) // LUT input );

// The following defparam needs to be edited in order to define the // contents of the LUT. If the instance name to this LUT is modified, // that modification needs to be reflected in the defparam below.

defparam LUT4_L_inst.INIT = 16'h0000;

// End of LUT4_L_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

68 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 69: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MULT_ANDR

MULT_AND

Primitive: Fast Multiplier AND

MULT_AND is an AND component used exclusively for building fast and smaller multipliers. The I1 and I0 inputs must be connected to the I1 and I0 inputs of the associated LUT. The LO output must be connected to the DI input of the associated MUXCY, MUXCY_D, or MUXCY_L.

Example Multiplier Using MULT_AND

Usage

For HDL, this design element can be instantiated and inferred.

VHDL Instantiation Template

-- MULT_AND: 2-input AND gate connected to Carry chain -- All FPGA -- Xilinx HDL Language Template version 7.1i

MULT_AND_inst : MULT_AND port map ( LO => LO, -- MULT_AND output (connect to MUXCY DI) I0 => I0, -- MULT_AND data[0] input I1 => I1 -- MULT_AND data[1] input );

-- End of MULT_AND_inst instantiation

Inputs Output

I1 I0 LO

0 0 0

0 1 0

1 0 0

1 1 1

X8405

I1

I0LO

X8733

B1

I1I0

LO

O O

MULT_AND

I3I2I1IO

LUT4

LOS

MUXCY_L

XORCY

SUM1

CI

CILI

10DI

A1B0A0

CO

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 69ISE 7.1i 1-800-255-7778

Page 70: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MULT_ANDR

Verilog Instantiation Template

// MULT_AND: 2-input AND gate connected to Carry chain // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MULT_AND MULT_AND_inst ( .LO(LO), // MULT_AND output (connect to MUXCY DI) .I0(I0), // MULT_AND data[0] input .I1(I1) // MULT_AND data[1] input );

// End of MULT_AND_inst instantiation

70 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 71: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MULT18X18SIOR

MULT18X18SIO

Primitive: 18x18 Cascadable Signed Multiplier with Optional Input and Output registers, Clock Enable, and Synchronous Reset

The MULT18X18SIO is a 36-bit output, 18x18-bit input dedicated signed multiplier. This component can perform asynchronous multiplication operations when the attributes AREG, BREG and PREG are all set to 0. Alternatively, synchronous multiplication operations of different latency and performance characteristics can be performed when any combination of those attributes is set to 1. When using the multiplier in synchronous operation, the MULT18X18SIO features active high clock enables for each set of register banks in the multiplier, CEA, CEB and CEP, as well as synchronous resets, RSTA, RSTB, and RSTP. Multiple MULT18X18SIOs can be cascaded to create larger multiplication functions using the BCIN and BCOUT ports in combination with the B_INPUT attribute.

Usage

The MULT18X18SIO can be inferred by most synthesis tools using standard VHDL or Verilog notation for multiplication. Alternatively, Core GeneratorTM System and other IP can also create multiplication functions using this component. If preferred, the MULT18X18SIO may be instantiated into the VHDL or Verilog code to give full control over the implementation of the component. In order to change the default behavior of the MULT18X18SIO, attributes may be modified via the generic map (VHDL) or named parameter value assignment (Verilog) as a part of the instantiated component.

Available Attributes

AREG – Enables (1) or disables (0) the register bank capturing data entering the A port of the multiplier.

BREG – Enables (1) or disables (0) the register bank capturing data entering the B port of the multiplier.

B_INPUT – When set to "DIRECT" uses the data presented on the B input port for multiplication operations. When set to "CASCADE", uses data on the BCIN port for the multiplication operation.

PREG – Enables (1) or disables (0) the register bank capturing data before exiting the P port of the multiplier.

VHDL Instantiation Template

-- MULT18X18SIO: 18 x 18 Cascadable, signed -- synchronous/asynchronous multiplier-- All FPGA-- Xilinx HDL Libraries Guide version 7.1I

MULT18X18SIO_inst : MULT18X18SIOgeneric map ( AREG => 1, -- Enable the input registers on the A -- port (1=on, 0=off) BREG => 1, -- Enable the input registers on the B -- port (1=on, 0=off)

MULT18X18SIO

B(17:0)

A(17:0) P(35:0)

BCOUT(17:0)

CEA

CEB

CLK

CEP

RSTA

RSTB

BCIN(17:0)

RSTP

X10238

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 71ISE 7.1i 1-800-255-7778

Page 72: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MULT18X18SIOR

B_INPUT => "DIRECT", -- B cascade input "DIRECT" or -- "CASCADE" PREG => 1) -- Enable the input registers on the P -- port (1=on, 0=off)port map ( BCOUT => BCOUT, -- 18-bit cascade output P => P, -- 36-bit multiplier output A => A, -- 18-bit multiplier input B => B, -- 18-bit multiplier input BCIN => BCIN, -- 18-bit cascade input CEA => CEA, -- Clock enable input for the A port CEB => CEB, -- Clock enable input for the B port CEP => CEP, -- Clock enable input for the P port CLK => CLK, -- Clock input RSTA => RSTA, -- Synchronous reset input for A port RSTB => RSTB, -- Synchronous reset input for B port RSTP => RSTP -- Synchronous reset input for P port);

-- End of MULT18X18SIO_inst instantiation

Verilog Instantiation Template

// MULT18X18SIO: 18 x 18 Cascadable, signed // synchronous/asynchronous multiplier// All FPGA// Xilinx HDL Libraries Guide version 7.1i

MULT18X18SIO #( .AREG(1), // Enable the input registers on the A // port (1=on, 0=off) .BREG(1), // Enable the input registers on the B // port (1=on, 0=off) .B_INPUT("DIRECT"), // B cascade input "DIRECT" or // "CASCADE" .PREG(1) // Enable the input registers on the P // port (1=on, 0=off)) MULT18X18SIO_inst ( .BCOUT(BCOUT), // 18-bit cascade output .P(P), // 36-bit multiplier output .A(A), // 18-bit multiplier input .B(B), // 18-bit multiplier input .BCIN(BCIN), // 18-bit cascade input .CEA(CEA), // Clock enable input for the A port .CEB(CEB), // Clock enable input for the B port .CEP(CEP), // Clock enable input for the P port .CLK(CLK), // Clock input .RSTA(RSTA), // Synchronous reset input for A port .RSTB(RSTB), // Synchronous reset input for B port .RSTP(RSTP) // Synchronous reset input for P port);

// End of MULT18X18SIO_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

72 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 73: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCYR

MUXCY

Primitive: 2-to-1 Multiplexer for Carry Logic with General Output

MUXCY is used to implement a 1-bit high-speed carry propagate function. One such function can be implemented per logic cell (LC), for a total of 8-bits per configurable logic block (CLB) for Spartan-3E.

The direct input (DI) of a slice is connected to the DI input of the MUXCY. The carry in (CI) input of an LC is connected to the CI input of the MUXCY. The select input (S) of the MUXCY is driven by the output of the lookup table (LUT) and configured as a MUX function. The carry out (O) of the MUXCY reflects the state of the selected input and implements the carry out function of each LC. When Low, S selects DI; when High, S selects CI.

The variants, “MUXCY_D”and “MUXCY_L”provide additional types of outputs that can be used by different timing models for more accurate pre-layout timing estimation.

Usage

For HDL, this design element can be instantiated and inferred.

VHDL Instantiation Template

-- MUXCY: Carry-Chain MUX with general output -- Xilinx HDL Language Template version 7.1i

MUXCY_inst : MUXCY port map ( O => O, -- Carry output signal CI => CI, -- Carry input signal DI => DI, -- Data input signal S => S -- MUX select, tie to '1' or LUT4 out );

-- End of MUXCY_inst instantiation

Verilog Instantiation Template

// MUXCY: Carry-Chain MUX with general output // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXCY MUXCY_inst ( .O(O), // Carry output signal

Inputs Outputs

S DI CI O

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

MUXCYS

CI

O

1

DI

0

X8728

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 73ISE 7.1i 1-800-255-7778

Page 74: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCYR

.CI(CI), // Carry input signal .DI(DI), // Data input signal .S(S) // MUX select, tie to '1' or LUT4 out );

// End of MUXCY_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

74 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 75: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCY_DR

MUXCY_D

Primitive: 2-to-1 Multiplexer for Carry Logic with Dual Output

MUXCY_D is used to implement a 1-bit high-speed carry propagate function. One such function can be implemented per logic cell (LC), for a total of 4-bits per configurable logic block (CLB). The direct input (DI) of an LC is connected to the DI input of the MUXCY_D. The carry in (CI) input of an LC is connected to the CI input of the MUXCY_D. The select input (S) of the MUX is driven by the output of the lookup table (LUT) and configured as an XOR function. The carry out (O and LO) of the MUXCY_D reflects the state of the selected input and implements the carry out function of each LC. When Low, S selects DI; when High, S selects CI.

Outputs O and LO are functionally identical. The O output is a general interconnect. The LO outputs is used to connect to other inputs within the same slice.

See also “MUXCY”and “MUXCY_L”

Usage

This design element can only be instantiated. Synthesis tools will make use of the MUXCY primitive, then MAP will make use of the MUXCY_D.

VHDL Instantiation Template

-- MUXCY_D: Carry-Chain MUX with general and local outputs -- Xilinx HDL Language Template version 7.1i

MUXCY_D_inst : MUXCY_D port map ( LO => LO, -- Carry local output signal O => O, -- Carry general output signal CI => CI, -- Carry input signal DI => DI, -- Data input signal S => S -- MUX select, tie to '1' or LUT4 out );

-- End of MUXCY_D_inst instantiation

Verilog Instantiation Template

// MUXCY_D: Carry-Chain MUX with general and local outputs // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXCY_D MUXCY_D_inst (

Inputs Outputs

S DI CI O LO

0 1 X 1 1

0 0 X 0 0

1 X 1 1 1

1 X 0 0 0

MUXCY_DS

CI

LO

1

DI

0

X8729

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 75ISE 7.1i 1-800-255-7778

Page 76: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCY_DR

.LO(LO), // Carry local output signal .O(O), // Carry general output signal .CI(CI), // Carry input signal .DI(DI), // Data input signal .S(S) // MUX select, tie to '1' or LUT4 out );

// End of MUXCY_D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

76 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 77: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCY_LR

MUXCY_L

Primitive: 2-to-1 Multiplexer for Carry Logic with Local Output

MUXCY_L is used to implement a 1-bit high-speed carry propagate function. One such function can be implemented per slice, for a total of 4-bits per configurable logic block (CLB). The direct input (DI) of an LC is connected to the DI input of the MUXCY_L. The carry in (CI) input of an LC is connected to the CI input of the MUXCY_L. The select input (S) of the MUXCY_L is driven by the output of the lookup table (LUT) and configured as an XOR function. The carry out (LO) of the MUXCY_L reflects the state of the selected input and implements the carry out function of each slice. When Low, S selects DI; when High, S selects CI.

See also “MUXCY”and “MUXCY_D”

Usage

For HDL, this design element can only be instantiated. Synthesis tools will make sue of the MUXCY primitive, then MAP will make use of the MUXCY_L.

VHDL Instantiation Template

-- MUXCY_L: Carry-Chain MUX with local output -- Xilinx HDL Language Template version 7.1i

MUXCY_L_inst : MUXCY_L port map ( LO => LO, -- Carry local output signal CI => CI, -- Carry input signal DI => DI, -- Data input signal S => S -- MUX select, tie to '1' or LUT4 out );-- End of MUXCY_L_inst instantiation

Verilog Instantiation Template

// MUXCY_L: Carry-Chain MUX with local output // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXCY_L MUXCY_L_inst ( .LO(LO), // Carry local output signal .CI(CI), // Carry input signal .DI(DI), // Data input signal .S(S) // MUX select, tie to '1' or LUT4 out );

Inputs Outputs

S DI CI LO

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

MUXCY_LS

CI

LO

1

DI

0

X8730

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 77ISE 7.1i 1-800-255-7778

Page 78: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXCY_LR

// End of MUXCY_L_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

78 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 79: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5R

MUXF5

Primitive: 2-to-1 Lookup Table Multiplexer with General Output

MUXF5 provides a multiplexer function in a CLB slice for creating a function-of-5 lookup table or a 4-to-1 multiplexer in combination with the associated lookup tables. The local outputs (LO) from the two lookup tables are connected to the I0 and I1 inputs of the MUXF5. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The variants, “MUXF5_D”and “MUXF5_L”, provide additional types of outputs that can be used by different timing models for more accurate pre-layout timing estimation.

Usage

For HDL, this design element can be instantiated and inferred.

VHDL Instantiation Template

-- MUXF5: Slice MUX to tie two LUT4's together with general output -- Xilinx HDL Language Template version 7.1i

MUXF5_inst : MUXF5 port map ( O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie directly to the output of LUT4) I1 => I1, -- Input (tie directoy to the output of LUT4) S => S -- Input select to MUX );-- End of MUXF5_inst instantiation

Verilog Instantiation Template

// MUXF5: Slice MUX to tie two LUT4's together with general output // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXF5 MUXF5_inst ( .O(O), // Output of MUX to general routing .I0(I0), // Input (tie directly to the output of LUT4) .I1(I1), // Input (tie directoy to the output of LUT4) .S(S) // Input select to MUX );// End of MUXF5_inst instantiation

Inputs Outputs

S I0 I1 O

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

I0

I1

S

O

X8431

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 79ISE 7.1i 1-800-255-7778

Page 80: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5R

For More Information

Consult the Spartan-3E Data Sheets.

80 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 81: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5_DR

MUXF5_D

Primitive: 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF5_D provides a multiplexer function in a CLB slice for creating a function-of-5 lookup table or a 4-to-1 multiplexer in combination with the associated lookup tables. The local outputs (LO) from the two lookup tables are connected to the I0 and I1 inputs of the MUXF5. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

Outputs O and LO are functionally identical. The O output is a general interconnect. The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF5”and “MUXF5_L”

Usage

This design element can only be instantiated. Synthesis tools will make use of the MUXF5, then MAP will make use of the MUXF5_D.

VHDL Instantiation Template

-- MUXF5_D: Slice MUX to tie two LUT4's together with general and local -- outputs -- Xilinx HDL Language Template version 7.1iMUXF5_D_inst : MUXF5_D port map ( LO => LO, -- Ouptut of MUX to local routing O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie directly to the output of LUT4) I1 => I1, -- Input (tie directoy to the output of LUT4) S => S -- Input select to MUX );-- End of MUXF5_D_inst instantiation

Verilog Instantiation Template

// MUXF5_D: Slice MUX to tie two LUT4's together with general and local // outputs // For use with All FPGAs // Xilinx HDL Language Template version 7.1iMUXF5_D MUXF5_D_inst ( .LO(LO), // Ouptut of MUX to local routing .O(O), // Output of MUX to general routing .I0(I0), // Input (tie directly to the output of LUT4) .I1(I1), // Input (tie directoy to the output of LUT4) .S(S) // Input select to MUX );// End of MUXF5_D_inst instantiation

Inputs Outputs

S I0 I1 O LO

0 1 X 1 1

0 0 X 0 0

1 X 1 1 1

1 X 0 0 0

I0

I1

S

LO

O

X8432

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 81ISE 7.1i 1-800-255-7778

Page 82: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5_DR

For More Information

Consult the Spartan-3E Data Sheets.

82 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 83: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5_LR

MUXF5_L

Primitive: 2-to-1 Lookup Table Multiplexer with Local Output

MUXF5_L provides a multiplexer function in a CLB slice for creating a function-of-5 lookup table or a 4-to-1 multiplexer in combination with the associated lookup tables. The local outputs (LO) from the two lookup tables are connected to the I0 and I1 inputs of the MUXF5. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF5”and “MUXF5_D”.

Usage

For HDL, this design element can only be instantiated. Synthesis tools will make use of the MUXF5 primitive, then MAP will make use of the MUXF5_L.

VHDL Instantiation Template

-- MUXF5_L: Slice MUX to tie two LUT4's together with local output -- Xilinx HDL Language Template version 7.1i

MUXF5_L_inst : MUXF5_L port map ( LO => LO, -- Output of MUX to local routing I0 => I0, -- Input (tie directly to the output of LUT4) I1 => I1, -- Input (tie directoy to the output of LUT4) S => S -- Input select to MUX );

-- End of MUXF5_L_inst instantiation

Verilog Instantiation Template

// MUXF5_L: Slice MUX to tie two LUT4's together with local output // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXF5_L MUXF5_L_inst ( .LO(LO), // Output of MUX to local routing .I0(I0), // Input (tie directly to the output of LUT4) .I1(I1), // Input (tie directoy to the output of LUT4) .S(S) // Input select to MUX );

Inputs Output

S I0 I1 LO

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

I0

I1

S

LO

X8433

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 83ISE 7.1i 1-800-255-7778

Page 84: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF5_LR

// End of MUXF5_L_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

84 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 85: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6R

MUXF6

Primitive: 2-to-1 Lookup Table Multiplexer with General Output

MUXF6 provides a multiplexer function in one half of a Spartan-3E CLB (two slices) for creating a function-of-6 lookup table or an 8-to-1 multiplexer in combination with the associated four lookup tables and two MUXF5s. The local outputs (LO) from the two MUXF5s in the CLB are connected to the I0 and I1 inputs of the MUXF6. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The variants, “MUXF6_D” and “MUXF6_L”, provide additional types of outputs that can be used by different timing models for more accurate pre-layout timing estimation.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF6: CLB MUX to tie two MUXF5's together with general output -- Xilinx HDL Language Template version 7.1i

MUXF6_inst : MUXF6 port map ( O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF5 LO out) I1 => I1, -- Input (tie to MUXF5 LO out) S => S -- Input select to MUX );-- End of MUXF6_inst instantiation

Verilog Instantiation Template

// MUXF6: CLB MUX to tie two MUXF5's together with general output // For use with All FPGAs // Xilinx HDL Language Template version 7.1iMUXF6 MUXF6_inst ( .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF5 LO out) .I1(I1), // Input (tie to MUXF5 LO out) .S(S) // Input select to MUX );// End of MUXF6_inst instantiation

Inputs Outputs

S I0 I1 O

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

I0

I1

S

O

X8434

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 85ISE 7.1i 1-800-255-7778

Page 86: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6R

bFor More Information

Consult the Spartan-3E Data Sheets.

86 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 87: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6_DR

MUXF6_D

Primitive: 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF6_D provides a multiplexer function in a two slices for creating a function-of-6 lookup table or an 8-to-1 multiplexer in combination with the associated four lookup tables and two MUXF5s. The local outputs (LO) from the two MUXF5s in the CLB are connected to the I0 and I1 inputs of the MUXF6. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

Outputs O and LO are functionally identical. The O output is a general interconnect. The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF6”and “MUXF6_L”

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF6_D: CLB MUX to tie two MUXF5's together with general and local -- outputs -- Xilinx HDL Language Template version 7.1i

MUXF6_D_inst : MUXF6_D port map ( LO => LO, -- Ouptut of MUX to local routing O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF5 LO out) I1 => I1, -- Input (tie to MUXF5 LO out) S => S -- Input select to MUX );

-- End of MUXF6_D_inst instantiation

Verilog Instantiation Template

// MUXF6_D: CLB MUX to tie two MUXF5's together with general and local // outputs // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXF6_D MUXF6_D_inst ( .LO(LO), // Ouptut of MUX to local routing .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF5 LO out) .I1(I1), // Input (tie to MUXF5 LO out) .S(S) // Input select to MUX

Inputs Outputs

S I0 I1 O LO

0 1 X 1 1

0 0 X 0 0

1 X 1 1 1

1 X 0 0 0

I0

I1

S

LO

O

X8435

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 87ISE 7.1i 1-800-255-7778

Page 88: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6_DR

);

// End of MUXF6_D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

88 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 89: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6_LR

MUXF6_L

Primitive: 2-to-1 Lookup Table Multiplexer with Local Output

MUXF6_L provides a multiplexer function in half of a Spartan-3E CLB (two slices) for creating a function-of-6 lookup table or an 8-to-1 multiplexer in combination with the associated four lookup tables and two MUXF5s. The local outputs (LO) from the two MUXF5s in the CLB are connected to the I0 and I1 inputs of the MUXF6. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF6”and “MUXF6_D”.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF6_L: CLB MUX to tie two MUXF5's together with local output -- Xilinx HDL Language Template version 7.1i

MUXF6_L_inst : MUXF6_L port map ( LO => LO, -- Output of MUX to local routing I0 => I0, -- Input (tie to MUXF5 LO out) I1 => I1, -- Input (tie to MUXF5 LO out) S => S -- Input select to MUX );-- End of MUXF6_L_inst instantiation

Verilog Instantiation Template

// MUXF6_L: CLB MUX to tie two MUXF5's together with local output // For use with All FPGAs // Xilinx HDL Language Template version 7.1i

MUXF6_L MUXF6_L_inst ( .LO(LO), // Output of MUX to local routing .I0(I0), // Input (tie to MUXF5 LO out) .I1(I1), // Input (tie to MUXF5 LO out) .S(S) // Input select to MUX );// End of MUXF6_L_inst instantiation

Inputs Output

S I0 I1 LO

0 1 X 1

0 0 X 0

1 X 1 1

1 X 0 0

I0

I1

S

LO

X8436

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 89ISE 7.1i 1-800-255-7778

Page 90: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF6_LR

For More Information

Consult the Spartan-3E Data Sheets.

90 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 91: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7R

MUXF7

Primitive: 2-to-1 Lookup Table Multiplexer with General Output

MUXF7 provides a multiplexer function in a full Spartan-3E CLB for creating a function-of-7 lookup table or a 16-to-1 multiplexer in combination with the associated lookup tables. Local outputs (LO) of MUXF6 are connected to the I0 and I1 inputs of the MUXF7. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The variants, “MUXF7_D”and “MUXF7_L”, provide additional types of outputs that can be used by different timing models for more accurate pre-layout timing estimation.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF7: CLB MUX to tie two MUXF6's together with general output -- Xilinx HDL Language Template version 7.1i

MUXF7_inst : MUXF7 port map ( O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF6 LO out) I1 => I1, -- Input (tie to MUXF6 LO out) S => S -- Input select to MUX );

-- End of MUXF7_inst instantiation

Verilog Instantiation Template

// MUXF7: CLB MUX to tie two MUXF6's together with general output // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF7 MUXF7_inst ( .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF6 LO out) .I1(I1), // Input (tie to MUXF6 LO out) .S(S) // Input select to MUX );

Inputs Outputs

S I0 I1 O

0 I0 X I0

1 X I1 I1

X 0 0 0

X 1 1 1

I0

I1

S

O

X8431

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 91ISE 7.1i 1-800-255-7778

Page 92: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7R

// End of MUXF7_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

92 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 93: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7_DR

MUXF7_D

Primitive: 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF7_D provides a multiplexer function in a full Spartan-3E CLB (four slices) for creating a function-of-7 lookup table or a 16-to-1 multiplexer in combination with the associated lookup tables. Local outputs (LO) of MUXF6 are connected to the I0 and I1 inputs of the MUXF7. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

Outputs O and LO are functionally identical. The O output is a general interconnect. The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF7”and “MUXF7_L”.

Usage

This design element can only be instantiated.

VHDL Instantiation Template

-- MUXF7_D: CLB MUX to tie two MUXF6's together with general and local -- outputs -- Xilinx HDL Language Template version 7.1i

MUXF7_D_inst : MUXF7_D port map ( LO => LO, -- Ouptut of MUX to local routing O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF6 LO out) I1 => I1, -- Input (tie to MUXF6 LO out) S => S -- Input select to MUX );

-- End of MUXF7_D_inst instantiation

Verilog Instantiation Template

// MUXF7_D: CLB MUX to tie two MUXF6's together with general and local // outputs // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF7_D MUXF7_D_inst ( .LO(LO), // Ouptut of MUX to local routing .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF6 LO out) .I1(I1), // Input (tie to MUXF6 LO out) .S(S) // Input select to MUX

Inputs Outputs

S I0 I1 O LO

0 I0 X I0 I0

1 X I1 I1 I1

X 0 0 0 0

X 1 1 1 1

I0

I1

S

LO

O

X8432

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 93ISE 7.1i 1-800-255-7778

Page 94: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7_DR

);

// End of MUXF7_D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

94 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 95: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7_LR

MUXF7_L

Primitive: 2-to-1 Lookup Table Multiplexer with Local Output

MUXF7_L provides a multiplexer function in a full Spartan-3E CLB (four slices) for creating a function-of-7 lookup table or a 16-to-1 multiplexer in combination with the associated lookup tables. Local outputs (LO) of MUXF6 are connected to the I0 and I1 inputs of the MUXF7. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF7”and “MUXF7_D”.

Usage

This design element can only be instantiated.

VHDL Instantiation Template

-- MUXF7_L: CLB MUX to tie two MUXF6's together with local output -- Xilinx HDL Language Template version 7.1i

MUXF7_L_inst : MUXF7_L port map ( LO => LO, -- Output of MUX to local routing I0 => I0, -- Input (tie to MUXF6 LO out) I1 => I1, -- Input (tie to MUXF6 LO out) S => S -- Input select to MUX );

-- End of MUXF7_L_inst instantiation

Verilog Instantiation Template

// MUXF7_L: CLB MUX to tie two MUXF6's together with local output // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF7_L MUXF7_L_inst ( .LO(LO), // Output of MUX to local routing .I0(I0), // Input (tie to MUXF6 LO out) .I1(I1), // Input (tie to MUXF6 LO out) .S(S) // Input select to MUX );

// End of MUXF7_L_inst instantiation

Inputs Output

S I0 I1 LO

0 I0 X I0

1 X I1 I1

X 0 0 0

X 1 1 1

I0

I1

S

LO

X8433

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 95ISE 7.1i 1-800-255-7778

Page 96: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF7_LR

For More Information

Consult the Spartan-3E Data Sheets.

96 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 97: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8R

MUXF8

Primitive: 2-to-1 Lookup Table Multiplexer with General Output

MUXF8 provides a multiplexer function in full Spartan-3E CLBs for creating a function-of-8 lookup table or a 32-to-1 multiplexer in combination with the associated lookup tables, MUXF5s, MUXF6s, and MUXF7s. Local outputs (LO) of MUXF7 are connected to the I0 and I1 inputs of the MUXF8. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

See also “MUXF8_D”and “MUXF8_L”.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF8: CLB MUX to tie two MUXF7's together with general output -- Xilinx HDL Language Template version 7.1i

MUXF8_inst : MUXF8 port map ( O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF7 LO out) I1 => I1, -- Input (tie to MUXF7 LO out) S => S -- Input select to MUX );

-- End of MUXF8_inst instantiation

Verilog Instantiation Template

// MUXF8: CLB MUX to tie two MUXF7's together with general output // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF8 MUXF8_inst ( .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF7 LO out) .I1(I1), // Input (tie to MUXF7 LO out) .S(S) // Input select to MUX );

// End of MUXF8_inst instantiation

Inputs Outputs

S I0 I1 O

0 I0 X I0

1 X I1 I1

X 0 0 0

X 1 1 1

I0

I1

S

O

X8434

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 97ISE 7.1i 1-800-255-7778

Page 98: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8R

For More Information

Consult the Spartan-3E Data Sheets.

98 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 99: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8_DR

MUXF8_D

Primitive: 2-to-1 Lookup Table Multiplexer with Dual Output

MUXF8_D provides a multiplexer function in two full Spartan-3E CLBs for creating a function-of-8 lookup table or a 32-to-1 multiplexer in combination with the associated four lookup tables and two MUXF8s. Local outputs (LO) of MUXF7 are connected to the I0 and I1 inputs of the MUXF8. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

Outputs O and LO are functionally identical. The O output is a general interconnect. The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF8”and “MUXF8_L”.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF8_D: CLB MUX to tie two MUXF7's together with general and local -- outputs -- Xilinx HDL Language Template version 7.1i

MUXF8_D_inst : MUXF8_D port map ( LO => LO, -- Ouptut of MUX to local routing O => O, -- Output of MUX to general routing I0 => I0, -- Input (tie to MUXF7 LO out) I1 => I1, -- Input (tie to MUXF7 LO out) S => S -- Input select to MUX );

-- End of MUXF8_D_inst instantiation

Verilog Instantiation Template

// MUXF8_D: CLB MUX to tie two MUXF7's together with general and local // outputs // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF8_D MUXF8_D_inst ( .LO(LO), // Ouptut of MUX to local routing .O(O), // Output of MUX to general routing .I0(I0), // Input (tie to MUXF7 LO out) .I1(I1), // Input (tie to MUXF7 LO out) .S(S) // Input select to MUX

Inputs Outputs

S I0 I1 O LO

0 I0 X I0 I0

1 X I1 I1 I1

X 0 0 0 0

X 1 1 1 1

I0

I1

S

LO

O

X8435

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 99ISE 7.1i 1-800-255-7778

Page 100: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8_DR

);

// End of MUXF8_D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

100 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 101: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8_LR

MUXF8_L

Primitive: 2-to-1 Lookup Table Multiplexer with Local Output

MUXF8_L provides a multiplexer function in two full Spartan-3E CLBs for creating a function-of-8 lookup table or a 32-to-1 multiplexer in combination with the associated four lookup tables and two MUXF8s. Local outputs (LO) of MUXF7 are connected to the I0 and I1 inputs of the MUXF8. The S input is driven from any internal net. When Low, S selects I0. When High, S selects I1.

The LO output is used to connect to other inputs within the same CLB slice.

See also “MUXF8”and “MUXF8_D”.

Usage

For HDL, this design element can only be instantiated.

VHDL Instantiation Template

-- MUXF8_L: CLB MUX to tie two MUXF7's together with local output -- Xilinx HDL Language Template version 7.1i

MUXF8_L_inst : MUXF8_L port map ( LO => LO, -- Output of MUX to local routing I0 => I0, -- Input (tie to MUXF7 LO out) I1 => I1, -- Input (tie to MUXF7 LO out) S => S -- Input select to MUX );-- End of MUXF8_L_inst instantiation

Verilog Instantiation Template

// MUXF8_L: CLB MUX to tie two MUXF7's together with local output // All FPGA // Xilinx HDL Language Template version 7.1i

MUXF8_L MUXF8_L_inst ( .LO(LO), // Output of MUX to local routing .I0(I0), // Input (tie to MUXF7 LO out) .I1(I1), // Input (tie to MUXF7 LO out) .S(S) // Input select to MUX );// End of MUXF8_L_inst instantiation

Inputs Output

S I0 I1 LO

0 I0 X I0

1 X I1 I1

X 0 0 0

X 1 1 1

I0

I1

S

LO

X8436

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 101ISE 7.1i 1-800-255-7778

Page 102: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

MUXF8_LR

For More Information

Consult the Spartan-3E Data Sheets.

102 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 103: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFR

OBUF

Primitive: Single-ended Output Buffers

Output buffers are necessary for all output signals because they isolate the internal circuit and provide drive current for signals leaving a chip. The OBUF is a constantly enabled output buffer that is generally used for specifying a single-ended output when a tri-state is not necessary for the output. The output (O) of an OBUF should be connected directly to the top-level ouput port in the design.

Usage

OBUFs are optional for use in the schematic since they will automatically be inserted into the design, if necessary. If you want to manually add this component, however, the component should be placed in the top-level schematic connecting the output directly to an output port marker.

OBUFs are available in bundles of 4, 8, or 16 to make it easier for you to incorporate them into your design without having to apply multiples of them one at a time. (The bundles are thus identified as OBUF4, OBUF8, and OBUF16.)

Available Attributes

DRIVE

IOSTANDARD

SLEW

VHDL Instantiation Template

-- OBUF: Single-ended Output Buffer -- All devices -- Xilinx HDL Libraries Guide version 7.1i OBUF_inst : OBUF generic map ( DRIVE => 12, IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map ( O => O, -- Buffer output (connect directly to top-level port) I => I -- Buffer input ); -- End of OBUF_inst instantiation

Verilog Instantiation Template

// OBUF: Single-ended Output Buffer // All devices // Xilinx HDL Libraries Guide version 7.1i OBUF OBUF_inst ( .O(O), // Buffer output (connect directly to top-level port) .I(I) // Buffer input

X9445

OBUF

I O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 103ISE 7.1i 1-800-255-7778

Page 104: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFR

); // Edit the following defparams to specify the I/O standard, drive and slew rate. If // the instance name is change, that change needs to be reflecting the this defparam.

defparam OBUF_inst.DRIVE = 12; defparam OBUF_inst.IOSTANDARD = "DEFAULT"; defparam OBUF_inst.SLEW = "SLOW";

// End of OBUF_inst instantiation

For More Information

Consult the Spartan-3E Data Sheet.

104 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 105: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFDSR

OBUFDS

Primitive: Differential Signaling Output Buffer with Selectable I/O Interface

OBUFDS is a single output buffer that supports low-voltage, differential signaling (1.8v CMOS). OBUFDS isolates the internal circuit and provides drive current for signals leaving the chip. Its output is represented as two distinct ports (O and OB), one deemed the "master" and the other the "slave." The master and the slave are opposite phases of the same logical signal (for example, MYNET and MYNETB).

Usage

This design element should be instantiated rather than inferred.

Available Attributes

DRIVE

IOSTANDARD

SLEW

VHDL Instantiation Template

-- OBUFDS: Differential Output Buffer -- All FPGA -- Xilinx HDL Language Template version 7.1i OBUFDS_inst : OBUFDS -- Edit the following generics to specify the I/O standard, drive and slew rate. generic map ( DRIVE => 12, IOSTANDARD => "LVDS_25", SLEW => "SLOW") port map ( O => O, -- Diff_p output (connect directly to top-level port) OB => OB, -- Diff_n output (connect directly to top-level port) I => I -- Buffer input ); -- End of OBUFDS_inst instantiation

Verilog Instantiation Template

// OBUFDS: Differential Output Buffer // All FPGA // Xilinx HDL Language Template version 7.1i

Inputs Outputs

I O OB

0 0 1

1 1 0

X9259

OBUFDS

IO

OB

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 105ISE 7.1i 1-800-255-7778

Page 106: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFDSR

OBUFDS OBUFDS_inst ( .O(O), // Diff_p output (connect directly to top-level port) .OB(OB), // Diff_n output (connect directly to top-level port) .I(I) // Buffer input ); // Edit the following defparams to specify the I/O standard, drive and slew rate. If // the instance name is changed, that change needs to be reflecting the this

defparam.

defparam OBUFDS_inst.DRIVE = 12; defparam OBUFDS_inst.IOSTANDARD = "DEFAULT"; defparam OBUFDS_inst.SLEW = "SLOW";

// End of OBUFDS_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

106 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 107: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFTR

OBUFT

Primitive: 3-State Output Buffer with Active-Low Output EnableOutput buffers are necessary for all output signals because they isolate the internal circuit and provide drive current for signals leaving a chip. The OBUFT is a 3-state output buffer with input I, output O, and active-Low output enables (T). When T is Low, data on the inputs of the buffers is transferred to the corresponding outputs. When T is High, the output is high impedance (off or Z state).

An OBUFT output should be connected directly to the top-level output or inout port. OBUFTs are generally used when a single-ended output is needed with a tri-state capability, such as the case when building bi-directional I/O.

Usage

OBUFTs should be placed in the top-level schematic connecting the output directly to an output or bi-directional port marker.

OBUFTs are available in bundles of 4, 8, or 16 to make it easier for you to incorporate them into your design without having to apply multiples of them one at a time. (The bundles are thus identified as OBUFT4, OBUFT8, and OBUFT16.)

Available Attributes

DRIVE

IOSTANDARD

SLEW

VHDL Instantiation Template

-- Component Declaration for OBUFT should be placed -- after architecture statement but before begin keyword

component OBUFT-- synthesis translate_offgeneric (

IOSTANDARD : string:= "LVTTL";DRIVE : integer := 2;SLEW : string := "FAST");

-- synthesis translate_onport (O : out STD_ULOGIC;

I : in STD_ULOGIC;T : in STD_ULOGIC);

end component;

-- Component Attribute specification for OBUFT-- should be placed after architecture declaration but

Inputs Outputs

T I O

1 X Z

0 1 1

0 0 0

X9449

OBUFT

I

T

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 107ISE 7.1i 1-800-255-7778

Page 108: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFTR

-- before the begin keyword

-- Enter attributes here

attribute IOSTANDARD : string; attribute DRIVE : integer; attribute SLEW : string; attribute IOSTANDARD of OBUFT_instance_name : label is "LVTTL"; attribute DRIVE of OBUFT_instance_name : label is 2; attribute SLEW of OBUFT_instance_name : label is "FAST";

-- Component Instantiation for OBUFT should be-- placed in architecture after the begin keyword

OBUFT_INSTANCE_NAME : OBUFT-- synthesis translate_offgeneric map (

IOSTANDARD => “string_value”, DRIVE => integer := integer_value,SLEW => string := “string_value”);

-- synthesis translate_onport map (O => user_O,

I => user_I,T => user_T);

Verilog Instantiation Template

OBUFT instance_name (.O (user_O),.I (user_I),.T (user_T));

defparam OBUFT_instance_name.IOSTANDARD => “string_value”;defparam OBUFT_instance_name.DRIVE => integer_value;defparam OBUFT_instance_name.SLEW => “string_value”;

For More Information

Consult the Spartan-3E Data Sheets.

108 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 109: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFTDSR

OBUFTDS

Primitive: 3-State Differential Signaling Output Buffer with Active Low Output Enable and Selectable I/O Interface

OBUFTDS is a single 3-state, differential signaling output buffer with active Low enable and a Select I/O interface.

When T is Low, data on the input of the buffer is transferred to the output (O) and inverted output (OB). When T is High, both outputs are high impedance (off or Z state).

Usage

This design element is available for instantiation only.

Available Attributes

Attach an IOSTANDARD attribute to an OBUFTDS and assign the value indicated in the "IOSTANDARD (Attribute Value)" column to program the outputs for the I/O standard associated with that value.

VHDL Instantiation Template

-- OBUFTDS: Differential 3-state Output Buffer -- All FPGA -- Xilinx HDL Language Template version 7.1i OBUFTDS_inst : OBUFTDS -- Edit the following generics to specify the I/O standard, drive and slew rate. generic map ( DRIVE => 12, IOSTANDARD => "LVDS_25", SLEW => "SLOW") port map ( O => O, -- Diff_p output (connect directly to top-level port) OB => OB, -- Diff_n output (connect directly to top-level port) I => I, -- Buffer input T => T -- 3-state enable input); -- End of OBUFTDS_inst instantiation

Verilog Instantiation Template

// OBUFTDS: Differential 3-state Output Buffer // All FPGA

Inputs Outputs

I T O OB

X 1 Z Z

0 0 0 1

1 0 1 0

X9260

T

OOB

I

OBUFTDS

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 109ISE 7.1i 1-800-255-7778

Page 110: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

OBUFTDSR

// Xilinx HDL Language Template version 7.1i OBUFTDS OBUFTDS_inst ( .O(O), // Diff_p output (connect directly to top-level port) .OB(OB), // Diff_n output (connect directly to top-level port) .I(I), // Buffer input .T(T) // 3-state enable input ); // Edit the following defparams to specify the I/O standard, drive and slew rate. If // the instance name is changed, that change needs to be reflecting the this

defparam.

defparam OBUFTDS_inst.DRIVE = 12; defparam OBUFTDS_inst.IOSTANDARD = "DEFAULT"; defparam OBUFTDS_inst.SLEW = "SLOW";

// End of OBUFTDS_inst instantiationb

For More Information

Consult the Spartan-3E Data Sheets.

110 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 111: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ODDR2R

ODDR2

Primitive: Double Data Rate Output D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set/Reset

The ODDR2 is an output double data rate (DDR) register useful in producing double data-rate signals exiting the FPGA. The ODDR2 requires two clocks to be connected to the component, C0 and C1, so that data is provided at the positive edge of both C0 and C1 clocks. The ODDR2 features an active high clock enable port, CE, which may be used to suspend the operation of the registers and both set and reset ports that may be configured to be synchronous or asynchronous to the respective clocks. The ODDR2 has an optional alignment feature, which allows data to be captured by a single clock yet clocked out by two clocks.

Usage

The ODDR2 currently must be instantiated in order to be incorporated into the design. In order to change the default behavior of the ODDR2, attributes may be modified via the generic map (VHDL) or named parameter value assignment (Verilog) as a part of the instantiated component. The ODDR2 may be either connected directly to a top-level output port in the design where an appropriate output buffer can be inferred or to an instantiated OBUF, IOBUF, OBUFDS, OBUFTDS or IOBUFDS. All inputs and outputs of this component should either be connected or properly tied off.

Available Attributes

DDR_ALIGNMENT – Specifies how the data will be captured on the D0 and D1 ports. When set to "NONE", the data on the D0 port will be aligned with the positive edge of the C0 clock and the data on the D1 port will be aligned with the positive edge of the C1 clock. When set to "C0", the data on both D0 and D1 ports are aligned to the positive edge of the C0 clock and when set to "C1", the data on the D0 and D1 ports are aligned to the positive edge of the C1 clock. The output data Q is always presented on the positive edge of both clocks.

INIT – Specifies the initial value upon power-up or the assertion of GSR for the Q port. This attribute may be set to 1 or 0.

SRTYPE – When set to "SYNC", the reset, R, and set, S, ports are synchronous to the associated clock inputs. When set to "ASYNC", the set and reset ports are asynchronous to the clock.

VHDL Instantiation Template

-- ODDR2: Output Double Data Rate Input Register with-- Set, Reset and Clock Enable. Spartan-3E-- Xilinx HDL Libraries Guide version 7.1i

ODDR2_inst : ODDR2generic map ( DDR_ALIGNMENT => "NONE", -- Sets output alignment -- to "NONE", "C0" or "C1" INIT => '0', -- Sets initial state of the Q0

ODDR2

D1

D0

Q

C0

C1

R

CE

S

X10236

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 111ISE 7.1i 1-800-255-7778

Page 112: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ODDR2R

-- output to ‘0’ or ‘1’ SRTYPE =>= "SYNC") -- Specifies "SYNC" or "ASYNC" -- set/resetport map ( Q => Q, -- 1-bit DDR output data C0 => C0, -- 1-bit clock input C1 => C1, -- 1-bit clock input CE => CE, -- 1-bit clock enable input D0 => D0, -- 1-bit data input (associated with C1) D1 => D1, -- 1-bit data input (associated with C1) R => R, -- 1-bit reset input S => S -- 1-bit set input);

-- End of ODDR2_inst instantiation

Verilog Instantiation Template

// ODDR2: Output Double Data Rate Input Register with// Set, Reset and Clock Enable. Spartan-3E// Xilinx HDL Libraries Guide version 7.1i

ODDR2 #( // The following parameters specify the behavior // of the component. .DDR_ALIGNMENT("NONE"), // Sets output alignment // to "NONE", "C0" or "C1" .INIT(1'b0), // Sets initial state of the Q // output to 1'b0 or 1'b1 .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" // set/resetODDR2_inst ( .Q(Q), // 1-bit DDR output data .C0(C0), // 1-bit clock input .C1(C1), // 1-bit clock input .CE(CE), // 1-bit clock enable input .D0(D0), // 1-bit data input (associated with C0) .D1(D1), // 1-bit data input (associated with C1) .R(R), // 1-bit reset input .S(S) // 1-bit set input);

// End of ODDR2_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

112 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 113: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

PULLDOWNR

PULLDOWN

Primitive: Resistor to GND for Input Pads

PULLDOWN resistor elements are connected to input, output, or bidirectional pads to guarantee a logic Low level for nodes that might float.

Usage

This design element is instantiated rather than inferred.

VHDL Instantiation Template

-- PULLDOWN: I/O Buffer Weak Pull-down -- All FPGA -- Xilinx HDL Language Template version 7.1i PULLDOWN_inst : PULLDOWN port map ( O => O -- Pulldown output (connect directly to top-level port) ); -- End of PULLDOWN_inst instantiation

Verilog Instantiation Template

// PULLDOWN: I/O Buffer Weak Pull-down // All FPGA // Xilinx HDL Language Template version 7.1i PULLDOWN PULLDOWN_inst ( .O(O), // Pulldown output (connect directly to top-level port) ); // End of PULLDOWN_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

X3860

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 113ISE 7.1i 1-800-255-7778

Page 114: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

PULLDOWNR

114 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 115: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

PULLUPR

PULLUP

Primitive: Resistor to VCC for Input PADs, Open-Drain, and 3-State Outputs

The pull-up elements establish a High logic level for open-drain elements and macros (DECODE, WAND, WORAND) or 3-state nodes (TBUF) when all the drivers are off.

The buffer outputs are connected together as a wired-AND to form the output (O). When all the inputs are High, the output is off. To establish an output High level, a PULLUP resistor(s) is tied to output (O). One PULLUP resistor uses the least power, two pull-up resistors achieve the fastest Low-to-High speed.

To indicate two PULLUP resistors, append a DOUBLE parameter to the pull-up symbol attached to the output (O) node.

Usage

This design element is instantiated rather than inferred.

VHDL Instantiation Template

-- PULLUP: I/O Buffer Weak Pull-up -- All FPGA -- Xilinx HDL Language Template version 7.1i PULLUP_inst : PULLUP port map ( O => O -- Pullup output (connect directly to top-level port) ); -- End of PULLUP_inst instantiation

Verilog Instantiation Template

// PULLUP: I/O Buffer Weak Pull-up // All FPGA // Xilinx HDL Language Template version 7.1i PULLUP PULLUP_inst ( .O(O), // Pullup output (connect directly to top-level port) ); // End of PULLUP_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

X3861

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 115ISE 7.1i 1-800-255-7778

Page 116: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

PULLUPR

116 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 117: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1DR

RAM16X1D

Primitive: 16-Deep by 1-Wide Static Dual Port Synchronous RAM

RAM16X1D is a 16-word by 1-bit static dual port random access memory with synchronous write capability. The device has two separate address ports: the read address (DPRA3 – DPRA0) and the write address (A3 – A0). These two address ports are completely asynchronous. The read address controls the location of the data driven out of the output pin (DPO), and the write address controls the destination of a valid write transaction.

When the write enable (WE) is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is not affected. When WE is High, any positive transition on WCLK loads the data on the data input (D) into the word selected by the 4-bit write address. For predictable performance, write address and data inputs must be stable before a Low-to-High WCLK transition. This RAM block assumes an active-High WCLK. WCLK can be active-High or active-Low. Any inverter placed on the WCLK input net is absorbed into the block.

Mode selection is shown in the following truth table.

The SPO output reflects the data in the memory cell addressed by A3 – A0. The DPO output reflects the data in the memory cell addressed by DPRA3 – DPRA0.

Note: The write process is not affected by the address on the read address port.

Specifying Initial Contents of a RAM

You can use the INIT attribute to specify an initial value directly on the symbol if the RAM is 1 bit wide and 16, 32, 64, or 128 bits deep. The value must be a hexadecimal number, for example, INIT=ABAC. If the INIT attribute is not specified, the RAM is initialized with zero.

See the "INIT" section of the Constraints Guide for more information on the INIT attribute.

For Spartan-3E wide RAMs (2, 4, and 8-bit wide single port synchronous RAMs with a WCLK) can also be initialized. These RAMs, however, require INIT_xx attributes.

Usage

For HDL, this design element can be inferred or instantiated. The instantiation code is shown below. For information on how to infer RAM, see the XST User Guide.

Inputs Outputs

WE (mode) WCLK D SPO DPO

0 (read) X X data_a data_d

1 (read) 0 X data_a data_d

1 (read) 1 X data_a data_d

1 (write) ↑ D D data_d

1 (read) ↓ X data_a data_d

data_a = word addressed by bits A3-A0

data_d = word addressed by bits DPRA3-DPRA0

X4950

RAM16X1D

A2

DPRA3

DPRA2

DPRA1

DPRA0

A3

A1

A0

WCLK

WE

D

SPO

DPO

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 117ISE 7.1i 1-800-255-7778

Page 118: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1DR

Available Attributes.

VHDL Instantiation Template

-- RAM16X1D: 16 x 1 positive edge write, asynchronous read dual-port --- distributed RAM -- All FPGAs -- Xilinx HDL Language Template version 7.1i

RAM16X1D_inst : RAM16X1D -- The following generic INIT declaration is only necessary if you wish to change the

initial -- contents of the RAM to anything other than all zero's. generic map ( INIT => X"0000") port map ( DPO => DPO, -- Port A 1-bit data output SPO => SPO, -- Port B 1-bit data output A0 => A0, -- Port A address[0] input bit A1 => A1, -- Port A address[1] input bit A2 => A2, -- Port A address[2] input bit A3 => A3, -- Port A address[3] input bitD => D, -- Port A 1-bit data input DPRA0 => DPRA0, -- Port B address[0] input bit DPRA1 => DPRA1, -- Port B address[1] input bit DPRA2 => DPRA2, -- Port B address[2] input bit DPRA3 => DPRA3, -- Port B address[3] input bit WCLK => WCLK, -- Port A write clock input WE => WE -- Port A write enable input );

-- End of RAM16X1D_inst instantiation

Verilog Instantiation Template

// RAM16X1D: 16 x 1 positive edge write, asynchronous read dual-port // // distributed RAM

// All FPGAs // Xilinx HDL Language Template version 7.1i

RAM16X1D RAM16X1D_inst ( .DPO(DPO), // Port A 1-bit data output .SPO(SPO), // Port B 1-bit data output .A0(A0), // Port A address[0] input bit .A1(A1), // Port A address[1] input bit .A2(A2), // Port A address[2] input bit .A3(A3), // Port A address[3] input bit .D(D), // Port A 1-bit data input .DPRA0(DPRA0), // Port B address[0] input bit .DPRA1(DPRA1), // Port B address[1] input bit .DPRA2(DPRA2), // Port B address[2] input bit .DPRA3(DPRA3), // Port B address[3] input bit .WCLK(WCLK), // Port A write clock input .WE(WE) // Port A write enable input

Attribute Type Allowed Values Default

INIT 16-Bit Binary 16 bits of 1’s or 0’s (Hex values allowed)

All zeroes

118 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 119: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1DR

);

// The following defparam INIT declaration is only necessary if you wish to change the initial

// contents of the RAM to anything other than all zero's. If the instance name for the RAM is

// is changes, that change needs to be reflected in the defparam statement.

defparam RAM16X1D_inst.INIT = 16'h0000;

// End of RAM16X1D_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 119ISE 7.1i 1-800-255-7778

Page 120: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1DR

120 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 121: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1SR

RAM16X1S

Primitive: 16-Deep by 1-Wide Static Synchronous RAM

RAM16X1S is a 16-word by 1-bit static random access memory with synchronous write capability. When the write enable (WE) is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is not affected. When WE is High, any positive transition on WCLK loads the data on the data input (D) into the word selected by the 4-bit address (A3 – A0). For predictable performance, address and data inputs must be stable before a Low-to-High WCLK transition. This RAM block assumes an active-High WCLK. However, WCLK can be active-High or active-Low. Any inverter placed on the WCLK input net is absorbed into the block.

The signal output on the data output pin (O) is the data that is stored in the RAM at the location defined by the values on the address pins.

You can initialize RAM16X1S during configuration using the INIT attribute. See “Specifying Initial Contents of a RAM” in the RAM16X1D section.

Mode selection is shown in the following truth table.

Usage

For HDL, this design element can be inferred or instantiated. The instantiation code is shown below. For information on how to infer RAM, see the XST User Guide.

Available Attributes.

VHDL Instantiation Template

-- RAM16X1S: 16 x 1 posedge write distributed => LUT RAM -- All FPGA -- Xilinx HDL Language Template version 7.1i

RAM16X1S_inst : RAM16X1S -- Edit the following generic to change the inital contents of the RAM. generic map ( INIT => X"0000") port map ( O => O, -- RAM output

Inputs Outputs

WE(mode) WCLK D O

0 (read) X X Data

1 (read) 0 X Data

1 (read) 1 X Data

1 (write) ↑ D D

1 (read) ↓ X Data

Data = word addressed by bits A3 – A0

Attribute Type Allowed Values Default

INIT 16-Bit Binary 16 bits of 1’s or 0’s (Hex values allowed)

All zeroes

X4942

RAM16X1S

A2

A3

A1

A0

WCLK

WE

D

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 121ISE 7.1i 1-800-255-7778

Page 122: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM16X1SR

A0 => A0, -- RAM address[0] input A1 => A1, -- RAM address[1] input A2 => A2, -- RAM address[2] input A3 => A3, -- RAM address[3] input D => D, -- RAM data input WCLK => WCLK, -- Write clock inputWE => WE -- Write enable input );

-- End of RAM16X1S_inst instantiation

Verilog Instantiation Template

// RAM16X1S: 16 x 1 posedge write distributed (LUT) RAM // All FPGA // Xilinx HDL Language Template version 7.1i

RAM16X1S RAM16X1S_inst ( .O(O), // RAM output .A0(A0), // RAM address[0] input .A1(A1), // RAM address[1] input .A2(A2), // RAM address[2] input .A3(A3), // RAM address[3] input .D(D), // RAM data input .WCLK(WCLK), // Write clock input .WE(WE) // Write enable input );

// Edit the following defparam to change the inital contents of the RAM // to a non-zero value if desired. If the instance name to the RAM is // changed, that change needs to be reflected in the defparam statements.

defparam RAM16X1S_inst.INIT = 16'h0000;

// End of RAM16X1S_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

122 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 123: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM32X1SR

RAM32X1S

Primitive: 32-Deep by 1-Wide Static Synchronous RAM

RAM32X1S is a 32-word by 1-bit static random access memory with synchronous write capability. When the write enable is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is not affected. When WE is High, any positive transition on WCLK loads the data on the data input (D) into the word selected by the 5-bit address (A4 – A0). For predictable performance, address and data inputs must be stable before a Low-to-High WCLK transition. This RAM block assumes an active-High WCLK. However, WCLK can be active-High or active-Low. Any inverter placed on the WCLK input net is absorbed into the block.

The signal output on the data output pin (O) is the data that is stored in the RAM at the location defined by the values on the address pins.

You can initialize RAM32X1S during configuration using the INIT attribute. See “Specifying Initial Contents of a RAM” in the RAM16X1D section.

Mode selection is shown in the following truth table.

Usage

For HDL, this design element can be inferred or instantiated. The instantiation code is shown below. For information on how to infer RAM, see the XST User Guide.

Available Attributes

VHDL Instantiation Template

-- RAM32X1S: 32 x 1 posedge write distributed => LUT RAM -- All FPGA -- Xilinx HDL Language Template version 7.1i

RAM32X1S_inst : RAM32X1S -- Edit the following generic to change the inital contents of the RAM. generic map ( INIT => X"00000000") port map ( O => O, -- RAM output

Inputs Outputs

WE (mode) WCLK D O

0 (read) X X Data

1 (read) 0 X Data

1 (read) 1 X Data

1 (write) ↑ D D

1 (read) ↓ X Data

Data = word addressed by bits A4 – A0

Attribute Type Allowed Values Default

INIT 32-Bit Binary 32 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X4943

RAM32X1S

A2

A4

A3

A1

A0

WCLK

WE

D

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 123ISE 7.1i 1-800-255-7778

Page 124: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM32X1SR

A0 => A0, -- RAM address[0] input A1 => A1, -- RAM address[1] input A2 => A2, -- RAM address[2] input A3 => A3, -- RAM address[3] input A4 => A4, -- RAM address[4] input D => D, -- RAM data input WCLK => WCLK, -- Write clock inputWE => WE -- Write enable input );

-- End of RAM32X1S_inst instantiation

Verilog Instantiation Template

// RAM32X1S: 32 x 1 posedge write distributed (LUT) RAM // All FPGA // Xilinx HDL Language Template version 7.1i

RAM32X1S RAM32X1S_inst ( .O(O), // RAM output .A0(A0), // RAM address[0] input .A1(A1), // RAM address[1] input .A2(A2), // RAM address[2] input .A3(A3), // RAM address[3] input .A4(A4), // RAM address[4] input .D(D), // RAM data input .WCLK(WCLK), // Write clock input .WE(WE) // Write enable input );

// Edit the following defparam to change the inital contents of the RAM // to a non-zero value if desired. If the instance name to the RAM is // changed, that change needs to be reflected in the defparam statements.

defparam RAM32X1S_inst.INIT = 32'h00000000;

// End of RAM32X1S_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

124 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 125: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM64X1SR

RAM64X1S

Primitive: 64-Deep by 1-Wide Static Synchronous RAM

RAM64X1S is a 64-word by 1-bit static random access memory with synchronous write capability. When the write enable is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is not affected. When WE is High, any positive transition on WCLK loads the data on the data input (D) into the word selected by the 6-bit address (A5 – A0). For predictable performance, address and data inputs must be stable before a Low-to-High WCLK transition. This RAM block assumes an active-High WCLK. However, WCLK can be active-High or active-Low. Any inverter placed on the WCLK input net is absorbed into the block.

The signal output on the data output pin (O) is the data that is stored in the RAM at the location defined by the values on the address pins.

You can initialize RAM64X1S during configuration using the INIT attribute. See “Specifying Initial Contents of a RAM” in the RAM16X1D section.

Mode selection is shown in the following truth table.

Usage

For HDL, this design element can be inferred or instantiated. The instantiation code is shown below. For information on how to infer RAM, see the XST User Guide.

Available Attributes.

VHDL Instantiation Template

-- RAM64X1S: 64 x 1 positive edge write, asynchronous read single-port -- distributed RAM

-- All FPGA -- Xilinx HDL Language Template version 7.1i

RAM64X1S_inst : RAM64X1S -- The following generic INIT declaration is only necessary if you wish to change the

initial -- contents of the RAM to anything other than all zero's. generic map (

Inputs Outputs

WE (mode) WCLK D O

0 (read) X X Data

1 (read) 0 X Data

1 (read) 1 X Data

1 (write) ↑ D D

1 (read) ↓ X Data

Data = word addressed by bits A5 – A0

Attribute Type Allowed Values Default

INIT 64-Bit Binary 64'h0000000000000000 All zeroes

X9265

A1

A0

WCLK

D

WE

A5

A4

A3

A2

ORAM64x1S

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 125ISE 7.1i 1-800-255-7778

Page 126: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

RAM64X1SR

INIT => X"0000000000000000") port map ( O => O, -- 1-bit data output A0 => A0, -- Address[0] input bit A1 => A1, -- Address[1] input bit A2 => A2, -- Address[2] input bit A3 => A3, -- Address[3] input bit A4 => A4, -- Address[4] input bit A5 => A5, -- Address[5] input bitD => D, -- 1-bit data inputWCLK => WCLK, -- Write clock input WE => WE -- Write enable input );

-- End of RAM64X1S_inst instantiation

Verilog Instantiation Template

// RAM64X1S: 64 x 1 positive edge write, asynchronous read single-port // distributed RAM

// All FPGA // Xilinx HDL Language Template version 7.1i

RAM64X1S RAM64X1S_inst ( .O(O), // 1-bit data output .A0(A0), // Address[0] input bit .A1(A1), // Address[1] input bit .A2(A2), // Address[2] input bit .A3(A3), // Address[3] input bit .A4(A4), // Address[4] input bit .A5(A5), // Address[5] input bit .D(D), // 1-bit data input .WCLK(WCLK), // Write clock input .WE(WE) // Write enable input );

// The following defparam INIT declaration is only necessary if you wish to change the initial

// contents of the RAM to anything other than all zero's. If the instance name for the RAM is

// is changes, that change needs to be reflected in the defparam statement.

defparam RAM64X1S_inst.INIT = 64'h0000000000000000;

// End of RAM64X1S_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

126 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 127: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM16X1R

ROM16X1

Primitive: 16-Deep by 1-Wide ROM

ROM16X1 is a 16-word by 1-bit read-only memory. The data output (O) reflects the word selected by the 4-bit address (A3 – A0). The ROM is initialized to a known value during configuration with the INIT=value parameter. The value consists of four hexadecimal digits that are written into the ROM from the most-significant digit A=FH to the least-significant digit A=0H. For example, the INIT=10A7 parameter produces the data stream:

0001 0000 1010 0111

An error occurs if the INIT=value is not specified.

Usage

This design element should be instantiated rather than inferred.

Available Attributes

VHDL Instantiation Template

-- ROM16X1: 16 x 1 Asynchronous Distributed => LUT ROM -- Xilinx HDL Language Template version 7.1i

ROM16X1_inst : ROM16X1 -- Edit the following generic to define the contents of the ROM. generic map ( INIT => X"0000") port map ( O => O, -- ROM output A0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3 -- ROM address[3] );

-- End of ROM16X1_inst instantiation

Verilog Instantiation Template

// ROM16X1: 16 x 1 Asynchronous Distributed (LUT) ROM // All FPGAs // Xilinx HDL Language Template version 7.1i

ROM16X1 ROM16X1_inst ( .O(O), // ROM output .A0(A0), // ROM address[0] .A1(A1), // ROM address[1] .A2(A2), // ROM address[2] .A3(A3) // ROM address[3]

Attribute Type Allowed Values Default

INIT 16-Bit Binary 16 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X4137

ROM16X1A0

A1

A2

A3

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 127ISE 7.1i 1-800-255-7778

Page 128: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM16X1R

);

// Edit the following defparam to define the contents of the ROM. // If the instance name to the ROM is changed, that change needs to // be reflected in the defparam statements.

defparam ROM16X1_inst.INIT = 16'h0000;

// End of ROM16X1_inst instantiationb

For More Information

Consult the Spartan-3E Data Sheets.

128 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 129: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM32X1R

ROM32X1

Primitive: 32-Deep by 1-Wide ROM

ROM32X1 is a 32-word by 1-bit read-only memory. The data output (O) reflects the word selected by the 5-bit address (A4 – A0). The ROM is initialized to a known value during configuration with the INIT=value parameter. The value consists of eight hexadecimal digits that are written into the ROM from the most-significant digit A=1FH to the least-significant digit A=00H. For example, the INIT=10A78F39 parameter produces the data stream:

0001 0000 1010 0111 1000 1111 0011 1001

An error occurs if the INIT=value is not specified.

Usage

This design element should be instantiated rather than inferred.

Available Attributes.

VHDL Instantiation Template

-- ROM32X1: 32 x 1 Asynchronous Distributed => LUT ROM -- Xilinx HDL Language Template version 7.1i

ROM32X1_inst : ROM32X1 -- Edit the following generic to define the contents of the ROM. generic map ( INIT => X"00000000") port map ( O => O, -- ROM output A0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3, -- ROM address[3] A4 => A4 -- ROM address[4] ); -- End of ROM32X1_inst instantiation

Verilog Instantiation Template

// ROM32X1: 32 x 1 Asynchronous Distributed (LUT) ROM // All FPGAs // Xilinx HDL Language Template version 7.1i

ROM32X1 ROM32X1_inst ( .O(O), // ROM output .A0(A0), // ROM address[0] .A1(A1), // ROM address[1] .A2(A2), // ROM address[2] .A3(A3), // ROM address[3]

Attribute Type Allowed Values Default

INIT 32-Bit Binary 32 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X4130

ROM32X1O

A2

A3

A4

A1

A0

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 129ISE 7.1i 1-800-255-7778

Page 130: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM32X1R

.A4(A4) // ROM address[4] ); // Edit the following defparam to define the contents of the ROM. // If the instance name to the ROM is changed, that change needs to // be reflected in the defparam statements.

defparam ROM32X1_inst.INIT = 32'h00000000;

// End of ROM32X1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

130 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 131: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM64X1R

ROM64X1

Primitive: 64-Deep by 1-Wide ROM

ROM64X1 is a 64-word by 1-bit read-only memory. The data output (O) reflects the word selected by the 6-bit address (A5 – A0). The ROM is initialized to a known value during configuration with the INIT=value parameter. The value consists of 16 hexadecimal digits that are written into the ROM from the most-significant digit A=FH to the least-significant digit A=0H.

An error occurs if the INIT=value is not specified.

Usage

This design element should be instantiated rather than inferred.

Available Attributes.

VHDL Instantiation Template

-- ROM64X1: 64 x 1 Asynchronous Distributed => LUT ROM -- All FPGA -- Xilinx HDL Language Template version 7.1i

ROM64X1_inst : ROM64X1 -- Edit the following generic to define the contents of the ROM. generic map ( INIT => X"0000000000000000") port map ( O => O, -- ROM output A0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3, -- ROM address[3] A4 => A4, -- ROM address[4] A5 => A5 -- ROM address[5] );

-- End of ROM64X1_inst instantiation

Verilog Instantiation Template

// ROM64X1: 64 x 1 Asynchronous Distributed (LUT) ROM // All FPGA // Xilinx HDL Language Template version 7.1i

ROM64X1 ROM64X1_inst ( .O(O), // ROM output .A0(A0), // ROM address[0] .A1(A1), // ROM address[1] .A2(A2), // ROM address[2] .A3(A3), // ROM address[3]

Attribute Type Allowed Values Default

INIT 64-Bit Binary 64 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X9730

ROM64X1A0

A1

A2

A3

A4

A5

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 131ISE 7.1i 1-800-255-7778

Page 132: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM64X1R

.A4(A4), // ROM address[4] .A5(A5) // ROM address[5] );

// Edit the following defparam to define the contents of the ROM. // If the instance name to the ROM is changed, that change needs to // be reflected in the defparam statements.

defparam ROM64X1_inst.INIT = 64'h0000000000000000;

// End of ROM64X1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

132 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 133: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM128X1R

ROM128X1

Primitive: 128-Deep by 1-Wide ROM

ROM128X1 is a 128-word by 1-bit read-only memory. The data output (O) reflects the word selected by the 7-bit address (A6 – A0). The ROM is initialized to a known value during configuration with the INIT=value parameter. The value consists of 32 hexadecimal digits that are written into the ROM from the most-significant digit A=FH to the least-significant digit A=0H.

An error occurs if the INIT=value is not specified.

Usage

This design element should be instantiated rather than inferred.

Available Attributes

VHDL Instantiation Template

-- ROM128X1: 128 x 1 Asynchronous Distributed => LUT ROM -- All FPGA -- Xilinx HDL Language Template version 7.1i

ROM128X1_inst : ROM128X1 -- Edit the following generic to define the contents of the ROM. generic map ( INIT => X"00000000000000000000000000000000") port map ( O => O, -- ROM output A0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3, -- ROM address[3] A4 => A4, -- ROM address[4] A5 => A5, -- ROM address[5] A6 => A6 -- ROM address[6] );

-- End of ROM128X1_inst instantiation

Verilog Instantiation Template

// ROM128X1: 128 x 1 Asynchronous Distributed (LUT) ROM // All FPGA // Xilinx HDL Language Template version 7.1i

ROM128X1 ROM128X1_inst ( .O(O), // ROM output .A0(A0), // ROM address[0] .A1(A1), // ROM address[1] .A2(A2), // ROM address[2]

Attribute Type Allowed Values Default

INIT 128-Bit Binary

128 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X9731

ROM128X1A0

A1

A2

A3

A4

A5

A6

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 133ISE 7.1i 1-800-255-7778

Page 134: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM128X1R

.A3(A3), // ROM address[3] .A4(A4), // ROM address[4] .A5(A5), // ROM address[5] .A6(A6) // ROM address[6] );

// Edit the following defparam to define the contents of the ROM. // If the instance name to the ROM is changed, that change needs to // be reflected in the defparam statements.

defparam ROM128X1_inst.INIT = 128'h00000000000000000000000000000000;

// End of ROM128X1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

134 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 135: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM256X1R

ROM256X1

Primitive: 256-Deep by 1-Wide ROM

ROM256X1 is a 256-word by 1-bit read-only memory. The data output (O) reflects the word selected by the 8-bit address (A7– A0). The ROM is initialized to a known value during configuration with the INIT=value parameter. The value consists of 64 hexadecimal digits that are written into the ROM from the most-significant digit A=FH to the least-significant digit A=0H.

An error occurs if the INIT=value is not specified.

Usage

This design element should be instantiated rather than inferred.

Available Attributes

VHDL Instantiation Template

-- ROM256X1: 256 x 1 Asynchronous Distributed => LUT ROM -- All FPGA -- Xilinx HDL Language Template version 7.1i

ROM256X1_inst : ROM256X1 -- Edit the following generic to define the contents of the ROM. generic map (

INIT => X"0000000000000000000000000000000000000000000000000000000000000000")

port map ( O => O, -- ROM output A0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3, -- ROM address[3] A4 => A4, -- ROM address[4] A5 => A5, -- ROM address[5]A6 => A6 -- ROM address[6] A7 => A7 -- ROM address[7] );

-- End of ROM256X1_inst instantiation

Verilog Instantiation Template

// ROM256X1: 256 x 1 Asynchronous Distributed (LUT) ROM // All FPGA // Xilinx HDL Language Template version 7.1i

ROM256X1 ROM256X1_inst ( .O(O), // ROM output .A0(A0), // ROM address[0] .A1(A1), // ROM address[1]

Attribute Type Allowed Values Default

INIT 256-Bit Binary 256 bits of 1’s and 0’s (Hex values allowed)

All zeroes

X9732

ROM256X1A0

A1

A2

A3

A4

A5

A6

A7

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 135ISE 7.1i 1-800-255-7778

Page 136: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

ROM256X1R

.A2(A2), // ROM address[2] .A3(A3), // ROM address[3] .A4(A4), // ROM address[4] .A5(A5), // ROM address[5] .A6(A6) // ROM address[6] .A7(A7) // ROM address[7] );

// Edit the following defparam to define the contents of the ROM.// If the instance name to the ROM is changed, that change needs to // be reflected in the defparam statements.

defparam ROM256X1_inst.INIT = 256'h0000000000000000000000000000000000000000000000000000000000000000;

// End of ROM256X1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

136 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 137: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16R

SRL16

Primitive: 16-Bit Shift Register Look-Up-Table (LUT)

SRL16 is a shift register look up table (LUT). The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or it may be dynamically adjusted.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

The data (D) is loaded into the first bit of the shift register during the Low-to-High clock (CLK) transition. During subsequent Low-to-High clock transitions data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

Static Length Mode

To get a fixed length shift register, drive the A3 through A0 inputs with static values. The length of the shift register can vary from 1 bit to 16 bits as determined from the following formula:

Length = (8*A3) +(4*A2) + (2*A1) + A0 +1

If A3, A2, A1, and A0 are all zeros (0000), the shift register is one bit long. If they are all ones (1111), it is 16 bits long.

Dynamic Length Mode

The length of the shift register can be changed dynamically by changing the values driving the A3 through A0 inputs. For example, if A2, A1, and A0 are all ones (111) and A3 toggles between a one (1) and a zero (0), the length of the shift register changes from 16 bits to 8 bits.

Internally, the length of the shift register is always 16 bits and the input lines A3 through A0 select which of the 16 bits reach the output.

Usage

For HDL, this design element can be inferred or instantiated.

Inputs Output

Am CLK D Q

Am X X Q(Am)

Am ↑ D Q(Am-1)

m= 0, 1, 2, 3

X8420

SRL16

A2A3

A1

A0CLK

D Q

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 137ISE 7.1i 1-800-255-7778

Page 138: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16R

Available Attributes

VHDL Instantiation Templates

-- SRL16: 16-bit shift register LUT operating on posedge of clock -- All FPGAs -- Xilinx HDL Language Template version 7.1i SRL16_inst : SRL16 -- The following generic declaration is only necessary if you wish to change the

-- initial. -- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map ( Q => Q, -- SRL data output A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CLK => CLK, -- Clock input D => D -- SRL data input );

-- End of SRL16_inst instantiation

Verilog Instantiation Template

// SRL16: 16-bit shift register LUT operating on posedge of clock // All FPGAs // Xilinx HDL Language Template version 7.1i SRL16 SRL16_inst ( .Q(Q), // SRL data output .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the // // initial

// contents of the SRL to anything other than all zero's. If the instance name to // // the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRL16_inst.INIT = 16'h0000;

// End of SRL16_inst instantiation

Attribute Type Allowed Values

Default Description

INIT 16-Bit Binary 16 bits of 1’s or 0’s

X 0000 Sets the initial value of Q output after configuration

138 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 139: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16R

For More Information

Consult the Spartan-3E Data Sheets.

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 139ISE 7.1i 1-800-255-7778

Page 140: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16R

140 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 141: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16_1R

SRL16_1

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Negative-Edge Clock

SRL16_1 is a shift register look up table (LUT). The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or it may be dynamically adjusted. See “Static Length Mode”and “Dynamic Length Mode”in “SRL16”.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

The data (D) is loaded into the first bit of the shift register during the High-to-Low clock (CLK) transition. During subsequent High-to-Low clock transitions data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

Usage

For HDL, this design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRL16_1: 16-bit shift register LUT operating on negedge of clock -- All FPGAs -- Xilinx HDL Language Template version 7.1i SRL16_1_inst : SRL16_1 -- The following generic declaration is only necessary if you wish to change the

initial. -- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map ( Q => Q, -- SRL data output A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input

Inputs Output

Am CLK D Q

Am X X Q(Am)

Am ↓ D Q(Am - 1)

m= 0, 1, 2, 3

Attribute Type Allowed Values

Default Description

INIT 16-Bit Binary 16 bits of 1’s and 0’s

X 0000 Sets the initial value of Q output after configuration

X8422

SRL16_1

A2A3

A1

A0CLK

D Q

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 141ISE 7.1i 1-800-255-7778

Page 142: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16_1R

A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CLK => CLK, -- Clock input D => D -- SRL data input);

-- End of SRL16_1_inst instantiation

Verilog Instantiation Template

// SRL16_1: 16-bit shift register LUT operating on negedge of clock // All FPGAs // Xilinx HDL Language Template version 7.1i SRL16_1 SRL16_1_inst ( .Q(Q), // SRL data output .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRL16_1_inst.INIT = 16'h0000;

// End of SRL16_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

142 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 143: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16ER

SRL16E

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Clock Enable

SRL16E is a shift register look up table (LUT). The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or dynamically adjusted. See “Static Length Mode”and “Dynamic Length Mode”in “SRL16”.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

When CE is High, the data (D) is loaded into the first bit of the shift register during the Low-to-High clock (CLK) transition. During subsequent Low-to-High clock transitions, when CE is High, data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

When CE is Low, the register ignores clock transitions.

Usage

For HDL, this design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRL16E: 16-bit shift register LUT with clock enable operating on -- posedge of clock

-- All FPGAs -- Xilinx HDL Language Template version 7.1i SRL16E_inst : SRL16E -- The following generic declaration is only necessary if you wish to change the

initial. -- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map (

Inputs Output

Am CE CLK D Q

Am 0 X X Q(Am)

Am 1 ↑ D Q(Am-1)

m= 0, 1, 2, 3

Attribute Type Allowed Values Default Description

INIT 16-Bit Binary

16 bits of 1’s or 0’s X 0000 Sets the initial value of content and output of shift register after configuration

X8423

SRL16E

A2A3

A1

A0CLK

CE

D Q

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 143ISE 7.1i 1-800-255-7778

Page 144: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16ER

Q => Q, -- SRL data output A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CE => CE, -- Clock enable input CLK => CLK, -- Clock input D => D -- SRL data input);

-- End of SRL16E_inst instantiation

Verilog Instantiation Template

// SRL16E: 16-bit shift register LUT with clock enable operating on posedge of clock // All FPGAs // Xilinx HDL Language Template version 7.1i SRL16E SRL16E_inst ( .Q(Q), // SRL data output .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CE(CE), // Clock enable input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRL16E_inst.INIT = 16'h0000;

// End of SRL16E_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

144 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 145: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16E_1R

SRL16E_1

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Negative-Edge Clock and Clock Enable

SRL16E_1 is a shift register look up table (LUT) with clock enable (CE). The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or dynamically adjusted. See “Static Length Mode” and “Dynamic Length Mode”in the “SRL16”.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

When CE is High, the data (D) is loaded into the first bit of the shift register during the High-to-Low clock (CLK) transition. During subsequent High-to-Low clock transitions, when CE is High, data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

When CE is Low, the register ignores clock transitions.

Usage

For HDL, this design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRL16E: 16-bit shift register LUT with clock enable operating on-- posedge of clock

-- All FPGAs -- Xilinx HDL Language Template version 7.1i SRL16E_inst : SRL16E -- The following generic declaration is only necessary if you wish to change the

initial. -- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000")

Inputs Output

Am CE CLK D Q

Am 0 X X Q(Am)

Am 1 ↓ D Q(Am-1)

m= 0, 1, 2, 3

Attribute Type Allowed Values Default Description

INIT 16-Bit Binary

16 bits of 1’s or 0’s X 0000 Sets the initial value of content and output of shift register after configuration

X8421

SRL16E_1

A2A3

A1

A0CLK

CE

D Q

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 145ISE 7.1i 1-800-255-7778

Page 146: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRL16E_1R

port map ( Q => Q, -- SRL data output A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CE => CE, -- Clock enable input CLK => CLK, -- Clock input D => D -- SRL data input);

-- End of SRL16E_inst instantiation

Verilog Instantiation Template

// SRL16E_1: 16-bit shift register LUT with clock enable operating on// negedge of clock

// All FPGAs // Xilinx HDL Language Template version 7.1i SRL16E_1 SRL16E_1_inst ( .Q(Q), // SRL data output .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CE(CE), // Clock enable input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRL16E_1_inst.INIT = 16'h0000;

// End of SRL16E_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

146 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 147: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16R

SRLC16

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Carry

SRLC16 is a shift register look up table (LUT) with Carry. The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length, or it may be dynamically adjusted.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

The data (D) is loaded into the first bit of the shift register during the Low-to-High clock (CLK) transition. During subsequent Low-to-High clock transitions data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

The Q15 output is available for the user to cascade multiple shift register LUTs to create larger shift registers.

For information about the static length mode, see “Static Length Mode”in “SRL16”.

For information about the dynamic length mode, see “Dynamic Length Mode”in “SRL16”.

Usage

For HDL, this design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRLC16: 16-bit cascadable shift register LUT operating on posedge of-- clock

-- All FPGA -- Xilinx HDL Language Template version 7.1i SRLC16_inst : SRLC16 -- The following generic declaration is only necessary if you wish

-- to change the initial.

Inputs Output

Am CLK D Q

Am X X Q(Am)

Am ↑ D Q(Am-1)

m= 0, 1, 2, 3

Attribute Type Allowed Values

Default Description

INIT 16-Bit Binary 16 bits of 1’s or 0’s

0000 Sets the initial value of content and output of shift register after configuration

X9296

A1

A0

CLK

D

A3

A2

Q

Q15

SRLC16

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 147ISE 7.1i 1-800-255-7778

Page 148: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16R

-- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map ( Q => Q, -- SRL data output Q15 => Q15, -- Carry output (connect to next SRL) A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CLK => CLK, -- Clock inputD => D -- SRL data input );

-- End of SRLC16_inst instantiation

Verilog Instantiation Template

// SRLC16: 16-bit cascadable shift register LUT operating on posedge of// clock

// All FPGA // Xilinx HDL Language Template version 7.1i SRLC16 SRLC16_inst ( .Q(Q), // SRL data output .Q15(Q15), // Carry output (connect to next SRL) .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRLC16_inst.INIT = 16'h0000;

// End of SRLC16_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

148 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 149: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16_1R

SRLC16_1

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Carry and Negative-Edge Clock

SRLC16_1 is a shift register look up table (LUT) with carry and a negative-edge clock. The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or it may be dynamically adjusted. See “Static Length Mode” and “Dynamic Length Mode” in “SRL16”.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

The data (D) is loaded into the first bit of the shift register during the High-to-Low clock (CLK) transition. During subsequent High-to-Low clock transitions data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

The Q15 output is available for the user to cascade multiple shift register LUTs to create larger shift registers.

Usage

For HDL, this design element can inferred.

Available Attributes

VHDL Instantiation Template

-- SRLC16_1: 16-bit cascadable shift register LUT operating on negedge-- of clock

-- All FPGA -- Xilinx HDL Language Template version 7.1i SRLC16_1_inst : SRLC16_1 -- The following generic declaration is only necessary if you wish to change the

initial. -- contents of the SRL to anything other than all zero's. generic map (

Inputs Output

Am CLK D Q Q15

Am X X Q(Am) No Change

Am ↓ D Q(Am - 1) Q14

m= 0, 1, 2, 3

Attribute Type Allowed Values

Default Description

INIT 16-Bit Binary 16 bits of 1’s or 0’s

X 0000 Sets the initial value of content and output of shift register after configuration

X9297

A1

A0

CLK

D

A3

A2

Q

Q15

SRLC16_1

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 149ISE 7.1i 1-800-255-7778

Page 150: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16_1R

INIT => X"0000") port map ( Q => Q, -- SRL data output Q15 => Q15, -- Carry output (connect to next SRL) A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] inputCLK => CLK, -- Clock input D => D -- SRL data input );

-- End of SRLC16_1_inst instantiation

Verilog Instantiation Template

// SRLC16_1: 16-bit cascadable shift register LUT operating on negedge// of clock

// All FPGA // Xilinx HDL Language Template version 7.1i SRLC16_1 SRLC16_1_inst ( .Q(Q), // SRL data output .Q15(Q15), // Carry output (connect to next SRL) .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRLC16_1_inst.INIT = 16'h0000;

// End of SRLC16_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

150 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 151: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16ER

SRLC16E

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Carry and Clock Enable

SRLC16E is a shift register look up table (LUT) with carry and clock enable. The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or it may be dynamically adjusted.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

The data (D) is loaded into the first bit of the shift register during the Low-to-High clock (CLK) transition. When CE is High, during subsequent Low-to-High clock transitions, data is shifted to the next highest bit position as new data is loaded. The data appears on the Q output when the shift register length determined by the address inputs is reached.

The Q15 output is available for the user to cascade multiple shift register LUTs to create larger shift registers.

For information about the static length mode, see “Static Length Mode”in “SRL16”.

For information about the dynamic length mode, see “Dynamic Length Mode” in “SRL16”.

Usage

This design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRLC16E: 16-bit cascable shift register LUT with clock enable-- operating on posedge of clock

-- All FPGA -- Xilinx HDL Language Template version 7.1i

Inputs Output

Am CLK CE D Q Q15

Am X 0 X Q(Am) Q(15)

Am X 1 X Q(Am) Q(15)

Am ↑ 1 D Q(Am - 1) Q15

m= 0, 1, 2, 3

Attribute Type Allowed Values

Default Description

INIT 16-Bit Binary 16 bits of 1’s or 0’s

16-Bit Binary Sets the initial value of content and output of shift register after configuration

X9298

A1

A0

CLK

D

CE

A3

A2

Q

Q15

SRLC16E

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 151ISE 7.1i 1-800-255-7778

Page 152: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16ER

SRLC16E_inst : SRLC16E -- The following generic declaration is only necessary if you wish to change the

initial. -- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map ( Q => Q, -- SRL data output Q15 => Q15, -- Carry output (connect to next SRL) A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CE => CE, -- Clock enable inputCLK => CLK, -- Clock input D => D -- SRL data input );

-- End of SRLC16E_inst instantiation

Verilog Instantiation Template

// SRLC16E: 16-bit cascable shift register LUT with clock enable// operating on posedge of clock

// All FPGA // Xilinx HDL Language Template version 7.1i SRLC16E SRLC16E_inst ( .Q(Q), // SRL data output .Q15(Q15), // Carry output (connect to next SRL) .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CE(CE), // Clock enable input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRLC16E_inst.INIT = 16'h0000;

// End of SRLC16E_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

152 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 153: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16E_1R

SRLC16E_1

Primitive: 16-Bit Shift Register Look-Up-Table (LUT) with Carry, Negative-Edge Clock, and Clock Enable

SRLC16E_1 is a shift register look up table (LUT) with carry, clock enable, and negative-edge clock. The inputs A3, A2, A1, and A0 select the output length of the shift register. The shift register may be of a fixed, static length or it may be dynamically adjusted. See “Dynamic Length Mode”in “SRL16”.

The shift register LUT contents are initialized by assigning a four-digit hexadecimal number to an INIT attribute. The first, or the left-most, hexadecimal digit is the most significant bit. If an INIT value is not specified, it defaults to a value of four zeros (0000) so that the shift register LUT is cleared during configuration.

When (CE) is High, the data (D) is loaded into the first bit of the shift register during the High-to-Low clock (CLK) transition. During subsequent High-to-Low clock transitions data is shifted to the next highest bit position as new data is loaded when (CE) is High. The data appears on the (Q) output when the shift register length determined by the address inputs is reached.

The Q15 output is available for the user to cascade multiple shift register LUTs to create larger shift registers.

Usage

For HDL, this design element can be inferred or instantiated.

Available Attributes

VHDL Instantiation Template

-- SRLC16E_1: 16-bit shift register LUT with clock enable operating on-- negedge of clock

-- All FPGA -- Xilinx HDL Language Template version 7.1i SRLC16_1_inst : SRLC16_1 -- The following generic declaration is only necessary if you wish to change the

initial.

Inputs Output

Am CE CLK D Q Q15

Am 0 X X Q(Am) No Change

Am 1 X X Q(Am) No Change

Am 1 ↓ D Q(Am - 1) Q14

m= 0, 1, 2, 3

Attribute Type Allowed Values Default Description

INIT 16-Bit Binary

16 bits of 1’s or 0’s X 0000 Sets the initial value of content and output of shift register after configuration

X9299

A1

A0

CLK

D

CE

A3

A2

Q

Q15

SRLC16E_1

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 153ISE 7.1i 1-800-255-7778

Page 154: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

SRLC16E_1R

-- contents of the SRL to anything other than all zero's. generic map ( INIT => X"0000") port map ( Q => Q, -- SRL data output Q15 => Q15, -- Carry output (connect to next SRL) A0 => A0, -- Select[0] input A1 => A1, -- Select[1] input A2 => A2, -- Select[2] input A3 => A3, -- Select[3] input CE => CE, -- Clock enable input CLK => CLK, -- Clock inputD => D -- SRL data input );

-- End of SRLC16E_1_inst instantiation

Verilog Instantiation Template

// SRLC16E_1: 16-bit shift register LUT with clock enable operating on// negedge of clock

// All FPGA // Xilinx HDL Language Template version 7.1i SRLC16E_1 SRLC16E_1_inst ( .Q(Q), // SRL data output .Q15(Q15), // Carry output (connect to next SRL) .A0(A0), // Select[0] input .A1(A1), // Select[1] input .A2(A2), // Select[2] input .A3(A3), // Select[3] input .CE(CE), // Clock enable input .CLK(CLK), // Clock input .D(D) // SRL data input );

// The following defparam declaration is only necessary if you wish to change the initial

// contents of the SRL to anything other than all zero's. If the instance name to the

// SRL is changed, that change needs to be reflected in the defparam statements.

defparam SRLC16E_1_inst.INIT = 16'h0000;

// End of SRLC16E_1_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets.

154 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 155: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

STARTUP_SPARTAN3ER

STARTUP_SPARTAN3E

Primitive: Spartan-3E User Interface to the GSR, GTS, Configuration Startup Sequence and Multi-Boot Trigger Circuitry

The STARTUP_SPARTAN3E component is used to allow the connection of ports or user circuitry to control certain dedicated circuitry and routes within the FPGA. Signals connected the GSR port of this component can control the global set/reset (referred to as GSR) of the device. The GSR net connects to all registers in the device and will place the registers into their initial value state. Connecting a signal to the GTS port will connect to the dedicated route controlling the three-state outputs of every pin in the device. Connecting a clock signal to the CLK input will allow the startup sequence after configuration to be synchronized to a user defined clock. The MBT (Multi-Boot Trigger) pin allows the triggering of a new configuration when the device is properly setup for this mode.

Usage

The STARTUP_SPARTAN3E component must be instantiated in order to be incorporated into the design. Do not connect any input not needed for the design.

VHDL Instantiation Template

-- STARTUP_SPARTAN3E: Startup primitive for GSR, GTS, -- startup sequence and Multi-Boot Configuration-- Trigger. Spartan-3E-- Xilinx HDL Libraries Guide version 7.1i

STARTUP_SPARTAN3E_inst : STARTUP_SPARTAN3E port map ( CLK => CLK, -- Clock input for start-up sequence GSR => GSR_PORT, -- Global Set/Reset input (GSR can -- not be used as a port name GTS => GTS_PORT, -- Global 3-state input (GTS can -- not be used as a port name) MBT => MBT -- Multi-Boot Trigger input);

-- End of STARTUP_SPARTAN3E_inst instantiation

Verilong Instantiation Template

// STARTUP_SPARTAN3E: Startup primitive for GSR, GTS, // startup sequence and Multi-Boot Configuration// Trigger. Spartan-3E// Xilinx HDL Libraries Guide version 7.1i

STARTUP_SPARTAN3E STARTUP_SPARTAN3E_inst ( .CLK(CLK), // Clock input for start-up sequence .GSR(GSR_PORT), // Global Set/Reset input (GSR can // not be used as a port name .GTS(GTS_PORT), // Global 3-state input (GTS cannot // be used as a port name) .MBT(MBT) // Multi-Boot Trigger input

STARTUP_SPARTAN3E

GTS

GSR

MBT

CLK

X10235

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 155ISE 7.1i 1-800-255-7778

Page 156: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

STARTUP_SPARTAN3ER

);

// End of STARTUP_SPARTAN3E_inst instantiation

For More Information

Consult the Spartan-3E Data Sheets. Also see the Synthesis and Verification Design Guide for more information on using the GSR and GTS signals of the STARTUP_SPARTAN3E component.

156 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 157: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCYR

XORCY

Primitive: XOR for Carry Logic with General OutputXORCY is a special XOR with general O output used for generating faster and smaller arithmetic functions.

Usage

Its O output is a general interconnect. See also “XORCY_D”and “XORCY_L”.

VHDL Instantiation Code

-- XORCY: Carry-Chain XOR-gate with general output -- Xilinx HDL Language Template version 7.1i

XORCY_inst : XORCY port map ( O => O, -- XOR output signal CI => CI, -- Carry input signal LI => LI -- LUT4 input signal );

-- End of XORCY_inst instantiation

X8410

LI

CIO

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 157ISE 7.1i 1-800-255-7778

Page 158: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCYR

158 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 159: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCY_DR

XORCY_D

Primitive: XOR for Carry Logic with Dual Output

XORCY_D is a special XOR used for generating faster and smaller arithmetic functions.

Usage

XORCY_D has two functionally identical outputs, O and LO. The O output is a general interconnect. The LO output is used to connect to another output within the same CLB slice.

VHDL Instantiation Code

-- XORCY_D: Carry-Chain XOR-gate with local and general outputs -- Xilinx HDL Language Template version 7.1i

XORCY_D_inst : XORCY_D port map ( LO => LO, -- XOR local output signal O => O, -- XOR general output signal CI => CI, -- Carry input signal LI => LI -- LUT4 input signal );

-- End of XORCY_D_inst instantiation

X8409

LI

CI

LO

O

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 159ISE 7.1i 1-800-255-7778

Page 160: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCY_DR

160 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i

Page 161: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCY_LR

XORCY_L

Primitive: XOR for Carry Logic with Local Output

XORCY_L is a special XOR with local LO output used for generating faster and smaller arithmetic functions.

Usage

The LO output is used to connect to another output within the same CLB slice.

VHDL Instantiation Code

-- XORCY_L: Carry-Chain XOR-gate with local => direct-connect ouput -- Xilinx HDL Language Template version 7.1i

XORCY_L_inst : XORCY_L port map ( LO => LO, -- XOR local output signal CI => CI, -- Carry input signal LI => LI -- LUT4 input signal );

-- End of XORCY_L_inst instantiation

X8404

LI

CI

LO

Spartan-3E Libraries Guide for HDL Designers www.xilinx.com 161ISE 7.1i 1-800-255-7778

Page 162: Xilinx Libraries Guide - public.asu.edukyle135/Supplementary/FPGA/SPARTAN3E/FPGA_DOCS... · R 4 Spartan-3E Libraries Guide for HDL Designers 1-800-255-7778 ISE 7.1i Conventions This

XORCY_LR

162 www.xilinx.com Spartan-3E Libraries Guide for HDL Designers1-800-255-7778 ISE 7.1i