Spartan-3/3A/3E FPGA User Guide Datasheet by Xilinx Inc.

View All Related Products | Download PDF Datasheet
X XILINX"
R
Spartan-3 Generation
FPGA User Guide
Extended Spartan-3A,
Spartan-3E, and Spartan-3
FPGA Families
UG331 (v1.8) June 13, 2011
XXILINX®
Spartan-3 Generation FPGA User Guide www.xilinx.com UG331 (v1.8) June 13, 2011
The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx products. To the maximum
extent permitted by applicable law: (1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL
WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether
in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising
under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or
consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action
brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.
Xilinx assumes no obligation to correct any errors contained in the Materials, or to advise you of any corrections or update. You may not
reproduce, modify, distribute, or publicly display the Materials without prior written consent. Certain products are subject to the terms and
conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and
support terms contained in a license issued to you by Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any
application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications:
http://www.xilinx.com/warranty.htm#critapps.
© Copyright 2006–2011 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included
herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.
Revision History
The following table shows the revision history for this document.
Date Version Revision
12/05/06 1.0 Initial release.
02/26/07 1.1 Added Spartan-3AN platform.
04/02/07 1.2 Added Spartan-3A DSP platform.
02/14/08 1.3 Updated for latest package offerings. Updated and corrected descriptions and figures
throughout. Updated links for new xilinx.com navigation.
06/25/08 1.4 Added and updated links to design files. Updated banking rules in I/O section. Added
reference to XAPP459 in “Using Large-Swing Signals”.
01/21/09 1.5 Updated document to refer to Extended Spartan-3A family. Corrected column headers
CLKA and CLKB in Table 4-14 on page 181. Clarified DCM “Output Alignment” on
page 131. Added section “Spartan-3A and Spartan-3A DSP FPGA Dual-Range
VCCAUX” on page 353.
R
Illnx.com
UG331 (v1.8) June 13, 2011 www.xilinx.com Spartan-3 Generation FPGA User Guide
12/03/09 1.6 Updated “Extended Spartan-3A Family Features,” page 32. Updated “I/O Capabilities,”
page 38. Updated “Global Clock Resources” and Figure 2-1 on page 46 and “Additional
Information,” page 62 to note that local clocking is not recommended. Added Figure 2-6
and described CLK0 to CLK1 switchover in “BUFGMUX Multiplexing Details,” page
54. Updated “Using Clock Buffers/Multiplexers in a Design,” page 55 and added
Figure 2-7. Updated “XST Synthesis of Clock Buffers,” page 56. Added Table 2-8 with
clock quadrant locations. Clarified “Digital Frequency Synthesizer (DFS)”and “Phase
Shift (PS),” page 70. Updated “Output Availability Depends on DLL Frequency Mode,”
page 118. Updated “Fine Phase Shifting,” page 119. Revised Figure 4-1 to show parity
integers on the data paths. Updated “Carry and Floorplanning,” page 301. Added
“Clamp Diodes,” page 334. Removed references to older software versions in
“Specifying an I/O Standard with the IOSTANDARD Attribute,” page 341,
“LVCMOS/LVTTL Slew Rate Control and Drive Strength,” page 343, and “Differential
I/O Standards,” page 349. Clarified BSDL termination in “BLVDS Output Termination,”
page 351. Removed references to older software versions in “IOBs Organized into
Banks,” page 354. Corrected VCC value for MINI_LVDS_33/Input with DIFF_TERM
inTable 10-20. Revised VREF note in Table 10-20, Table 10-21, and Table 10-22 to state that
VREF is not used for the differential I/O standards described in the table. Removed
references to older software versions in“Floorplanning,” page 411 and “Constraints
Editor,” page 421. Updated “Differences in Packages Between Spartan-3 Generation
Families,” page 447. Added footnote in Table 17-1 to indicate that the CP132 and CPG132
packages are being discontinued. Added recommended power-down sequence to “Hot
Swap,” page 471. Updated “Application State Retained during Suspend Mode,” page
486. Updated “Extended Spartan-3A Family FPGA: Turn Off VCCO,” page 495.
Updated the FG900/FGG900 package drawing in Figure 17-12.
08/19/10 1.7 Updated values for FG400 in upper half of Table 3-18. Updated note under “Address
Input”. Added “Timing Parameters” section. Added “Note relevant to Figure 10-1”.
Added last sentence to paragraph immediately following Figure 10-15. Added last
sentence to second paragraph under “ODDR2”. Added ”to VCCO” to last sentence under
“ESD Protection”. Added “Parasitic Leakage” section. Added last paragraph to “Supply
Sequencing”.
06/13/11 1.8 Added text, where applicable, indicating that the original Spartan-3 FPGA family is not
recommended for new designs. Updated links for new xilinx.com navigation. Updated
values for maximum user I/O and maximum differential I/O pairs for device
XC3S50AN in Table 1-4. Updated values for available user I/Os and differential I/O
pairs in Table 1-11. Removed section on calculating jitter for cascaded DCMs from
Chapter 3. Added first paragraph to “Cascaded DCM Design Recommendations”.
Added third sentence to Note under “Address Input”. Added second note to “Notes
relevant to Figure 10-1”. Updated I/O value for device XC3S50AN in Table 10-1. Added
information to description of “IBUFDS”. Updated description of “Dynamic
Combinatorial Delay in the Extended Spartan-3A Family” (also added the word
”combinatorial” to section title). Added second paragraph to “Spartan-3A and Spartan-
3A DSP FPGA Dual-Range VCCAUX”. Deleted Table 14-1, Spartan-3 Generation IP
Cores Support. Updated the FG676/FGG676 package drawing in Figure 17-11. Updated
VIN max recommended values for Spartan-3AN FPGA and Spartan-3A/3A DSP
FPGAfamilies in Table 18-1. Expanded last sentence under “No Internal Charge Pumps
or Free-Running Oscillators”. Corrected parameter names TSUSPEND_GTS and
TSUSPEND_GWE in Table 19-2. Removed the fourth and sixth paragraphs under
“Differential I/O Standards”.
Date Version Revision
Ilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com UG331 (v1.8) June 13, 2011
Illnx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 5
UG331 (v1.8) June 13, 2011
Revision History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Preface: About This Guide
Guide Contents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Typographical. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Online Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Section 1: Designing with Spartan-3 Generation FPGAs
Chapter 1: Overview
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Extended Spartan-3A Family Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Spartan-3AN Platform Additional Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Spartan-3A DSP Platform Additional Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Spartan-3 Generation Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Architectural Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
I/O Capabilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Package Marking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Ordering Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Chapter 2: Using Global Clock Resources
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Global Clock Resource Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . 45
Global Clock Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Clocking Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Clock Inputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Extended Spartan-3A Family Clock Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Spartan-3E FPGA Clock Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
Spartan-3 FPGA Clock Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Clock Inputs and DCMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Differential Clocks Using Two Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Using Dedicated Clock Inputs in a Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
IBUFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
IBUFGDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Clock Buffers/Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
BUFGMUX Multiplexing Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
Table of Contents
XXILINX" www.xilinx.com
6www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Using Clock Buffers/Multiplexers in a Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
BUFGMUX and BUFGMUX_1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
BUFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
BUFGCE and BUFGCE_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
XST Synthesis of Clock Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
BUFGMUX Connection Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
BUFGMUX Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
BUFGMUX Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Spartan-3 Global Clock Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Quadrant Clock Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Choosing Top/Bottom and Left-/Right-Half Global Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Spartan-3 FPGA Global Clock Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Other Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Clock Power Consumption. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Clock Setup and Hold Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Chapter 3: Using Digital Clock Managers (DCMs)
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Document Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Compatibility and Comparison with Other Xilinx FPGA Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
DCM Locations and Clock Distribution Network Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
DCM Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Delay-Locked Loop (DLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Digital Frequency Synthesizer (DFS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Phase Shift (PS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Status Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
DCM Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Connection Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Attributes, Properties, or Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
DCM Clock Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Input Clock Frequency Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Output Clock Frequency Range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Input Clock and Clock Feedback Variation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Cycle-to-Cycle Jitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Period Jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
DLL Feedback Delay Variance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Spread Spectrum Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
Optimal DCM Clock and External Feedback Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Spartan-3E FPGA DCM Clock Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Extended Spartan-3A Family FPGA DCM Clock Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
LOCKED Output Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Using the LOCKED Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
Spartan-3A FPGA DCM Digital Frequency Synthesizer Requires Additional Lock Circuitry . . . . . . . . . .92
RST Input Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 7
UG331 (v1.8) June 13, 2011
Clocking Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Invoking Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
From Windows Start Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
From within Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
General Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
Clock Buffers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
Clock Frequency Synthesizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Generating HDL Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
VHDL and Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Language Templates within Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
Eliminating Clock Skew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
What is Clock Skew? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Clock Skew: The Performance Thief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
Make It Go Away! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
Predicting the Future by Closely Examining the Past . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
Locked on Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
A Stable, Monotonic Clock Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Feedback from a Reliable Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Removing Skew from an Internal Clock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Removing Skew from an External Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107
Reset DCM After Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107
Why Reset? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
What is a Delay-Locked Loop? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Delay-Locked Loop (DLL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Phase-Locked Loop (PLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
DLL vs. PLL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Skew Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
System Synchronous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Source Synchronous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
Timing Comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Clock Conditioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Spartan-3E and Extended Spartan-3A Family FPGA Output Clock Conditioning . . . . . . . . . . . . . . . . . . .113
Spartan-3 FPGA Output Clock Conditioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Phase Shifting – Delaying Clock Outputs by a Fraction of a Period . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Half-Period Phase Shifted Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Half-Period Phase Shift Outputs Reduce Duty-Cycle Distortion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Dual-Data Rate (DDR) Clocking Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Quadrant Phase Shifted Outputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Output Availability Depends on DLL Frequency Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Spartan-3 FPGA: Optional 50/50 Duty Cycle Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Four Phases, Delayed Clock Edges, Phased Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Fine Phase Shifting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Fixed Fine Phase Shifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Spartan-3 Family Fixed Fine Phase Shift Range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Minimum Phase Shift Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Other Design Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Variable Fine Phase Shifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Important Differences Between Spartan-3 Generation FPGA Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Spartan-3E and Extended Spartan-3A Family FPGA Variable Phase Shift Operations . . . . . . . . . . . . . . . . . . .124
Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
XXILINX" www.xilinx.com
8www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Variable Fine Phase Shift Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Spartan-3 FPGA Family Variable Phase Shift Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Spartan-3E and Extended Spartan-3A Family Variable Phase-Shift Range . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Example Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Clock Multiplication, Clock Division, and Frequency Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Output Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Frequency Synthesis Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Input and Output Clock Frequency Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
Clock Doubler (CLK2X, CLK2X180) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Clock Divider (CLKDV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
CLKDV Clock Conditioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
CLKDV Jitter Depends on Frequency Mode and Integer or Non-Integer Value . . . . . . . . . . . . . . . . . . . . . . . .136
Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Frequency Synthesizer (CLKFX, CLKFX180). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
Clock Forwarding, Mirroring, Rebuffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Clock Jitter or Phase Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
What is Clock Jitter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
What Causes Clock Jitter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Understanding Clock Jitter Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Cycle-to-Cycle Jitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Period Jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Unit Interval (UI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Calculating Total Jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Adding Input Jitter to DLL Output Jitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Cascaded DCM Design Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Jitter Effect on System Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Recommended Design Practices to Minimize Clock Jitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Properly Design the Power Distribution System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Properly Design the Printed Circuit Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Obey Simultaneous Switching Output (SSO) Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Optionally Place Virtual Ground Pins Around DCM Input and Output Connections . . . . . . . . . . . . . . . . . . .146
VCCAUX Considerations for Improving Jitter Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Adjusting FACTORY_JF Setting (Spartan-3 FPGA Family Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Miscellaneous Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Bitstream Generation Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Setting Bitstream Generation Options in Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Setting Bitstream Generation Options via Command Line or Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Setting Configuration Logic to Wait for DCM LOCKED Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Reset DCM During Partial Reconfiguration or During Full Reconfiguration via JTAG . . . . . . . . . . . . . . . . . .150
Momentarily Stopping CLKIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Chapter 4: Using Block RAM
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Block RAM Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 9
UG331 (v1.8) June 13, 2011
Block RAM Location and Surrounding Neighborhood. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Block RAM/Multiplier Routing Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Data Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Data Inputs and Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Data Input Bus — DI[#:0] (DIA[#:0], DIB[#:0]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Data Output Bus — DO[#:0] (DOA[#:0], DOB[#:0]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Parity Inputs and Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Data Input Parity Bus — DIP[#:0] (DIPA[#:0], DIPB[#:0]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Data Output Parity Bus — DOP[#:0] (DOPA[#:0], DOPB[#:0]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Address Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Address Bus — ADDR[#:0] (ADDRA[#:0], ADDRB[#:0]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Control Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Clock — CLK (CLKA, CLKB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Enable — EN (ENA, ENB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Write Enable — WE (WEA, WEB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Output Register Enable - REGCE (REGCEA, REGCEB) Spartan-3A DSP FPGA Only . . . . . . . . . . . . . . . . . . .164
Output Latch Synchronous Set/Reset — SSR (SSRA, SSRB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Output Latch/Register Synchronous/Asynchronous Set/Reset
- RST (RSTA, RSTB) - Spartan-3A DSP FPGA Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Global Set/Reset — GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Inverting Control Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Unused Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Number of Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
VHDL or Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
Memory Organization/Aspect Ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
CORE Generator System — Memory Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
VHDL or Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Address and Data Mapping Between Two Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Content Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
CORE Generator System — Load Init File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
VHDL or Verilog Instantiation — INIT_xx, INITP_xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Data Output Latch Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
CORE Generator System — Global Init Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
VHDL or Verilog Instantiation — INIT (INIT_A and INIT_B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
Data Output Latch Synchronous Set/Reset Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
CORE Generator System — Init Value (SINIT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
VHDL or Verilog Instantiation — SRVAL (SRVAL_A and SRVAL_B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
Read Behavior During Simultaneous Write — WRITE_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
WRITE_FIRST or Transparent Mode (Default) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172
READ_FIRST or Read-Before-Write Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
NO_CHANGE Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174
CORE Generator System — Write Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
VHDL or Verilog Instantiation — WRITE_MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Location Constraints (LOC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Block RAM Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
RAM Contents Initialized During Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Global Set/Reset Initializes Data Output Latches Immediately After Configuration
or Global Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Enable Input Activates or Disables RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Synchronous Set/Reset Initializes Data Output Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
XXILINX" www.xilinx.com
10 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Simultaneous Write and Synchronous Set/Reset Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
Read Operations Occur on Every Clock Edge When Enable is Asserted . . . . . . . . . . . . . . . . . . . . . . . . . . .178
Write Operations Always Have Simultaneous Read Operation, Data Output Latches Affected . . . . . . .178
General Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
Functional Compatibility with Other Xilinx FPGA Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Dual-Port RAM Conflicts and Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Timing Violation Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Simultaneous Writes to Both Ports with Different Data Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180
Write Mode Conflicts on Output Latches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Conflict Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Block RAM Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Xilinx CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
VHDL and Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Inferring Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Instantiation Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Initialization in VHDL or Verilog Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Block RAM Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Creating Larger RAM Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Block RAM as Read-Only Memory (ROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
FIFOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Storage for Embedded Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184
Updating Block RAM/ROM Content by Directly Modifying Device Bitstream . . . . . . . . . . . . . . . . . . . . .184
Two Independent Single-Port RAMs Using One Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
A 256x72 Single-Port RAM Using One Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186
Circular Buffers, Shift Registers, and Delay Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
Fast Complex State Machines and Microsequencers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189
Fast, Long Counters Using RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190
Four-Port Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Content-Addressable Memory (CAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Implementing Logic Functions Using Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Fuzzy Pattern Matching Circuit Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Mapping Logic into Block RAM Using MAP –bp Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Waveform Storage, Function Tables, Direct Digital Synthesis (DDS) Using Block RAM. . . . . . . . . . . . . .194
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Appendix A: VHDL Instantiation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Appendix B: Verilog Instantiation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Chapter 5: Using Configurable Logic Blocks (CLBs)
CLB Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
CLB Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
CLB Differences between Spartan-3 Generation Families. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Slice Location Designations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Slice Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Logic Cells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Slice Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Main Logic Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Look-Up Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 11
UG331 (v1.8) June 13, 2011
Wide Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Carry and Arithmetic Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Storage Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Timing Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Distributed RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Shift Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Related Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Chapter 6: Using Look-Up Tables as Distributed RAM
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Single-Port and Dual-Port RAMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Write Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Read Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Read During Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Distributed RAM in the CLB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Distributed RAM Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . 216
Compatibility with Other Xilinx FPGA Families. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Library Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Signal Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Clock — WCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Enable — WE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Address — A0, A1, A2, A3 (A4, A5, A6, A7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Dual-Port Read Address — DPRA0, DPRA1, DPRA2, DPRA3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Data In — D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Data Out — O, SPO, and DPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Inverting Control Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Global Set/Reset — GSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Global Write Enable — GWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Content Initialization — INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Placement Location — LOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Distributed RAM Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Xilinx CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
VHDL and Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Inferring Distributed RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Instantiation Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Verilog Instantiation Template Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
Wider Distributed RAM Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Initialization in VHDL or Verilog Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
XXILINX" www.xilinx.com
12 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Chapter 7: Using Look-Up Tables as Shift Registers (SRL16)
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Shift Register Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Shift Register Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
LUT Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Dynamic Length Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Logic Cell Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Registered Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231
Slice Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231
CLB Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
Library Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Initialization in VHDL and Verilog Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Clock — CLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Data In — D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Clock Enable — CE (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Address — A3, A2, A1, A0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Data Out — Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Data Out — Q15 (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Inverting Control Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Content Initialization — INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Location Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Shift Register Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Shift Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
Dynamic Read Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
Static Read Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Shift Register Inference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
VHDL Inference Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
Verilog Inference Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
Shift Register Submodules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Fully Synchronous Shift Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Static-Length Shift Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
VHDL and Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
VHDL and Verilog Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Delay Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Linear Feedback Shift Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Gold Code Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
FIFOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 13
UG331 (v1.8) June 13, 2011
Chapter 8: Using Dedicated Multiplexers
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Dedicated Multiplexer Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . 251
Advantages of Dedicated Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
CLB Multiplexer Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
F5MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253
FiMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Naming Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Dedicated Local Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Mux Select Inputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Implementation Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Wide-Input Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Wide-Input Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Timing Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Programmable Polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Floorplanning Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Related Uses of Multiplexers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Multiplexers and Three-State Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Using Memory in Place of Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Other Multiplexers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Designing with Multiplexers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
Verilog Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
VHDL Inference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
Library Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
Enable Signals in Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Modeling Local Output Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Submodules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Data In — DATA_I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Control In — SELECT_I. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Data Out — DATA_O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
VHDL and Verilog Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
VHDL and Verilog Submodules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
Related Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Chapter 9: Using Carry and Arithmetic Logic
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Carry and Arithmetic Logic Differences between Spartan-3 Generation Families. . . . . . . . . . . . . 275
Look-Ahead Carry Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Resource Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
MUXCY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Carry Chain Bypass and Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
XORCY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
XXILINX" www.xilinx.com
14 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Carry Logic Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Connections within a Slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Connections between Slices and CLBs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Multiplication Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Component and Pin Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Designing with the Carry and Arithmetic Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Library Elements Using Carry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292
Primitives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293
XORCY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294
MULT_AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
Emulating Virtex-II FPGA ORCY Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296
Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296
Using the CORE Generator System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Accumulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Logic Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Carry and Synthesis Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
MUX_STYLE Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
MULT_STYLE Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
Carry and Relative Location Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
Carry and Floorplanning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Wide Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302
Sum of Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
Comparators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
Adders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .306
Multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308
Optimizing Carry-Based Multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
MULT_AND vs. MULT18X18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310
MULT_AND vs. CLB Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310
Other Types of Multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Chapter 10: Using I/O Resources
IOB Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
I/O Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Number of Resources per Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316
Input-Only Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316
Package Footprint Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Summary of Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Library Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Registered I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
Differential I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 15
UG331 (v1.8) June 13, 2011
IBUF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
IBUFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
IBUFDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
OBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
OBUFT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
IOBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
DDR and Adjustable Delay I/O Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
HDL Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
Architectural Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Input Delay Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323
Programmable Delay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
Dynamic Combinatorial Delay in the Extended Spartan-3A Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .325
Storage Element Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326
Double-Data-Rate Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
Register Cascade Feature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
IDDR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
ODDR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
Pull-Up and Pull-Down Resistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
FPGA Pull-Up Resistor Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Keeper Circuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
JTAG Boundary-Scan Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
SelectIO Signal Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Overview of I/O Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
Clamp Diodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
LVTTL — Low-Voltage TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336
LVCMOS — Low-Voltage CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336
PCI — Peripheral Component Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336
GTL — Gunning Transceiver Logic Terminated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336
GTL+ — Gunning Transceiver Logic Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
HSTL — High-Speed Transceiver Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
SSTL3 — Stub Series Terminated Logic for 3.3V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
SSTL2 — Stub Series Terminated Logic for 2.5V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
SSTL18 — Stub Series Terminated Logic for 1.8V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
LVDS — Low Voltage Differential Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
BLVDS — Bus LVDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
LVPECL — Low Voltage Positive Emitter Coupled Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
LDT — HyperTransport (formerly known as Lightning Data Transport) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
mini-LVDS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
LVDS Extended — Extended Mode LVDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
RSDS — Reduced Swing Differential Signaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
TMDS — Transition Minimized Differential Signaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
PPDS — Point-to-Point Differential Signaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
I/O Standard Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
Specifying an I/O Standard with the IOSTANDARD Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341
Timing Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
LVCMOS/LVTTL Slew Rate Control and Drive Strength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Simultaneously Switching Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345
HSTL/SSTL VREF Reference Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .346
Single-Ended I/O Termination Techniques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347
Differential I/O Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349
On-Chip Differential Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349
DCI Digitally Controlled Impedance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
XXILINX" www.xilinx.com
16 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Supply Voltages for the IOBs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Spartan-3A and Spartan-3A DSP FPGA Dual-Range VCCAUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353
ESD Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353
IOBs Organized into Banks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354
Single-Ended I/O Standard Bank Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354
Differential I/O Standard Bank Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358
I/O Banking Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
Using Large-Swing Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
Voltage Translators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Open-Drain Interfacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Voltage Clamps Using Internal Diodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
Parasitic Leakage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
I/O and Input-Only Pin Behavior During Power-On, Configuration, and User Mode . . . . . . . . . . . . . . .370
Behavior of Unused I/O Pins After Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Chapter 11: Using Embedded Multipliers
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Embedded Multiplier Resource Differences between Spartan-3 Generation Families . . . . . . . . 374
Two’s-Complement Signed Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Location Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375
Multiplier/Block RAM Routing Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Optional Pipeline Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Timing Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377
Expanding Multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Cascading Multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Two Multipliers in a Single Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
MULT_STYLE Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384
Using the CORE Generator System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
System Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
MAC Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
Spartan-3 Family Library Primitives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388
Multipliers in the Spartan-3 Generation Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388
Alternative Applications to Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Shifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .389
Magnitude Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
Two’s-Complement Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
Complex Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391
Time Sharing in Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391
Floating-Point Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Appendix A: Two's-Complement Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 17
UG331 (v1.8) June 13, 2011
Chapter 12: Using Interconnect
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Interconnect Differences between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395
Switch Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Long Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
Hex Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
Double Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398
Direct Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398
Viewing Interconnect Details with FPGA Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Global Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
STARTUP_SPARTAN3 Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Section 2: Design Software
Chapter 13: Using ISE Design Tools
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Design Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Design Entry and Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405
Hierarchical Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
Schematic Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407
HDL Entry and Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407
Constraints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
Design Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
Translating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409
Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410
Placing and Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
Bitstream Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
Design Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
In-Circuit Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
ISE Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Introduction to ISE Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Design Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
Device Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
ISE Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Project Navigator Main Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416
Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .416
Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
Source Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
ISE Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
Engineering Capture System (ECS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
HDL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
Xilinx Synthesis Technology (XST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
XXILINX" www.xilinx.com
18 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
HDL Advisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
Partner Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
Intellectual Property (IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
System Generator for DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Embedded Development Kit and Platform Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Clocking Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Data2MEM Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Automatic Implementation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Incremental Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420
Modular Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420
Constraints Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .421
PlanAhead Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .421
FPGA Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .421
Interactive Timing Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .421
ISE Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
iMPACT Configuration Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
ChipScope Pro Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
Power Analysis Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .422
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Chapter 14: Using IP Cores
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
The CORE Generator System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Xilinx IP Solutions and the IP Center. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
LogiCORE Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
AllianceCORE Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
Candidate Core Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Design Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Xilinx Alliance Program Partner Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
SignOnce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Spartan-3 Generation IP Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Chapter 15: Embedded Processing and Control Solutions
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
PicoBlaze Application Development Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
MicroBlaze Application Development Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Embedded Development Kit (EDK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Xilinx Platform Studio (XPS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
GNU Software Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Hardware/Software Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Board Support Packages (BSPs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Operating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Processor Peripheral IP Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Processor Peripherals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Serial I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Memory Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Networking Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 19
UG331 (v1.8) June 13, 2011
In-Circuit Hardware Debugger Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Section 3: PCB Design Considerations
Chapter 16: Packages and Pinouts
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Differences in Pinouts Between Spartan-3 Generation FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Pin Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Pin Labeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .442
Differential Pair Labeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .442
Pinout Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443
Pinout Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443
Footprint Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .444
PartGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .445
ISE Development System Pin Assignment Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .445
PlanAhead Design Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Pb-Free Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446
Differences in Packages Between Spartan-3 Generation Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Selecting the Right Package Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Package Thermal Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Chapter 17: Package Drawings
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
VQ100/VQG100 Very Thin QFP Package (pk012) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
CP132/CPG132 Chip Scale BGA Package (pk500) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
TQ144/TQG144 Thin QFP Package (pk009) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
PQ208/PQG208 QFP Package (pk007). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
FT256/FTG256 Fine-Pitch Thin BGA Package (pk053). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
FG320/FGG320 Fine-Pitch BGA Package (pk071) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
FG400/FGG400 Fine-Pitch BGA Package (pk083) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
FG456/FGG456 Fine-Pitch BGA Package (pk034) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
FG484/FGG484 Fine-Pitch BGA Package (pk081) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
CS484/CSG484 Chip-Scale BGA Package (pk223) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
FG676/FGG676 Fine-Pitch BGA Package (pk035) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
FG900/FGG900 Fine-Pitch BGA Package (pk038) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
FG1156/FGG1156 Fine-Pitch BGA Package (pk039) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Chapter 18: Powering Spartan-3 Generation FPGAs
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Differences between Spartan-3 Generation Families. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Voltage Supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
VREF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .469
XXILINX" www.xilinx.com
20 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Power Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Voltage Regulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Power-On Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Supply Sequencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
Surplus ICCINT if VCCINT is Applied before VCCAUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .471
Ramp Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .471
Hot Swap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Configuration Data Retention, Brown-Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Saving Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Saving Clock Routing Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473
Power-Off Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
Board Design and Signal Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Simultaneously Switching Outputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
Power Distribution System Design and Decoupling/Bypass Capacitors . . . . . . . . . . . . . . . . . . . . . . . . . . .476
No Internal Charge Pumps or Free-Running Oscillators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .476
Large-Swing Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Related Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Chapter 19: Power Management Solutions
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Extended Spartan-3A Family Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Suspend Features and Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
Design Preparation for Suspend Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
Entering Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
Exiting Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
PROG_B Programming Pin Always Overrides Suspend Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
Suspend Mode Timing Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
Enable the Suspend Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
Via User Constraints File (UCF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
Via BitGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
Define the I/O Behavior During Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
Single-Ended I/O Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
Differential I/O Standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
SUSPEND Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .486
Application State Retained during Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .486
Suspend Mode Wake-Up Timing Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487
Wake-Up Timing Clock Source (sw_clk) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487
Switch Outputs from Suspend to Normal Behavior (sw_gts_cycle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488
Release Write Protect on Clocked Elements (sw_gwe_cycle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488
Dedicated Configuration Pins Unaffected During Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
SUSPEND Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
SUSPEND Input Glitch Filter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
Effect on FPGA Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
Tie SUSPEND to GND if not Using Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
AWAKE Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
General Behavior (Suspend Feature Disabled) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
AWAKE Pin Behavior when Suspend Feature Enabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
Controlling Wake-Up from an External Source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
JTAG Operations Allowed During Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
XXILINX” www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 21
UG331 (v1.8) June 13, 2011
Post-Configuration CRC Limitations When Using Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .492
Suspend Mode Bitstream Generator Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .493
FPGA Voltage Requirements During Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .493
Supply Requirements During Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Forcing FPGA to Quiescent Current Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
Entering Hibernate State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
Extended Spartan-3A Family FPGA: Turn Off VCCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
Spartan-3E and Spartan-3 FPGAs: Maintain VCCO on I/O Banks Connected
to Powered External Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
Exiting Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .496
Design Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497
Chapter 20: Using IBIS Models
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
IBIS Advantages over SPICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
IBIS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Xilinx Support of IBIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
IBIS I/V and dV/dt Curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Ramp and dV/dt Curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
IBISWriter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Chapter 21: Using Boundary-Scan and BSDL Files
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Boundary-Scan Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
IEEE Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Boundary-Scan Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Boundary-Scan Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
BSDL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
BSDL File Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .506
BSDL File Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
Using BSDLAnno for Post-Configuration Boundary-Scan Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
Software Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
iMPACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .509
SVF Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .509
J Drive Engine for IEEE 1532 Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510
Using the BSCAN_SPARTAN3A Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510
Related Materials and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
XXILINX" www.xilinx.com
22 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
XXILINX® UG332 UG333 http: / / www.xilinx.com/ support/ documentation / spartan-3a.htm www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 23
UG331 (v1.8) June 13, 2011
R
Preface
About This Guide
This user guide provides guidance on how customers can use the architectural features of
each platform in the Spartan®-3 generation: the Extended Spartan-3A family, which
includes the Spartan-3A, Spartan-3AN, and Spartan-3A DSP platforms, and the Spartan-3
and Spartan-3E families. By combining documentation for these families, similarities and
differences are easier to learn, and less material needs to be duplicated in multiple sources.
For an overview of how these platforms compare, see “Section 1: Designing with Spartan-
3 Generation FPGAs”.
This user guide includes much of the information previously included in Module 2
(Functional Description) of the Spartan FPGA data sheets and in device application notes.
The data sheets should still be referenced for the platform-specific DC and Switching
Characteristics (located in Module 3) and the pinout information (located in Module 4). All
features of the Spartan-3E and Extended Spartan-3A family are described in this user
guide, but some differences in the Spartan-3 family, such as DCI or the clocking structure,
are discussed in Module 2 of the Spartan-3 FPGA data sheet or in the device application
notes.
Information on the configuration features of the Spartan-3 generation FPGAs is located in
UG332, the Spartan-3 Generation Configuration User Guide. Information on using the internal
SPI flash of the Spartan-3AN FPGAs is located in UG333, Spartan-3AN FPGA In-System
Flash User Guide. Together with the device specifications in the data sheets, these user
guides provide complete documentation on the Spartan-3 generation architecture.
Check for updates on xilinx.com at:
http://www.xilinx.com/support/documentation/spartan-3a.htm. To get an automatic
notification of any updates to this document, click the “Subscribe to Alerts” link on the top
of the page.
Guide Contents
This user guide contains the following chapters:
“Section 1: Designing with Spartan-3 Generation FPGAs”
Chapter 1, “Overview”
Chapter 2, “Using Global Clock Resources”
Chapter 3, “Using Digital Clock Managers (DCMs)”
Chapter 4, “Using Block RAM”
Chapter 5, “Using Configurable Logic Blocks (CLBs)”
Chapter 6, “Using Look-Up Tables as Distributed RAM”
Chapter 7, “Using Look-Up Tables as Shift Registers (SRL16)”
Chapter 8, “Using Dedicated Multiplexers”
XXILINX" http: / /www.xilinx.com/ support/ docummtation/index.htm httE: / /www.xilinx.com/sug}zon www.xilinx.com
24 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
Chapter 9, “Using Carry and Arithmetic Logic”
Chapter 10, “Using I/O Resources”
Chapter 11, “Using Embedded Multipliers”
Chapter 12, “Using Interconnect”
“Section 2: Design Software
Chapter 13, “Using ISE Design Tools”
Chapter 14, “Using IP Cores”
Chapter 15, “Embedded Processing and Control Solutions”
“Section 3: PCB Design Considerations”
Chapter 16, “Packages and Pinouts”
Chapter 17, “Package Drawings”
Chapter 18, “Powering Spartan-3 Generation FPGAs”
Chapter 19, “Power Management Solutions”
Chapter 20, “Using IBIS Models”
Chapter 21, “Using Boundary-Scan and BSDL Files”
Additional Resources
To find additional documentation, see the Xilinx website at:
http://www.xilinx.com/support/documentation/index.htm.
To search the Answer Database of silicon, software, and IP questions and answers, or to
create a technical support WebCase, see the Xilinx website at:
http://www.xilinx.com/support.
Conventions
This document uses the following conventions. An example illustrates each convention.
Typographical
The following typographical conventions are used in this document:
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+C
§IXILINX0 Blue, underlined text httE:/ / www.xilin><.com www.xilinx.com="">
Spartan-3 Generation FPGA User Guide www.xilinx.com 25
UG331 (v1.8) June 13, 2011
Conventions
Online Document
The following conventions are used in this document:
Italic font
Variables in a syntax statement
for which you must supply
values
ngdbuild 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;
Convention Meaning or Use Example
Convention Meaning or Use Example
Blue text Cross-reference link to a location
in the current document
See the section “Additional
Resources” for details.
Refer to “Title Formats” in
Chapter 1 for details.
Blue, underlined text Hyperlink to a website (URL) Go to http://www.xilinx.com
for the latest speed files.
XXILINX" www.xilinx.com
26 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
XXILINX® www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 27
UG331 (v1.8) June 13, 2011
R
Section 1: Designing with Spartan-3 Generation
FPGAs
“Overview”
“Using Global Clock Resources”
“Using Digital Clock Managers (DCMs)”
“Using Block RAM”
“Using Configurable Logic Blocks (CLBs)”
“Using Look-Up Tables as Distributed RAM”
“Using Look-Up Tables as Shift Registers (SRL16)”
“Using Dedicated Multiplexers”
“Using Carry and Arithmetic Logic”
“Using I/O Resources”
“Using Embedded Multipliers”
“Using Interconnect”
XXILINX" www.xilinx.com
28 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter :
R
SIXILINXEa www xumxmm/spanmzadsp www xnmxmm/guppmMocumunmmn/spman.3a,dgp.mm www xilxnx.cum/spanan3an www xumxmm/suppun/documcnmmn/spamn-san mm www xumxmm/spanmza www xilxnx.mm/§uppun/documcnml;on/5partan-3a.hm www x11mx.mm/§u ggwk/documunmlmn/s gartan-3chlm www xilxnx.mm/§u3E1"!/documcnml1«)n/§Eartan-3.hm Ilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 29
UG331 (v1.8) June 13, 2011
R
Chapter 1
Overview
This chapter provides an overview of the Spartan®-3 generation platforms. Refer to the
links in Table 1-1 for more information.
Introduction
The Spartan-3 generation of FPGAs includes the Extended Spartan-3A family
(Spartan-3A, Spartan-3AN, and Spartan-3A DSP platforms), along with the earlier
Spartan-3 and Spartan-3E families. These families of Field Programmable Gate Arrays
(FPGAs) are specifically designed to meet the needs of high volume, cost-sensitive
electronic applications, such as consumer products. The Spartan-3 generation includes 25
devices offering densities ranging from 50,000 to 5 million system gates, as shown in
Table 1-5 through Table 1-7.
The Spartan-3 platform was the industry’s first 90 nm FPGA,
delivering more functionality
and bandwidth per dollar than was previously possible, setting new standards in the
programmable logic industry.
The Spartan-3E platform builds on the success of the earlier
Spartan-3 platform by adding new features that improve system performance and reduce
the cost of configuration. The Extended Spartan-3A family builds on the success of the
earlier Spartan-3E platform by further enhancing configuration and reducing power to
provide the lowest total cost. The Spartan-3AN platform provides the additional benefits
of non-volatility and large amounts of on-board user flash. The Spartan-3A DSP platform
extends the density range and adds resources often required in digital signal processing
(DSP) applications.
Because of their exceptionally low cost, Spartan-3 generation FPGAs are ideally suited to a
wide range of consumer electronics applications, including broadband access, home
networking, display/projection, and digital television equipment.
The Spartan-3 generation FPGAs provide a superior alternative to mask-programmed
ASICs. FPGAs avoid the high initial cost, the lengthy development cycles, and the inherent
inflexibility of conventional ASICs. Also, FPGA programmability permits design upgrades
in the field with no hardware replacement necessary, an impossibility with ASICs.
Table 1-1: Spartan-3 Generation Platforms
Family Platform Product Information Technical Documentation
Extended
Spartan-3A
Spartan-3A DSP FPGAs www.xilinx.com/spartan3adsp www.xilinx.com/support/documentation/spartan-3a_dsp.htm
Spartan-3AN FPGAs www.xilinx.com/spartan3an www.xilinx.com/support/documentation/spartan-3an.htm
Spartan-3A FPGAs www.xilinx.com/spartan3a www.xilinx.com/support/documentation/spartan-3a.htm
Spartan-3E Spartan-3E FPGAs www.xilinx.com/support/documentation/spartan-3e.htm
Spartan-3 Spartan-3 FPGAs www.xilinx.com/support/documentation/spartan-3.htm
XXILINX" www.xilinx.com
30 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Spartan-3 Generation Families
Extended Spartan-3A family:
Lowest total cost
Spartan-3A Platform
-Ideal for bridging, differential signaling, and memory interfacing
Spartan-3A DSP Platform
-Higher density option in Extended Spartan-3A family
-DSP48A resources for digital signal processing (DSP) applications
Spartan-3AN Platform
-Non-volatile
-Ideal for space-constrained applications
Spartan-3E family
Spartan-3 family
Not recommended for new designs
Table 1-2: Spartan-3 Generation Platform Selection
Application/Function
Spartan-3 Generation Platform
Spartan-3
FPGAs(1) Spartan-3E
FPGAs Spartan-3A
FPGAs Spartan-3AN
FPGAs Spartan-3A DSP
FPGAs
Basic Design Characteristics
More than 1.5M system gates + +
500 or less I/O pins + + ++ ++ ++
More than 500 I/O pins +
Embedded Processing
32-bit MicroBlaze Processor + + ++ ++ ++
8-bit PicoBlaze Controller + + + + +
DDR SDRAM Memory Interfaces
DDR SDRAM + + ++ ++ ++
DDR2 SDRAM + + ++ ++ ++
Differential I/O
LVDS + ++ +++ +++ +++
RSDS + ++ +++ +++ +++
miniLVDS + ++ ++ ++
TMDS/PPDS + + +
PCI®/PCI Express® Interface
33 MHz PCI Interface + + ++ ++ ++
66 MHz PCI Interface + ++ ++ ++
PCI Express PIPE Interface + + + + +
XXILINX° www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 31
UG331 (v1.8) June 13, 2011
Spartan-3 Generation Families
Power Management + + +
I/O Capabilities
Hot Swap + + ++ ++ ++
High Output Drive Current + ++ ++ ++
Programmable Input Delay + ++ +++ +++ +++
3.3V-only Applications + + ++ ++ ++
Clocking Resources
Digital Clock Managers (DCMs) + ++ ++ ++ ++
Low-Skew Global Clocks + ++ ++ ++ ++
FPGA Configuration
Platform Flash PROM + + + + +
SPI Flash Configuration + + + +
Parallel Flash Configuration + + + +
MultiBoot + + + +
Low-Cost Design Protection + ++ +++ ++
Non-Volatile +
Integrated User Flash +
Digital Signal Processing (DSP)
18x18 Hardware Multipliers + ++ ++ ++ +++
DSP48A +
Block RAM Registers + + ++ ++ +++
Notes:
1. The original Spartan-3 FPGA family is not recommended for new designs.
2. + = supported, ++ = better, +++ = best.
Table 1-2: Spartan-3 Generation Platform Selection (Cont’d)
Application/Function
Spartan-3 Generation Platform
Spartan-3
FPGAs(1) Spartan-3E
FPGAs Spartan-3A
FPGAs Spartan-3AN
FPGAs Spartan-3A DSP
FPGAs
XXILINX" www.xilinx.com
32 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Extended Spartan-3A Family Features
Very low cost, high-performance logic solution for high-volume consumer-oriented
applications
Proven advanced 90-nanometer process technology
•Dual-range V
CCAUX supply at 2.5V or 3.3V simplifies the power supply design and
eliminates one power rail
Suspend mode reduces system power consumption
Retains all design state and FPGA configuration data
Activated with SUSPEND pin
FPGA drops to minimal quiescent power
I/Os have user-controlled behavior
•Quick wake-up time
AWAKE pin indicates present status
3.3V ±10% supply compatibility
4.6V maximum input voltage
Hot-swap compliance
FPGA I/O can be driven externally before VCCO powers up without damage to
the device and without disturbing the external bus
FPGA does not drive out before or during power-up sequence except for
dedicated pins
Multi-voltage, multi-standard SelectIO™ interface pins
Up to 519 I/O pins or 227 differential signal pairs
LVCMOS, LVTTL, HSTL, and SSTL single-ended signal standards
3.3V, 2.5V, 1.8V, 1.5V, and 1.2V signaling
Up to 24 mA output drive
622+ Mb/s data transfer rate per I/O
True LVDS, RSDS, mini-LVDS, PPDS, HSTL/SSTL differential I/O
Double Data Rate (DDR) support with clock alignment
DDR/DDR2 SDRAM support up to 400 Mb/s
Programmable input delays for finer timing control
Abundant, flexible logic resources
Densities up to 53,712 logic cells
Optional SRL16 shift register or distributed RAM support
Efficient wide multiplexers, wide logic
Fast look-ahead carry logic
Dedicated 18 x 18 multipliers with optional pipeline for higher performance
IEEE 1149.1/1532 JTAG programming/debug port
Hierarchical SelectRAM™ memory architecture
Up to 2,268 Kbits of fast block RAM with byte write enables for efficient use in
processor applications
Up to 373 Kbits of efficient distributed RAM
XXILINX” Platform Flash g WebPACK MicmBlaze PicoBlaze E PCI ExEress PIPE endEoint Automotive XA Platform www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 33
UG331 (v1.8) June 13, 2011
Extended Spartan-3A Family Features
Up to eight Digital Clock Managers (DCMs)
Clock skew elimination (delay locked loop)
Frequency synthesis, multiplication, division
High-resolution phase shifting
Wide frequency range (5 MHz to over 300 MHz)
Eight global clocks, plus abundant low-skew routing
Eight additional clocks per each half of the device
Additional clock inputs for pinout flexibility and differential clocks
Configuration interface to low-cost Xilinx Platform Flash with JTAG
Configuration interface to industry-standard PROMs
Low-cost, space-saving SPI serial Flash PROM
x8 or x8/x16 parallel NOR Flash PROM
Configuration watchdog timer automatically recovers from configuration errors
Unique ID (Device DNA) in each device useful for copy protection algorithms
Device DNA authentication restricts copying
MultiBoot automatic reconfiguration between two files
•Complete Xilinx ISE® and WebPACK™ development system support
Low-cost Starter Kit development systems and advanced demo boards
32-bit MicroBlaze™ and 8-bit PicoBlaze™ embedded processor cores
Fully compliant 32-/64-bit 66 MHz PCI support
PCI Express PIPE endpoint and other IP cores
Supported by major EDA partners
Low-cost QFP and BGA packaging options
Common footprints support easy density migration within each platform (except
designs using the FT256 package)
Pb-free (RoHS) packaging options
Automotive XA platform variants
Spartan-3AN Platform Additional Features
Integrated robust configuration memory
Saves board space
Improves ease-of-use
Simplifies design
Reduces support issues
Plentiful amounts of non-volatile memory available to the user
Up to 11+ Mb available
MultiBoot support
Embedded processing and code shadowing
Scratchpad memory
Robust 100K Flash memory program/erase cycles per page
20 years Flash memory data retention
XXILINX" www.xilinx.com
34 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Security features provide bitstream anti-cloning protection
Buried configuration interface enhances Device DNA authentication
Flash memory sector protection and lockdown
Spartan-3A DSP Platform Additional Features
Optimized for low-cost DSP systems
High logic capacity, 33K to 47K look-up tables (LUTs)
Increased block RAM of 85 to 126 blocks and 1.5 to 2.3 Mbits of memory
High-performance DSP48A blocks
Based on Virtex®-4 FPGA DSP block architecture
Full multiply-accumulate functionality
Integrated 48-bit post adder
Integrated 18-bit pre-adder for symmetric FIR filters
Independent routing
250 MHz operation
•Improved block RAM
Internal output register
250 MHz operation
Spartan-3 Generation Resources
Table 1-3 through Table 1-7 show the number of resources available in each member of the
Spartan-3A DSP, Spartan-3AN, Spartan-3A, Spartan-3E, and Spartan-3 platforms.
Note: By convention, 1K bits is equivalent to 1,024 bits.
Table 1-3: Summary of Spartan-3A DSP FPGA Attributes
Device System
Gates
Equivalent
Logic
Cells
CLB Array
(One CLB = Four Slices) Distributed
RAM Bits
Block
RAM
Bits DSP48As DCMs Maximum
User I/O
Maximum
Differential
I/O Pairs
Rows Columns Total
CLBs Total
Slices
XC3SD1800A 1800K 37,440 88 48 4,160 16,640 260K 1,512K 84 8 519 227
XC3SD3400A 3400K 53,712 104 58 5,968 23,872 373K 2,268K 126 8 469 213
Table 1-4: Summary of Spartan-3AN FPGA Attributes
Device System
Gates
Equivalent
Logic
Cells CLBs Slices Distributed
RAM Bits
Block
RAM
Bits
Dedicated
Multipliers DCMs Maximum
User I/O
Maximum
Differential
I/O Pairs
In-System
Flash bits
XC3S50AN 50K 1,584 176 704 11K 54K 3 2 144 64 1M
XC3S200AN 200K 4,032 448 1,792 28K 288K 16 4 195 90 4M
XC3S400AN 400K 8,064 896 3,584 56K 360K 20 4 311 142 4M
XC3S700AN 700K 13,248 1472 5,888 92K 360K 20 8 372 165 8M
XC3S1400AN 1400K 25,344 2816 11,264 176K 576K 32 8 502 227 16M
§IXILINX0 led www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 35
UG331 (v1.8) June 13, 2011
Spartan-3 Generation Resources
Table 1-5: Summary of Spartan-3A FPGA Attributes
Device System
Gates Equivalent
Logic Cells
CLB Array
(One CLB = Four Slices) Distributed
RAM Bits
Block
RAM
Bits
Dedicated
Multipliers DCMs Maximum
User I/O
Maximum
Differential
I/O Pairs
Rows Columns Total
CLBs Total
Slices
XC3S50A 50K 1,584 16 12 176 704 11K 54K 3 2 144 64
XC3S200A 200K 4,032 32 16 448 1,792 28K 288K 16 4 248 112
XC3S400A 400K 8,064 40 24 896 3,584 56K 360K 20 4 311 142
XC3S700A 700K 13,248 48 32 1472 5,888 92K 360K 20 8 372 165
XC3S1400A 1400K 25,344 72 40 2816 11,264 176K 576K 32 8 502 227
Table 1-6: Summary of Spartan-3E FPGA Attributes
Device System
Gates Equivalent
Logic Cells
CLB Array
(One CLB = Four Slices) Distributed
RAM Bits
Block
RAM
Bits
Dedicated
Multipliers DCMs Maximum
User I/O
Maximum
Differential
I/O Pairs
Rows Columns Total
CLBs Total
Slices
XC3S100E 100K 2,160 22 16 240 960 15K 72K 4 2 108 40
XC3S250E 250K 5,508 34 26 612 2,448 38K 216K 12 4 172 68
XC3S500E 500K 10,476 46 34 1,164 4,656 73K 360K 20 4 232 92
XC3S1200E 1200K 19,512 60 46 2,168 8,672 136K 504K 28 8 304 124
XC3S1600E 1600K 33,192 76 58 3,688 14,752 231K 648K 36 8 376 156
Table 1-7: Summary of Spartan-3 FPGA Attributes
Device System
Gates Equivalent
Logic Cells
CLB Array
(One CLB = Four Slices) Distributed
RAM Bits Block
RAM Bits Dedicated
Multipliers DCMs Maximum
User I/O
Maximum
Differential
I/O Pairs
Rows Columns Total
CLBs Total
Slices
XC3S50 50K 1,728 16 12 192 768 12K 72K 4 2 124 56
XC3S200 200K 4,320 24 20 480 1,920 30K 216K 12 4 173 76
XC3S400 400K 8,064 32 28 896 3,584 56K 288K 16 4 264 116
XC3S1000 1000K 17,280 48 40 1,920 7,680 120K 432K 24 4 391 175
XC3S1500 1500K 29,952 64 52 3,328 13,312 208K 576K 32 4 487 221
XC3S2000 2000K 46,080 80 64 5,120 20,480 320K 720K 40 4 565 270
XC3S4000 4000K 62,208 96 72 6,912 27,648 432K 1,728K 96 4 633 300
XC3S5000 5000K 74,880 104 80 8,320 33,280 520K 1,872K 104 4 633 300
XXILINX" www.xilinx.com
36 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Architectural Overview
The Spartan-3 generation architecture consists of five fundamental programmable
functional elements:
Configurable Logic Blocks (CLBs) contain flexible Look-Up Tables (LUTs) that
implement logic plus storage elements used as flip-flops or latches. CLBs perform a
wide variety of logical functions as well as store data.
Input/Output Blocks (IOBs) control the flow of data between the I/O pins and the
internal logic of the device. IOBs support bidirectional data flow plus 3-state
operation. Supports a variety of signal standards, including several high-performance
differential standards. Double Data-Rate (DDR) registers are included.
Block RAM provides data storage in the form of 18-Kbit dual-port blocks.
Multiplier Blocks accept two 18-bit binary numbers as inputs and calculate the
product. The Spartan-3A DSP platform includes special DSP multiply-accumulate
blocks.
Digital Clock Manager (DCM) Blocks provide self-calibrating, fully digital solutions
for distributing, delaying, multiplying, dividing, and phase-shifting clock signals.
These elements are organized as shown in Figure 1-1, using the Spartan-3A FPGA array as
an example. A dual ring of staggered IOBs surrounds a regular array of CLBs in the
Spartan-3 and Extended Spartan-3A family. The Spartan-3E family has a single ring of
inline IOBs. Each block RAM column consists of several 18-Kbit RAM blocks. Each block
RAM is associated with a dedicated multiplier. The DCMs are positioned with two at the
top and two at the bottom of the device, plus additional DCMs on the sides for the larger
devices.
The Spartan-3 generation features a rich network of traces that interconnect all five
functional elements, transmitting signals among them. Each functional element has an
associated switch matrix that permits multiple connections to the routing.
QIXILINX0 DI EDD s EDD DD WEIEIDDEIEII—IWEID DUDE
Spartan-3 Generation FPGA User Guide www.xilinx.com 37
UG331 (v1.8) June 13, 2011
Configuration
Configuration
Spartan-3 generation FPGAs are programmed by loading configuration data into robust,
reprogrammable, static CMOS configuration latches (CCLs) that collectively control all
functional elements and routing resources. The FPGA’s configuration data is stored
externally in a PROM or some other non-volatile medium, either on or off the board. The
Spartan-3AN platform contains its own internal SPI flash configuration memory. After
applying power, the configuration data is written to the FPGA using one of several
different modes:
Master Serial from a Xilinx Platform Flash PROM
Serial Peripheral Interface (SPI) from an industry-standard SPI serial Flash
Spartan-3E and Extended Spartan-3A family FPGAs only
Byte Peripheral Interface (BPI) from an industry-standard x8 or x8/x16 parallel NOR
Flash
Spartan-3E and Extended Spartan-3A family FPGAs only
Slave Serial, typically downloaded from a processor
Slave Parallel, typically downloaded from a processor
Boundary Scan (JTAG), typically downloaded from a processor or system tester
Figure 1-1: Spartan-3A Platform Architecture
CLB
Block RAM
Multiplier
DCM
IOBs
IOBs
DS312-1_01_032606
IOBs
IOBs
DCM
Block RAM / Multiplier
DCM
CLBs
IOBs
OB
s
D
C
M
XXILINX" www.xilinx.com
38 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
I/O Capabilities
The Spartan-3 generation SelectIO interface supports many popular single-ended and
differential standards, as shown in Table 1-8 and Table 1-9. Table 1-10 through Table 1-14
show the number of user I/Os as well as the number of differential I/O pairs available for
each device/package combination for the Extended Spartan-3A family, Spartan-3E, and
Spartan-3 families, respectively. Some of the user I/Os are unidirectional input-only pins
as indicated in the tables. See LVCMOS/LVTTL Slew Rate Control and Drive Strength”
for specific drive strengths supported.
Table 1-8: Single-Ended I/O Standards
Standard VCCO Class Spartan-3
FPGAs Spartan-3E
FPGAs Extended Spartan-3A
FPGAs
LVCMOS
1.2V - up to 6 mA 2 mA up to 6 mA
1.5V - up to 12 mA up to 6 mA up to 12 mA
1.8V - up to 16 mA up to 8 mA up to 16 mA
2.5V - up to 24 mA up to 12 mA up to 24 mA
3.3V - up to 24 mA up to 16 mA up to 24 mA
LVTTL 3.3V - up to 24 mA up to 16 mA up to 24 mA
PCI33 3.0V - √√ √
3.3V - √√ √
PCI66 3.0V - √√
3.3V - √√
SSTL
1.8V I√√ √
II √√
2.5V I√√ √
II √√
3.3V I
II
HSTL
1.5V I√√
III √√
1.8V
I√√ √
II √√
III √√ √
GTL --
-Plus
DCI option - -
§IXILINX0 www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 39
UG331 (v1.8) June 13, 2011
I/O Capabilities
Table 1-9: Differential I/O Standards
Standard VCCO Spartan-3
FPGAs Spartan-3E
FPGAs Extended Spartan-3A
Family FPGAs
LVDS 2.5V √√ √
3.3V
BLVDS 2.5V √√ √
MINI_LVDS 2.5V √√
3.3V
LVPECL 2.5V √√ √
3.3V
RSDS 2.5V √√ √
3.3V
TMDS 2.5V
3.3V
PPDS 2.5V
3.3V
LDT 2.5V
LVDSEXT 2.5V
DIFF_SSTL - √√ √
DIFF_HSTL - √√ √
DIFF_TERM - √√
Table 1-10: Spartan-3A FPGA DSP Available User I/Os and Differential (Diff) I/O Pairs
Device
CS484
CSG484 FG676
FGG676
User Diff User Diff
XC3SD1800A 309
(56)
140
(78)
519
(110)
227
(131)
XC3SD3400A 309
(56)
140
(78)
469
(60)
213
(117)
Notes:
1. The number in bold indicates the maximum number of I/O and input-only pins. The number in italics
indicates the number of input-only pins. The differential (Diff) input-only pin count includes both
differential pairs on input-only pins and differential pairs on I/O pins within I/O banks that are
restricted to differential inputs.
XXILINX" www.xilinx.cam
40 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Table 1-11: Spartan-3AN Available User I/Os and Differential (Diff) I/O Pairs
Device
TQ144
TQG144 FT256
FTG256 FG400
FGG400 FG484
FGG484 FG676
FGG676
User Diff User Diff User Diff User Diff User Diff
XC3S50AN 108
(7)
50
(24)
144
(32)
64
(32) - - - - - -
XC3S200AN - - 195
(35)
90
(50) - - - - - -
XC3S400AN - - 195
(35)
90
(50)
311
(63)
142
(78) - - - -
XC3S700AN - - - - - - 372
(84)
165
(93) - -
XC3S1400AN - - - - - - 375
(87)
165
(93)
502
(94)
227
(131)
Notes:
1. The number in bold indicates the maximum number of I/O and input-only pins. The number in italics indicates the number of
input-only pins. The differential (Diff) input-only pin count includes both differential pairs on input-only pins and differential pairs
on I/O pins within I/O banks that are restricted to differential inputs.
XXILINX” www.xilinx.cam
Spartan-3 Generation FPGA User Guide www.xilinx.com 41
UG331 (v1.8) June 13, 2011
I/O Capabilities
Table 1-12: Spartan-3A FPGA Available User I/Os and Differential (Diff) I/O Pairs
Device
VQ100
VQG100 TQ144
TQG144 FT256
FTG256 FG320
FGG320 FG400
FGG400 FG484
FGG484 FG676
FGG676
User Diff User Diff User Diff User Diff User Diff User Diff User Diff
XC3S50A 68
(13)
60
(24)
108
(7)
50
(24)
144
(32)
64
(32) - - - - - - - -
XC3S200A 68
(13)
60
(24) - - 195
(35)
90
(50)
248
(56)
112
(64) - - - - - -
XC3S400A - - - 195
(35)
90
(50)
251
(59)
112
(64)
311
(63)
142
(78) - - - -
XC3S700A - - - 161
(13)
74
(36) - - 311
(63)
142
(78)
372
(84)
165
(93) - -
XC3S1400A - - - 161
(13)
74
(36) - - - - 375
(87)
165
(93)
502
(94)
227
(131)
Notes:
1. The number in bold indicates the maximum number of I/O and input-only pins. The number in italics indicates the number of
input-only pins. The differential (Diff) input-only pin count includes both differential pairs on input-only pins and differential pairs
on I/O pins within I/O banks that are restricted to differential inputs.
Table 1-13: Spartan-3E FPGA Available User I/Os and Differential (Diff) I/O Pairs
Device
VQ100
VQG100 CP132
CPG132 TQ144
TQG144 PQ208
PQG208 FT256
FTG256 FG320
FGG320 FG400
FGG400 FG484
FGG484
User Diff User Diff User Diff User Diff User Diff User Diff User Diff User Diff
XC3S100E 66
(7)
30
(2)
83
(11)
35
(2)
108
(28)
40
(4) ----------
XC3S250E 66
(7)
30
(2)
92
(7)
41
(2)
108
(28)
40
(4)
158
(32)
65
(5)
172
(40)
68
(8) ------
XC3S500E 66
(7)
30
(2)
92
(7)
41
(2) - - 158
(32)
65
(5)
190
(41)
77
(8)
232
(56)
92
(12) - - - -
XC3S1200E --------190
(40)
77
(8)
250
(56)
99
(12)
304
(72)
124
(20) - -
XC3S1600E ----------250
(56)
99
(12)
304
(72)
124
(20)
376
(82)
156
(21)
Notes:
1. The number in bold indicates the maximum number of I/O and input-only pins. The number in italics indicates the number of
input-only pins.
XXILINX" XXILINX‘ f www.xilinx.com
42 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
Package Marking
Figure 1-2 provides a top marking example for a Spartan-3A FPGA in the quad-flat
packages. Figure 1-3 shows the top marking for a Spartan-3A FPGA in a BGA package. The
markings for the BGA packages are nearly identical to those for the quad-flat packages,
except that the marking is rotated with respect to the ball A1 indicator.
On Spartan-3E and Extended Spartan-3A family FPGAs, the “5C” and “4I” part
combinations can be dual marked as “5C/4I”.
Table 1-14: Spartan-3 FPGA Available User I/Os and Differential (Diff) I/O Pairs
Device
VQ100
VQG100 TQ144
TQG144 PQ208
PQG208 FT256
FTG256 FG320
FGG320 FG456
FGG456 FG676
FGG676 FG900
FGG900
User Diff User Diff User Diff User Diff User Diff User Diff User Diff User Diff
XC3S50 63 29 97 46 124 56 - - - - - - - - - -
XC3S200 63 29 97 46 141 62 173 76 - - - - - - - -
XC3S400 -- 97 46 141 62 173 76 221 100 264 116 - - - -
XC3S1000 ------ 173 76 221 100 333 149 391 175 - -
XC3S1500 - - - - - - - - 221 100 333 149 487 221 - -
XC3S2000 - - - - - - - - - - 333 149 489 221 565 270
XC3S4000 - - - - - - - - - - - - 489 221 633 300
XC3S5000 - - - - - - - - - - - - 489 221 633 300
Figure 1-2: Spartan-3A FPGA QFP Package Marking Example
Figure 1-3: Spartan-3A FPGA BGA Package Marking Example
Date Code
Mask Revision Code
Process Technology
XC3S50ATM
TQ144AGQ0625
D1234567A
4C
SPARTAN
Device Type
Package
Speed Grade
Temperature Range
Fabrication Code
Pin P1
R
R
DS529-1_03_080406
Lot Code
Lot Code
Date Code
XC3S50ATM
4C
SPARTAN
Device Type
BGA Ball A1
Package
Speed Grade
Temperature Range
R
R
DS529-1_02_021206
FT256 AGQ0625
D1234567A
Mask Revision Code
Process Code
Fabrication Code
XXILINX” XA data sheets XC3SSOA -4 FT G £55 _c L www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 43
UG331 (v1.8) June 13, 2011
Ordering Information
Ordering Information
Spartan-3 generation FPGAs are available in both standard and Pb-free packaging options
for most device/package combinations. The Pb-free packages include a ‘G’ character in the
ordering code. The automotive device part numbers begin with XA instead of XC, and the
automotive temperature ranges include both the I Industrial range and the Q Automotive
range between -40C and +125C.
Figure 1-4 shows an example of the part ordering code. The Industrial Temperature Range
is available exclusively for the Standard (-4) Speed Grade. See Table 1-10 through
Table 1-14 for specific part/package combinations, and see the XA data sheets for specific
automotive ordering codes available.
Figure 1-4: Spartan-3A FPGA Ordering Example
XC3S50A -4 FT 256 C
Device Type
Speed Grade
-4: Standard Performance
-5: High Performance (Commercial only)
Temperature Range:
Package Type
Number of Pins
Pb-free
GExample:
UG331-c1_04_122208
C = Commercial (TJ = 0oC to 85oC)
I = Industrial (TJ = -40oC to 100oC)
Q = Automotive (TJ = -40oC to 125oC)
XXILINX" www.xilinx.com
44 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 1: Overview
R
XXILINX® UG332 www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 45
UG331 (v1.8) June 13, 2011
R
Chapter 2
Using Global Clock Resources
Summary
This chapter describes how to take advantage of the Spartan®-3 generation global clock
resources, including the dedicated clock inputs, buffers, and routing. The clocking
infrastructure provides a series of low-capacitance, low-skew interconnect lines well-
suited to carrying high-frequency signals throughout the FPGA, minimizing clock skew
and improving performance, and should be used for all clock signals. Third-party
synthesis tools, and Xilinx synthesis and implementation tools, automatically use these
resources for high-fanout clock signals.
This chapter focuses on the global clock resources found in all Spartan-3 generation
platforms, and the quadrant clock resources found in the Spartan-3E and Extended
Spartan-3A families. The clock routing can be used in conjunction with the DCMs, which
are discussed in more detail in Chapter 3, “Using Digital Clock Managers (DCMs).” For
information on the special clock inputs used for configuration (CCLK) and Boundary-Scan
(TCK), see UG332, Spartan-3 Generation Configuration User Guide.
Introduction
Each Spartan-3 generation FPGA offers eight high-speed, low-skew global clock resources
to optimize performance. These resources are used automatically by the Xilinx tools. Even
if the clock rate is relatively slow, it is still important to use the global routing resources to
eliminate any potential for timing hazards. It is important to understand how to define and
best take advantage of these resources.
Global Clock Resource Differences between Spartan-3 Generation
Families
The Spartan-3E and Extended Spartan-3A family of FPGAs have identical global clock
resources, with eight global clock inputs and an additional eight clocks on the left and right
sides of the device. The original Spartan-3 family offers only the eight global clock inputs.
Although the clock resources and routing are similar, there will be timing differences
between each platform and between different densities within a platform. This chapter
focuses on the architecture of the Spartan-3E and Extended Spartan-3 families. The
Spartan-3 family offers a simpler set of dedicated clock inputs and routing – for details, see
the Spartan-3 FPGA Family Data Sheet.
XXILINX" www.xilinx.com
46 www.xilinx.com Spartan-3 Generation FPGA User Guide
UG331 (v1.8) June 13, 2011
Chapter 2: Using Global Clock Resources
R
Global Clock Resources
The global clock resources consist of three connected components: GCLK Global Clock
input pads, BUFGMUX Global Clock Multiplexers, and Global Clock routing. See
Figure 2-1.
The primary clock path is shown with bold lines, with a dedicated clock pad (GCLK)
driving a global clock buffer (BUFGMUX) that connects through global routing resources
to clock inputs on flip-flops and other clocked elements. The GCLK pads can be used as
general-purpose I/O, and include the LHCLK and RHCLK inputs described later. A DCM
can be inserted into the path between the clock pad and clock buffer to manipulate the
clock, or the DCM can acquire the clock signal from general-purpose resources. The
BUFGMUX can multiplex between two clock sources or be used as a simple BUFG clock
buffer. The clock buffer can only drive the clock routing resources, which in turn can only
drive clock inputs. However, clock inputs on flip-flops can also come from general-
purpose routing, although their use is not recommended due to higher skew.
Clocking Infrastructure
The detailed Spartan-3E and Extended Spartan-3A family clocking infrastructure is shown
in Figure 2-2.
Figure 2-1: Overall View of Clock Connections
Clocks
UG331_c2_01_100209
BUFGMUX
GCLK
Pad
DCM
Double
Lines
Global
Routing
QIXILINX0 4 10:: $6; :95 n1? Gym GcLKm ems GcLKa Horizanta‘ www.xilinx.com
Spartan-3 Generation FPGA User Guide www.xilinx.com 47
UG331 (v1.8) June 13, 2011
Global Clock Resources
Figure 2-2: Spartan-3E and Extended Spartan-3A Family Internal Quadrant-Based Clock Structure
8888
4
8
88
8
Left Spine
Top Left
Quadrant (TL) Top Right
Quadrant (TR)
Bottom Right
Quadrant (BR)
Bottom Left
Quadrant (BL)
Right Spine
Horizontal Spine
Top Spine
Bottom Spine
4
UG331_c4_02_011209
DCM
Top, Left DCM
Top, Right
4
4
4 4
4
4
X1Y10 X1Y11 X2Y10 X2Y11
GCLK6GCLK7
GCLK10GCLK11
GCLK4GCLK5
GCLK8GCLK9
X1Y0 X1Y1 X2Y0 X2Y1
GCLK14