Spartan-6 FPGA Configuration: User Guide
Spartan-6 FPGA Configuration: User Guide
Configuration
User Guide
Spartan-6 FPGA Configuration User Guide www.xilinx.com UG380 (v2.7) October 29, 2014
Revision History
The following table shows the revision history for this document.
Date Version Revision
06/24/2009 1.0 Initial Xilinx release.
02/17/2010 2.0 Changed REBOOT command to IPROG command throughout the document.
Chapter 1: In The High-Speed Priority Option, changed the configuration data size to 3.6 Mb (XC6SLX16). In FPGA
Density Migration on page 21, changed the required configuration memory size to 2.6 Mb (XC6SLX9) and 3.6 Mb
(XC6SLX16). In Protecting the FPGA Bitstream against Unauthorized Duplication, clarified which Spartan-6
devices have AES decryption logic.
Chapter 2: Removed the caution statement following Table 2-1. In Figure 2-2, Figure 2-3, Figure 2-6, Figure 2-7,
Figure 2-12, and Figure 2-20, changed VCCO_2 resistor to 2.4 kΩ.; added VFS and VBATT ports, added the
SUSPEND pin, and added four notes to the end of the Notes section following each figure. In Figure 2-2 and
Figure 2-6, removed “either 2.5V or 3.3V” from note about Spartan-6 FPGA VCCO_2 and the Platform Flash PROM
VCCO supply inputs. In Note 12 under Figure 2-12 and Note 10 under Figure 2-20, included PLL lock wait. In
Figure 2-2, changed PROGRAM_B pull-up power to VCCO_2. Removed Slave DIN from Figure 2-4. Added
sentence about SelectMAP unavailability to the first paragraph of SelectMAP Configuration Interface. Added
sentence about toggling to the BUSY description in Table 2-3. In Figure 2-6, added a 4.7 kΩ pull-up to
PROGRAM_B. Added BUSY to Note 14 under Figure 2-6. Added “configuration and” to Note 2 under Figure 2-7.
Moved placement of Table 2-6 and Table 2-7. Removed mention of Winbond’s SPI flash from Table 2-6. Changed
the first paragraph of CSI_B. Revised the RDWR_B section. In Note 1 under Figure 2-9, indicated that CSI_B cannot
be deasserted during the sync word. In Figure 2-12, changed 3.3V to VCCO_2. In Master BPI Configuration
Interface, updated the devices and packages that do not support the BPI interface; indicated A22 and A23 are not
in the CSG225 package; and added “top boot” to parallel NOR flash. In Table 2-7, removed the reference to the
BYTE# port in the HDC and LDC descriptions. In Figure 2-20, connected VCCO_1 and BYTE# to VCCO_1 and
added pull-up resistors to FCS_B, FOE_B, and FWE_B. Added Note 5 and 6 after Figure 2-20. Removed note about
CCLK being free from reflections to avoid double clocking in Board Layout for Configuration Clock (CCLK).
Chapter 4: Changed the last sentence in the first paragraph of ICAP_SPARTAN6. In the first paragraph of
STARTUP_SPARTAN6, changed EOS to configuration.
Chapter 5: Throughout this chapter, included waiting for PLLs to lock along with DCMs. In Table 5-1, added rows
for VFS, VBATT, and RFUSE; added Note 4; and changed pin name CMP_CS_B to CMPCS_B and updated its
description. Transferred FPGA I/O Pin Settings During Configuration from Chapter 1 and Reserving
Dual-Purpose Configuration Pins (Persist) from Chapter 2. In FPGA I/O Pin Settings During Configuration,
indicated that all user I/Os have optional pull-ups. Added Note 3 to Table 5-2. In Table 5-3, added Note 1 and
revised Note 2. In Table 5-5, changed the values in the “Total Number of Configuration Bits” column. In Device
Power-Up (Step 1), changed the second and third paragraphs and added -4 to the fourth paragraph. In Table 5-11,
added VFS and VCCO_5; changed VFS and VBATT descriptions; deleted “Value” and “Units” columns; added Notes
1, 4, and 5; and updated Note 2 to add VFS. Changed the second paragraph following Figure 5-4. Changed the last
paragraph in Check Device ID (Step 5). Added clocking specifics for the sequential state machine in the first
paragraph of Startup (Step 8). In Table 5-17, revised the DCM_LOCK description and moved Note 3 text to Startup
(Step 8). Added new paragraph after Table 5-17. In Loading the Encryption Key, clarified the type of programming
cable and rephrased the last sentence in the last paragraph. Changed the fourth and fifth paragraphs of Loading
Encrypted Bitstreams. Added the eFUSE section. In Table 5-22, changed the values under the “Total Bits” column.
Revised the GENERAL2 and GENERAL4 descriptions in Table 5-30. In Boot History Status Register (BOOTSTS),
changed the description of how this register is reset. In Table 5-48, changed bits 2 and 8 to “Reserved.” In
Figure 5-16, added a buffer between DOUT and DIN. Added sentence prior to Figure 5-16 about the new buffer.
Added the Bitstream Compression section.
Chapter 6: Changed the first paragraph. In Table 6-1, changed the “Configuration Data [15:0]” values for Steps 6
and 12. Changed the step numbers in the first sentence under Table 6-1. Added a sentence on SelectMAP data
ordering to the paragraph preceding Figure 6-2. In Figure 6-2, changed the timing diagram.
Chapter 7: In MultiBoot Overview, changed the last paragraph and removed the caution statement. Made
numerous changes to Fallback Behavior. In Reboot Using ICAP_SPARTAN6, changed “next bitstream” to
“MultiBoot bitstream” in the first paragraph and changed step 2 in the sequence of commands. In Table 7-1,
swapped the values of the Sync words, made changes in the “Explanation” column, and added Note 1 and Note
2. In Watchdog Timer, changed the first sentence in the first three paragraphs.
Chapter 8: On page 138, changed slice to frame in the first bullet, revised the fourth bullet, and removed the bullet
about transceiver DRPs not being masked.
Chapter 9: Changed Table 9-1.
UG380 (v2.7) October 29, 2014 www.xilinx.com Spartan-6 FPGA Configuration User Guide
Date Version Revision
02/22/2010 2.1 Changed the supported encryption data widths to x1 and x8 in the Bitstream Encryption section.
In the third paragraph of Loading Encrypted Bitstreams, clarified that the configuration
bitstream can be delivered in an x1 or x8 data width configuration mode, and indicated that SPI
x2 and x4, BPI x16, and SelectMAP x16 bus widths are not supported for encrypted bitstreams.
07/30/2010 2.2 Changed the value of pull-up resistors connected between DONE and VCCO_2 from 2.4 kΩ to
330Ω in Figure 2-2, Figure 2-3, Figure 2-6, Figure 2-7, Figure 2-12, and Figure 2-20. Changed the
value of the pull-up the resistor connected between INIT_B and VCCO_2 from 2.4 kΩ to 4.7 kΩ
in Figure 2-3 and Figure 2-6. Added ports RDWR_B and CSI_B to FPGA (tied to ground) in
Figure 2-6. Added second and third paragraphs about configuration clock frequency to Master
Modes. Added introductory sentence and two bullets about SelectMAP considerations to
SelectMAP Configuration Interface section. Added sentence about VREF to description of
RDWR_B in Table 2-3. Added sentence to first paragraph of CSI_B section indicating that CSI_B
should not be deasserted in the middle of a sync word. Reformatted the first paragraph in Master
BPI Configuration Interface into one paragraph followed by bullets, and added the bullet
indicating the removal of the BPI configuration interface from the XC6SLX25/T devices.
Changed “VCCO_0” to “VCCO_2” in Figure 2-22, Figure 2-23, and Figure 2-24. Changed second
paragraph in Providing Power section. Added “if Suspend feature is not used” and Note 4 to
Table 5-2. Changed table reference from Table 5-4 to Table 5-3 in first paragraph of Configuration
Pins section. Added “Dual-Purpose” to Table 5-3 title. Changed “LVCMOS25 8 mA SLOW” to
“LVCMOS 8 mA SLOW” in second paragraph of Device Power-Up (Step 1). Changed CCLK
Output Delay symbol in Table 5-12 from “TICCK” to “TBPIICCK or TSPIICCK” and added Note 2.
Changed “VPOR” to “the recommended operating voltage” in the paragraph following
Figure 5-4. Added fourth paragraph about startup waiting for DCMs and PLLs by assigning
the LCK_CYCLE option to Startup (Step 8). Removed “DSP” from title in Figure 5-13. Added
third bullet to Bitstream Compression section under overall benefits on page 113. Changed
“warm boot” to “MultiBoot” in first paragraph of Fallback Behavior section. Added sentence
indicating how to generate the bitstream automatically to fourth paragraph of Fallback Behavior
section. Added last sentence to Note 2 in Table 7-1. Changed “DCM_WAIT” to “LCK_Cycle” in
Additional Memory Space Required for LCK_Cycle section title and text. Removed “66” from
the possible values listed in the description for the POST_CRC_FREQ constraint. Removed NCF
syntax examples from the Syntax Examples section. Changed “BPI UP” to “BPI” in Figure 9-4.
Changed “BPI UP, or BPI Down” to “or BPI“ in Note 7 (Notes relevant to Figure 9-4).
07/06/2011 2.3 Updated description of INIT_B in Table 2-2 and Table 2-3. Added VCCO_2 of 3.3V to Note 16 on
page 27, Note 9 on page 29, Note 18 on page 33, and Note 12 on page 35. Added a sentence about
deasserting the CSI_B signal to Non-Continuous SelectMAP Data Loading. Updated After
Configuration entries for CSO_B and INIT_B in Table 2-6. Updated Notes 11 and 16 on page 43.
Updated description of INIT_B in Table 2-7. Updated Note 2 on page 50, and Notes 11 and 18 on
page 51. Updated External Configuration Clock for Master Modes. Updated guideline about
configuration in master mode in Board Layout for Configuration Clock (CCLK).
Updated Note 2 after Table 5-3. In Table 5-5, updated Total Number of Configuration Bits
column and added Note 2. Removed -4 speed grade from paragraph before Table 5-11. Added
paragraph about external master clock pin after Table 5-17. Updated first paragraph of Bitstream
Encryption. Updated RFUSE Pin. Changed bitstream length from 32 to 16 and added list of three
types of configuration frames to Configuration Memory Frames. Removed Total Bits column
from Table 5-22. Updated Type 2 Packet. Changed direction of RDBK_SIGN in Table 5-30 from
R/W to W. Updated description of CRC_EXTSTAT_DISABLE in Table 5-34. Replaced type3
(PCFG) with type2 (IOB) in Frame Length Register. Added new paragraph before Table 5-41.
Updated Boot History Status Register (BOOTSTS) and Bitstream Compression.
Added readback limitations to Preparing a Design for Readback. Updated steps 7 and 8 in
Table 6-2. Removed AES encryption from MultiBoot Overview. Added Note 3 to Table 7-4.
Updated first sentence in second paragraph of page 137. Updated first paragraph of
POST_CRC_INIT_FLAG.
Updated Startup Sequencing (GTS).
Spartan-6 FPGA Configuration User Guide www.xilinx.com UG380 (v2.7) October 29, 2014
Date Version Revision
06/27/2012 2.4 Updated bullet about VBATT being tied to VCCAUX or ground in notes 8, 17, 11, 15, and 17 after
Figure 2-3, Figure 2-6, Figure 2-7, Figure 2-12, and Figure 2-20 respectively. Updated notes after
Figure 2-13. Updated references in SPI Configuration Interface. Updated Master SPI Dual (x2)
and Quad (x4) Read Commands. In Master BPI Configuration Interface, updated support of
Spartan-6 FPGAs for parallel NOR flash from 512 Mb to 1 Gb and for iMPACT software to
program bottom boot parallel NOR flash. Updated note 2 after Figure 2-20. Replaced LVCMOS25
with LVCMOS in External Configuration Clock for Master Modes. Updated Board Layout for
Configuration Clock (CCLK).
Updated last paragraph of Providing Power.
Updated note 1 after Table 5-1. Updated descriptions of VBATT and VFS in Table 5-11. Added note
2 to Figure 5-4. Removed sentence about ID error from Check Device ID (Step 5). Updated
description of GTS startup setting after Table 5-16. Added note 3 to Table 5-17. Added SPI x1 to
Loading Encrypted Bitstreams. Updated first row of Table 5-21. Updated FAR_MAJ Register and
Boot History Status Register (BOOTSTS).
Updated first paragraph of Configuration Memory Read Procedure (SelectMAP).
Updated first paragraph of Status Register for Fallback and IPROG Reconfiguration.
Added CRC Masking. Added POST_CRC_SOURCE to Post_CRC Constraints.
Added paragraph about using SPI in a serial daisy-chain configuration to Serial Daisy-Chains.
Updated SelectMAP Reconfiguration.
01/23/2013 2.5 Updated first bullet in sixth paragraph in Overview. Added Vccaux Level. Removed “XC” from
some device references throughout the user guide. Updated Figure 2-2, Figure 2-6, Figure 2-21,
Figure 5-15, Figure 8-2, Figure 9-1, Figure 9-2, Figure 9-4, and Figure 9-5. Updated second
paragraph in SelectMAP Configuration Interface. Updated second paragraph in
Non-Continuous SelectMAP Data Loading. Updated sixth paragraph in Master BPI
Configuration Interface. Updated Table 2-7, Table 4-3, Table 5-2, Table 5-19, Table 5-50, Table 6-2,
Table 6-5, Table 6-6, and Table 10-4. Added Determining the Maximum Configuration Clock
Frequency. Updated first paragraph after Table 2-8. Updated third paragraph in Board Layout
for Configuration Clock (CCLK). Updated first paragraph in FPGA I/O Pin Settings During
Configuration. Updated pin GCLK0 in Table 5-3. Updated second paragraph in Device
Power-Up (Step 1). Updated first paragraph in Cyclic Redundancy Check (Step 7). Updated first
paragraph in Startup (Step 8). Updated first and second paragraphs and Table 5-22 in
Configuration Memory Frames. Updated third paragraph in Frame Length Register. Updated
first paragraph in Identifier Memory Specifications. Updated Steps 3 and 6 in Configuration
Register Read Procedure (SelectMAP). Updated Step 13 in Configuration Memory Read
Procedure (SelectMAP). Updated first and sixth paragraphs following Figure 7-1. Updated first
paragraph and Table 7-4 in Status Register for Fallback and IPROG Reconfiguration. Added
Caution after first paragraph in Chapter 8, Readback CRC. Updated first and third bullet and
note in CRC Masking. Changed “dynamic” to “distributed” in CLB with LUT Configured as
Distributed RAM or Shift Register and in CLBs Near Top or Bottom IOI DRP with LUTs
Configured as Distributed RAM. Added second paragraph to Bit Sequence Boundary-Scan
Register.
06/20/2014 2.6 Updated first paragraph of CSI_B. Updated Figure 2-20. Updated explanation of O[15:0] in
Table 4-2. Updated SUSPEND pin in Table 5-2. Added Caution statement for Bit 16 in Table 5-19.
Added paragraph to the end of FPGA I/O Pin Settings During Configuration. Updated first
paragraph of Bitstream Overview. Updated Device Power-Up (Step 1). Updated second
paragraph of Bitstream Encryption. Updated second paragraph of Loading the Encryption Key.
Updated numbered procedure in Configuration Memory Read Procedure (SelectMAP). Added
explanation on how to carry out testing when the IOB is configured with an invertor in TAP
Controller and Architecture.
10/29/2014 2.7 Updated Steps 5 and 12 in Configuration Memory Read Procedure (SelectMAP). Updated Step
12 in Table 6-2. Minor update to Figure 10-3.
UG380 (v2.7) October 29, 2014 www.xilinx.com Spartan-6 FPGA Configuration User Guide
Spartan-6 FPGA Configuration User Guide www.xilinx.com UG380 (v2.7) October 29, 2014
Table of Contents
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Guide Contents
This manual contains the following chapters:
• Chapter 1, Configuration Overview
• Chapter 2, Configuration Interface Basics
• Chapter 3, Boundary-Scan and JTAG Configuration
• Chapter 4, User Primitives
• Chapter 5, Configuration Details
• Chapter 6, Readback and Configuration Verification
• Chapter 7, Reconfiguration and MultiBoot
• Chapter 8, Readback CRC
• Chapter 9, Advanced Configuration Interfaces
• Chapter 10, Advanced JTAG Configurations
Additional Documentation
The following documents are also available for download at:
http://www.xilinx.com/support/documentation/spartan-6.htm.
• Spartan-6 Family Overview
This overview outlines the features and product selection of the Spartan-6 family.
• Spartan-6 FPGA Data Sheet: DC and Switching Characteristics
This data sheet contains the DC and Switching Characteristic specifications for the
Spartan-6 family.
• Spartan-6 FPGA Packaging and Pinout Specifications
This specification includes the tables for device/package combinations and maximum
I/Os, pin definitions, pinout tables, pinout diagrams, mechanical drawings, and
thermal specifications.
• Spartan-6 FPGA SelectIO Resources User Guide
This guide describes the SelectIO™ resources available in all Spartan-6 devices.
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.
Configuration Overview
Overview
Spartan®-6 FPGAs are configured by loading application-specific configuration data—a
bitstream—into internal memory. Spartan-6 FPGAs can load themselves from an external
nonvolatile memory device or they can be configured by an external smart source, such as
a microprocessor, DSP processor, microcontroller, PC, or board tester. In any case, there are
two general configuration datapaths. The first is the serial datapath that is used to
minimize the device pin requirements. The second datapath is the 8- or 16-bit datapath
used for higher performance or access (or link) to industry-standard interfaces, ideal for
external data sources like processors, or x8- or x16-parallel flash memory.
Like processors and processor peripherals, Xilinx® FPGAs can be reprogrammed, in
system, on demand, an unlimited number of times.
Because Xilinx FPGA configuration data is stored in CMOS configuration latches (CCLs), it
must be reconfigured after it is powered down. The bitstream is loaded each time into the
device through special configuration pins. These configuration pins serve as the interface
for a number of different configuration modes:
• JTAG configuration mode
• Master Serial/SPI configuration mode (x1, x2, and x4)
• Slave Serial configuration mode
• Master SelectMAP/BPI configuration mode (x8 and x16)
• Slave SelectMAP configuration mode (x8 and x16)
The configuration modes are explained in detail in Chapter 2, Configuration Interface
Basics.
The specific configuration mode is selected by setting the appropriate level on the mode
input pins M[1:0]. The M1 and M0 mode pins should be set at a constant DC voltage level,
either through pull-up or pull-down resistors (2.4 kΩ), or tied directly to ground or
VCCO_2. The mode pins should not be toggled during or before configuration but can be
toggled after. See Chapter 2, Configuration Interface Basics, for the mode pin setting
options.
The terms Master and Slave refer to the direction of the configuration clock (CCLK):
• In Master configuration modes, the Spartan-6 device drives CCLK from an internal
oscillator by default or optional external master clock source GCLK0/USERCCLK. To
select the desired frequency, the BitGen -g ConfigRate option is used for the
internal oscillator. The default is 2 MHz. The CCLK output frequency varies with
process, voltage, and temperature. The data sheet FMCCKTOL specification defines the
frequency tolerance. A frequency tolerance of ± 50% means that a ConfigRate setting
of 10 could generate a CCLK rate of between 5 MHz and 15 MHz.The BitGen section
of UG628, Command Line Tools User Guide provides more information. After
configuration, the oscillator is turned OFF unless one of these conditions is met:
• SEU detection is used.
• CFGMCLK in STARTUP primitive is connected.
• The internal clock source is selected in SUSPEND mode (the oscillator is on only
during the WAKEUP sequence).
• Encryption is enabled.
CCLK is a dual-purpose pin. Before configuration, there is no on-chip pull-up. After
configuration, it is a user pin unless PERSIST is used.
• In Slave configuration modes, CCLK is an input.
The JTAG/boundary-scan configuration interface is always available, regardless of the
mode pin settings.
Design Considerations
To make an efficient system, it is important to consider which FPGA configuration mode
best matches the system’s requirements. Each configuration mode dedicates certain FPGA
pins and can temporarily use other pins during configuration only. These non-dedicated
pins are then released for general use when configuration is completed. See Chapter 5,
Configuration Details.
Similarly, the configuration mode can place voltage restrictions on some FPGA I/O banks.
Several different configuration options are available, and while the options are flexible,
there is often an optimal solution for each system. Several topics must be considered when
choosing the best configuration option: overall setup, speed, cost, and complexity.
Master Modes
The self-loading FPGA configuration modes, generically called Master modes, as shown in
Figure 1-1. The Master modes leverage various types of nonvolatile memories to store the
FPGA configuration information. In Master mode, the FPGA configuration bitstream
typically resides in nonvolatile memory on the same board, generally external to the
FPGA. The FPGA provides a configuration clock signal called CCLK (the source is from
either an internal oscillator or an optional external master clock source
GCLK0/USERCCLK), and the FPGA controls the configuration process.
The configuration clock frequency is user controllable in Master modes, using the BitGen
-g ConfigRate option. The default is 2 MHz.
Regardless of what option the user selects, the configuration clock in Master mode initially
starts at 1 MHz. As the FPGA clocks in the bitstream, it reads in the configuration rate
setting and then changes accordingly.
Serial Byte-Wide
Xilinx
Platform Flash Parallel NOR
Spartan-6 FPGA PROM Spartan-6 FPGA Flash
8/16
SPI Serial D[7:0] DATA[7:0]
Flash D[15:8] DATA[15:8]
Spartan-6 FPGA
A[n:0] ADDR[n:0]
MOSI DATA_IN n+1
DIN DATA_OUT (c) Master SelectMAP/BPI Mode
CSO_B SELECT with Parallel NOR Flash
CCLK CLOCK
Xilinx XCFxxP
Platform Flash
(b) Master Serial/SPI Mode with SPI Flash Spartan-6 FPGA(1) PROM
8
D[7:0] D[7:0]
XCFxxP
CCLK CLK
Note: The remaining Spartan-6 FPGAs support XCFxxP Platform Flash PROMs via Master SelectMAP mode.
The master serial and the master SPI configuration modes are combined and use the same mode selection.
The master SelectMAP and the master BPI configuration modes are combined and use the same mode selection.
UG380_c1_01_060109
Slave Modes
The externally controlled loading FPGA configuration modes, generically called Slave
modes, are also available with either a serial or byte-wide datapath. In Slave mode, an
external “intelligent agent” such as a processor, microcontroller, DSP processor, or tester
downloads the configuration image into the FPGA, as shown in Figure 1-2. The advantage
of the Slave configuration modes is that the FPGA bitstream can reside almost anywhere in
the overall system. The bitstream can reside in flash, onboard, along with the host
processor's code. It can reside on a hard disk. It can originate somewhere over a network
connection or another type of bridge connection.
Serial SelectMAP
Processor, Processor, Spartan-6
Microcontroller Spartan-6 FPGA Microcontroller FPGA
8,16
DATA[15:8] D[15:8]
SERIAL_DATA DIN
DATA[7:0] D[7:0]
CLOCK CCLK SELECT CSI_B
READ/WRITE RDWR_B
(a) Slave Serial Mode
CLOCK CCLK
JTAG Tester,
Processor, (c) Slave SelectMAP Mode
Microcontroller Spartan-6 FPGA
DATA_OUT TDI
MODE_SELECT TMS
CLOCK TCK
DATA_IN TDO
(b) JTAG
UG380_c1_02_051109
The Slave SelectMAP mode is a simple x8- or x16-bit-wide processor peripheral interface,
including a chip-select input and a read/write control input. The Slave Serial mode is
extremely simple, consisting only of a clock and serial data input.
JTAG Connection
The four-wire JTAG interface is common on board testers and debugging hardware. In fact,
the Xilinx programming cables for Spartan-6 FPGAs, listed here, use the JTAG interface for
prototype download and debugging. Regardless of the configuration mode ultimately
used in the application, it is best to also include a JTAG configuration path for easy design
development. Also see Chapter 3, Boundary-Scan and JTAG Configuration.
• Platform Cable USB II
http://www.xilinx.com/products/devkits/HW-USB-II-G.htm
• Parallel Cable IV
http://www.xilinx.com/products/devkits/HW-PC4.htm
and broad interoperability. It is important to consider the link activation time in the PCI
application and ensure the FPGA can complete configuration during the specified time.
Many third-party flash vendors do not meet these specific time constraints.
Vccaux Level
The Vccaux level is programmable as either 2.5V (default) or 3.3V. The user specifies the
value in the tools with the CONFIG VCCAUX=2.5 or CONFIG VCCAUX=3.3 constraint.
Production Lifetime
An application’s production lifetime should be considered. Commodity memories
generally have a shorter production lifetime than the proprietary Xilinx Platform Flash
PROMs. For example, if an industrial application is built that will be manufactured for five
years or more, Xilinx Platform Flash PROMs provide better long-term availability.
Products with shorter production lifetimes can benefit from the multi-vendor pricing and
multi-sourcing of commodity memories.
Configuration Factors
Many factors determine which configuration solution is optimal for a system and many
details need to be considered. Proper configuration mitigates problems later in the design
cycle.
Designers need to understand the difference between dedicated configuration pins and
reusable post configuration pins. Details can be found in the configuration details section.
Other issues that need to be considered are Data File formats and bitstream sizes. The size
of the bitstream is directly affected by the device size and there are several formats in
which the bitstream can be created.
The FPGA goes through certain sequences during the configuration process, from clearing
internal memory to activating the I/Os. This process is called the configuration sequence.
Designers should be aware of this sequence and its subsequences to understand the timing
from power-on to completed FPGA configuration and start-up.
The Spartan-6 LX75, LX75T, LX100, LX100T, LX150, and LX150T FPGAs also have
enhanced security features such as AES encryption. This feature is very useful in
protecting bitstream theft.
More details can be found in Chapter 5, Configuration Details.
Notes:
1. Utilizing dual and quad SPI modes.
2. Parallel configuration mode bus is auto-detected by the configuration logic.
3. Spartan-6 devices also have a dedicated four-wire JTAG (IEEE Std 1149.1) port that is always available
to the FPGA regardless of the mode pin settings.
4. Default setting due to internal pull-up termination on Mode pins.
JTAG Interface
While there is no specific mode for JTAG, the JTAG interface is available as a configuration
interface any time the device is powered. For more information, refer to Chapter 3,
Boundary-Scan and JTAG Configuration.
M[1:0]
DOUT
DIN
INIT_B
PROGRAM_B
DONE
CCLK
UG380_c2_01_042909
Master Serial
The Master Serial configuration is designed so that the FPGA can be configured from a
Xilinx® Platform Flash PROM, as shown in Figure 2-2.
X-Ref Target - Figure 2-2
VCCO_0
VCCINT
VCCO_1
HSWAPEN VCCO_0
VCCO_2
VCCO_1 VCCINT
DOUT VCCO
VCCO_2
Platform Flash
VCCO_2 XCFxxS
M1 VCCO_2
VCCO_2 M0 330Ω CEO
DONE CE
PROGRAM_B
DIN D0
VCCO_2
Spartan-6 VCCO_2
4.7 kΩ FPGA CSO_B VCCO_2
MOSI 4.7 kΩ
CCLK CLK
INIT_B OE/RESET
1 VCCAUX VCCAUX
VCCJ VCCAUX
VREF VCCAUX
TMS
Xilinx Cable Header
VFS
TMS
(JTAG Interface)
14
PROGRAM_B
Refer to the Notes following this figure for related information. UG380_c2_02_011513
5. The Spartan-6 FPGA VCCO_2 supply input and the Platform Flash PROM VCCO
supply input must be the same voltage.
6. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
7. The INIT_B pin is a bidirectional, open-drain pin. An external pull-up resistor is
recommended.
8. The BitGen startup clock setting must be set for CCLK for serial configuration, which
is done by default in the software. See UG628, Command Line Tools User Guide for
details.
9. The PROM in this diagram represents one or more Xilinx PROMs. Multiple Xilinx
PROMs can be cascaded to increase the overall configuration storage capacity, further
described in UG161, Platform Flash PROM User Guide.
10. The BIT file must be reformatted into a PROM file before it can be stored on the Xilinx
PROM. Refer to the Generating PROM Files, page 77, which outlines how to use
iMPACT software to generate the required files.
11. On some Xilinx PROMs, the reset polarity is programmable. RESET should be
configured as active Low when using this setup.
12. Master Serial mode configuration is specific to the Platform Flash XCFS and XCFP
PROM only.
13. Unused configuration pins such as CSI_B and RDWR_B can be left floating or tied to
GND because they are not connected to any configuration logic in this mode. CSI_B
and RDWR_B are dual-purpose pins.
14. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
15. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or can be left unconnected.
16. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
17. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
VCCINT VCCO_0
HSWAPEN VCCO_0
VCCO_1
VCCO_1
DOUT
VCCO_2
VCCO_2
VCC
VCCO_2
Spartan-6 VCCO_2
VCCO_2 FPGA
Microprocessor M1 CSO_B
4.7 kΩ
or CPLD M0 MOSI
Configuration PROGRAM_B
Memory
Source CLOCK CCLK DONE
SERIAL_OUT DIN
PROGRAM_B INIT_B
VCCAUX
DONE
VCCAUX
INIT_B VFS
TDI
GND TMS VFS
VBATT
TCK
VBATT VCCO_2
SUSPEND TDO
GND
4.7 k
330
PROGRAM_B
1 VCCAUX
VREF
TMS
Xilinx Cable Header
(JTAG Interface)
TCK
TDO
TDI
N.C.
N.C.
14
3. The CCLK net requires Thevenin parallel termination. For more details, see Board
Layout for Configuration Clock (CCLK), page 54.
4. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
5. The INIT_B pin is a bidirectional, open-drain pin. An external pull-up resistor is
recommended.
6. The SPI control pins, CSO_B and MOSI, toggle during serial configuration.
7. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
8. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or left unconnected.
9. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
10. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
PROGRAM_B
INIT_B
Master CLK begins here
CCLK
Master DOUT
Data bits clocked out on falling edge of CCLK
DONE
UG380_c2_04_0121012
M[1:0]
D[15:0]
INIT_B
PROGRAM_B
CSO_B
RDWR_B
CSI_B
DONE
CCLK
UG380_c2_05_042909
VCCINT
VCCO_0 VCCINT
VCCO_2
HSWAPEN VCCO_0 VCCO_1
VCCO
VCCO_1
FCS_B
BUSY CEO
FOE_B
Spartan-6 FWE_B
FPGA Platform Flash
LDC XCFxxP
A25
A24
A[23:0] REV_SEL1
REV_SEL0
DOUT/BUSY
EN_EXT_SEL
VCCO_2
RDWR_B VCCO_2
4.7 kΩ
CSI_B VCCO_2 CF
M1
D[7:0] D[7:0]
M0 VCCO_2
330Ω
DONE CE
VCCO_2
4.7 kΩ CCLK CLK CLKOUT
VCCO_2
PROGRAM_B CSO_B
4.7 kΩ
VCCAUX VCCJ
TMS
(JTAG Interface)
14
PROGRAM_B
2. The CCLK net requires Thevenin parallel termination. For more details, see Board
Layout for Configuration Clock (CCLK), page 54.
3. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
4. A series resistor should be considered for the datapath from the flash to the FPGA to
minimize overshoot. The proper resistor value can be determined from simulation.
5. The INIT_B pin is a bidirectional, open-drain pin. An external pull-up resistor is
recommended.
6. The BitGen startup clock setting must be set for CCLK for SelectMAP configuration.
7. The PROM in this diagram represents one or more Xilinx PROMs. Multiple PROMs
can be cascaded to increase the overall configuration storage capacity.
8. The BIT file must be reformatted into a PROM file before it can be stored on the
PROM. Refer to the Generating PROM Files, page 77.
9. On some Xilinx PROMs, the reset polarity is programmable. RESET should be
configured as active Low when using this setup.
10. The Xilinx PROM must be set for parallel mode. This mode is not available for all
devices.
11. When configuring a Spartan-6 device in SelectMAP mode from a Xilinx configuration
PROM, the RDWR_B and CSI_B signals can be tied Low (see SelectMAP Data Loading,
page 35).
12. The D bus can be x8 or x16 for Master SelectMAP configuration. The maximum data
width for XCFxxP is x8.
13. Platform Flash PROM SelectMAP configuration is specific to the Platform Flash XCFP
PROM only. The Platform Flash XCFS PROM only supports serial configuration
modes.
14. The address bus A[25:0] along with the BUSY, FOE_B, FCS_B, and FWE_B pins toggle
during configuration. The system should be able to handle activity on these dual-
purpose pins during the configuration process.
15. The Spartan-6 FPGA VCCO_2 supply input and the Platform Flash PROM VCCO
supply input must be the same voltage.
16. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
17. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or left unconnected.
18. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
19. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
VCCINT
HSWAPEN VCCO _ 0 VCCO _0
4.7 kΩ
Configuration D[15:0] D[15:0] BUSY
Memory
Source SELECT CSI_B CSO_B
READ/WRITE RDWR _B INIT _ B
CLOCK CCLK
PROGRAM_B
PROGRAM_B DONE VCCAUX
DONE
INIT_B TMS VCCAUX
VFS
GND TCK
VFS
VBATT
VCCO_2
TDI VBATT
SUSPEND TDO
4.7 kΩ
GND
330Ω
.
PROGRAM_B
1 VCCAUX
VREF
Xilin x Cable Header
(JTAG Interface)
TMS
TCK
TDO
TDI
N.C.
N.C.
14
Figure 2-7: Single-Device Slave SelectMAP Configuration from Microprocessor and CPLD
3. For more details on CCLK termination, see Board Layout for Configuration Clock
(CCLK), page 54.
4. This schematic is from XAPP502, Using a Microprocessor to Configure Xilinx FPGAs via
Slave Serial or SelectMAP Mode. It is one of many possible implementations.
5. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
6. The INIT_B pin is a bidirectional, open-drain pin. An external pull-up resistor is
recommended.
7. The BitGen startup clock setting must be set for CCLK for SelectMAP configuration.
8. The CSI_B and RDWR_B signals can be tied to ground if only one FPGA is going to be
configured and readback is not needed.
9. The D[0:n] bus can be x8 or x16 for Slave SelectMAP configuration.
10. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
11. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or left unconnected.
12. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
13. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
CSI_B
The Chip Select input (CSI_B) enables the SelectMAP bus. CSI_B should not be deasserted
in the middle of a sync word. When CSI_B is High, the Spartan-6 device ignores the
SelectMAP interface, neither registering any inputs nor driving any outputs. D[0:n] is
placed in a High-Z state, and RDWR_B is ignored.
• If CSI_B = 0, the device's SelectMAP interface is enabled.
• If CSI_B = 1, the device's SelectMAP interface is disabled.
For a multiple device SelectMAP configuration, refer to Chapter 9, Advanced
Configuration Interfaces.
If only one device is being configured through the SelectMAP interface and readback is not
required, or if ganged SelectMAP configuration is used, the CSI_B signal can be tied to
ground, as illustrated in Chapter 9, Advanced Configuration Interfaces.
RDWR_B
RDWR_B is an input to the Spartan-6 device that controls whether the data pins are inputs
or outputs:
• If RDWR_B = 0, the data pins are inputs (writing to the FPGA).
• If RDWR_B = 1, the data pins are outputs (reading from the FPGA).
For configuration, RDWR_B must be set for write control (RDWR_B = 0). For readback,
RDWR_B must be set for read control (RDWR_B = 1) while CSI_B is deasserted. (For
details, refer to Chapter 6, Readback and Configuration Verification.) If readback is not
needed, RDWR_B can be tied to ground or used for debugging with SelectMAP ABORT.
The RDWR_B signal is ignored while CSI_B is deasserted. Read/write control of the
3-stating of the data pins is asynchronous. The FPGA actively drives SelectMAP data
without regard to CCLK if RDWR_B is set for read control (RDWR_B = 1, Readback) while
CSI_B is asserted. If RDWR_B is changed while CSI_B is still asserted, the FPGA
asynchronously detects the violation and drives the BUSY signal, indicating an ABORT.
The status register is not updated until the next rising CCLK edge (see SelectMAP ABORT,
page 153).
CCLK
All activity on the SelectMAP data bus is synchronous to CCLK. When RDWR_B is set for
write control (RDWR_B = 0, Configuration), the FPGA samples the SelectMAP data pins
on rising CCLK edges. When RDWR_B is set for read control (RDWR_B = 1, Readback),
the FPGA updates the SelectMAP data pins on rising CCLK edges.
In Slave SelectMAP mode, configuration can be paused by stopping CCLK (see Non-
Continuous SelectMAP Data Loading, page 37).
PROGRAM_B
(3)
INIT_B
CCLK
(1) (5) (11)
CSI_B
(2) (4) (12)
RDWR_B
(6) (7) (8) (9)
D[0:n] Byte 0 Byte 1 Byte n
(10)
DONE
UG380_c2_08_042909
PROGRAM_B
(2)
INIT_B
(4) (5) (6) (7) (8) (9) (10) (11) (12) (13)
CCLK
(3)
CSI_B
DATA[0:n]
(1)
RDWR_B
UG380_c2_09_042909
CCLK
(3)
CSI_B
(2)
RDWR_B
(1)
DATA[0:n] Byte 0 Byte 1 Byte n
UG380_c2_10_042909
1 1 1 1 1 1
x16 8 9 0 1 2 3 4 5 6 7
0 1 2 3 4 5
x8 0 1 2 3 4 5 6 7
M[1:0]
MOSI
DIN
CSO_B
INIT_B
DONE
PROGRAM_B
CCLK
UG380_c2_11_051909
HSWAPEN Input User I/O Pull-Up Control. Drive at valid level User I/O
When Low during configuration, enables throughout configuration.
pull-up resistors in all I/O pins to respective
I/O bank VCCO input.
0: Pull-ups during configuration
1: No pull-ups
MOSI/ Output/Input Master FPGA Serial Data Output and FPGA sends SPI flash User I/O
MISO[0]/ Master FPGA Serial Data Input. memory read commands
CSI_B Connect to the SPI Flash PROM’s Slave Data and starting address to the
Input pin. PROM’s serial data input.
CSO_B Output Master SPI Chip Select Output. If HSWAPEN_B = 1, User I/O. Drive CSO_B High
connect this signal to VCCO after configuration to disable
Active Low. Connect to the SPI flash
the SPI flash and reclaim
PROM’s Slave Select input. through pull-up resistor
MOSI, DIN, and CCLK pins.
externally.
Optionally reuse this pin,
MOSI, DIN, and CCLK to
continue communicating
with SPI flash.
CCLK Output Configuration Clock. Drive PROM’s clock input. User I/O. Drive High or Low
Generated by FPGA internal oscillator. if not used.
Connect to the SPI flash PROM’s Slave
Clock input.
DOUT Output Serial Data Output. Not used in single-FPGA User I/O
Used in multi-FPGA daisy-chain designs; DOUT is pulled up
configurations. and is not actively driving.
In a daisy-chain
configuration, this pin
connects to the DIN input of
the next FPGA in the chain.
INIT_B Open-Drain Initialization indicator. Active during User I/O if POST_CRC is not
Bidirectional Active Low. Goes Low at start of configuration. If SPI flash enabled. Use a pull-up
I/O configuration during initialization memory PROM requires more than resistor on INIT_B.
clearing process. Released at the end of 2 ms to awake after
memory clearing, where mode pins are powering on, hold INIT_B
sampled. Low until PROM is ready.
DONE Open-Drain FPGA Configuration Done. Low indicates that the Dedicated. Pulled High via
Bidirectional Low during configuration. Goes High when FPGA is not yet configured. external pull-up. When
I/O the FPGA successfully completes High, indicates that the
configuration. FPGA is successfully
configured.
PROGRAM_B Input Program FPGA. Must be High to allow Drive PROGRAM_B Low
Active Low. When asserted Low for 500 ns configuration to start. and release to reprogram
or longer, forces the FPGA to restart its FPGA. Hold PROGRAM_B
configuration process by clearing to force the FPGA I/O pins
configuration memory and resetting the into High-Z, allowing direct
DONE and INIT_B pins after PROGRAM_B programming access to SPI
returns High. flash PROM pins.
MISO[3:2] Input Master FPGA Serial Data Input and Slave Used only when using the User I/O
SPI data output. fast-read quad output
command.
VCCINT
VCCO_0
HSWAPEN
VCCO_0
VCCO_2
VCCO_2
4.7 kΩ
DOUT VCCO_1
VCCO_1
2.4 kΩ
VCCO_2
VCCO_2 VCC
MOSI D
M1 DIN Q
Numonyx
VCCO_2 M25Pxx
CSO_B S
SPI Flash
M0 CCLK C
Spartan-6 HOLD
VCCO_2
FPGA W
GND
INIT_B
PROGRAM_B VCCO_2
1 VCCAUX DONE
VCCAUX
4.7 kΩ
VREF
330Ω
Xilin x Cable Header
VCCAUX
(JTAG Interface)
TMS VFS
TMS
TCK VFS
TCK
TDO VBATT
TDI VBATT
TDI
N.C. SUSPEND TDO
N.C. GND
14
PROGRAM_B
Refer to the Notes following this figure for related information. UG380_c2_12_062510
8. There are additional pins on the SPI flash side, such as Write Protect and Hold. These
pins are not used in FPGA configuration (read only). But they should be tied off
appropriately according to the SPI vendor’s specification.
9. If HSWAPEN is left unconnected or tied High, a pull-up resistor is required for CSO_B.
10. The CCLK frequency is adjusted by using the BitGen option ConfigRate if the source
is the internal oscillator. If an external source is used, see External Configuration Clock
for Master Modes, page 54 for more details.
11. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended in general, but required when using the
indirect programming method using iMPACT. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
12. When the digital clock manager (DCM) or PLL lock wait is enabled before the DONE
release cycle during startup, the FPGA continues to clock in data until the startup wait
condition is met and DONE is released. See Required Data Spacing between MultiBoot
Images, page 136 for considerations specific to MultiBoot Configuration.
13. Figure 2-12 shows a Numonyx SPI flash device. Refer to the ISE software overview at
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/isehelp_start.htm
and navigate to the iMPACT help documentation (“Introduction to Indirect
Programming”) to see which devices are supported for indirect SPI configuration
using iMPACT.
14. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
15. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or left unconnected.
16. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
17. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
Spartan-6 FPGAs also support x4 configuration with SPI PROMs in Master Serial Mode.
See Figure 2-13.
X-Ref Target - Figure 2-13
Spartan-6 Winbond
Device W25Q SPI
CCLK CLK
CSO_B CS
MOSI/MISO[0] DI (bit0)
DIN/D0/MISO/MISO[1] DO (bit1)
MISO[2] WP (bit2)
MISO[3] HOLD (bit3)
UG380_c2_13_052009
complete list, see the URL for the ISE software overview at the beginning of SPI
Configuration Interface, page 40.
2. Software support for x4 requires the x4 capability enabled in BitGen
(-g: spi_buswidth:4).
3. The SPI device needs to be programmed with a specific register setting, which is done
in iMPACT software, to enable x4 output.
4. Figure 2-12 is used as a basis for the connections for x4 data width mode. The only
differences are the MISO[2] and MISO[3] connections. These two pins also require
pull-ups to VCCO_2.
Yes
Yes
Configure Device Sync Word in 512 Cycles?
Yes
No
No No
UG380_c2_14_011310
CSO_B
30
0 1 2 7 12 29 31 39 47
CCLK
UG380_c2_15_052009
CSO_B
30
1 2 7 12 29 31 63 71
CCLK
UG380_c2_16_052009
CSO_B
CCLK
MOSI/ Dummy
Read Command 24-Bit Address D6 D4 D2 D0
MISO[0] Byte (8 Bits)
DIN/ D7 D5 D3 D1
MISO[1]
Data Byte 1
UG380_c2_17_052009
Figure 2-17: Timing Diagram of Winbond SPI Dual-Read Bit Command (3Bh)
In x4 mode, the Fast-Read Quad Output (6Bh) instruction is issued and is similar to the
standard Fast Read (0Bh) instruction except that data is output on four data pins, instead
of just DO. This allows data to be transferred from the quad output at four times the rate of
standard SPI devices. The timing diagram of the Master Serial SPI configuration mode
using an SPI flash with quad read bit command (6Bh) is shown in Figure 2-18.
X-Ref Target - Figure 2-18
CSO_B
CCLK
MOSI/ Dummy
Read Command 24-Bit Address Byte (8 Bits) D4 D0 D4 D0
MISO[0]
DIN/ D5 D1 D5 D1
MISO[1]
MISO[2] D6 D2 D6 D2
MISO[3] D7 D3 D7 D3
D0–D7 Data Byte 1 This corresponds with the first two columns of data.
Next D0–D7 Data Byte 2 This corresponds with the last two columns of data.
UG380_c2_18_052009
Figure 2-18: Timing Diagram of Winbond SPI Quad-Read Bit Command (6Bh)
configuration procedure such that the SPI flash becomes ready before the start of the FPGA
configuration procedure. In general, the system design must consider the effect of the
power sequence, the power ramps, FPGA power-on reset timing, and SPI flash power-up
timing on the timing relationship between the start of FPGA configuration and the
readiness of the SPI flash. Check DS162, Spartan-6 FPGA Data Sheet: DC and Switching
Characteristics, for Spartan-6 FPGA power supply requirements and timing. Check the SPI
flash data sheet for the SPI flash power-up timing requirements.
One of the following system design approaches can ensure that the SPI flash is ready to
receive commands before the FPGA starts its configuration procedure:
• Control the sequence of the power supplies such that the SPI flash is certain to be
powered and ready for asynchronous reads before the FPGA begins its configuration
procedure.
• Hold the FPGA PROGRAM_B pin Low from power-up to delay the start of the FPGA
configuration procedure and release the PROGRAM_B pin to High after the SPI flash
is fully powered and is able to receive commands.
• Hold the FPGA INIT_B pin Low from power-up to delay the start of the FPGA
configuration procedure and release the INIT_B pin to High after the SPI flash
becomes ready to receive commands.
For more information on how to configure FPGAs with SPI flash and how to use iMPACT
software perform in-system SPI programming, see XAPP951, Configuring Xilinx FPGAs
with SPI Serial Flash.
through the Spartan-6 device to the flash device. For a list of supported BPI devices, refer
to the ISE software overview at
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/isehelp_start.htm and
navigate to the iMPACT help section “Introduction to Indirect Programming – SPI or BPI
Flash Memory.”
For more details see XAPP973, Indirect Programming of BPI PROMs with Virtex-5 FPGAs.
The FPGA drives up to 26 address lines to access the attached parallel flash. For
configuration, only async read mode is used, where the FPGA drives the address bus, and
the flash PROM drives back the bitstream data. Bus widths of x8 and x16 are supported. If
the parallel NOR flash supports both x8 and x16 data widths, it is necessary to tie the
BYTE# signal to the appropriate level for the desired width. Bus widths are auto detected,
as described in Sync Word/Bus Width Auto Detection, page 76.
In Master BPI mode when using a parallel NOR flash device, the CCLK output is not
connected to the parallel NOR flash device. However, flash data is still sampled on the
rising edge of CCLK. The address output is generated on the falling edge of CCLK. See
Board Layout for Configuration Clock (CCLK), page 54. The timing parameters related to
BPI use CCLK as a reference.
In Master BPI mode, the address starts at 0 and increments by 1 until the DONE pin is
asserted. If the address reaches the maximum value (26’h3FFFFFF) and configuration is
not done (DONE is not asserted), the counter wraps around and starts again from 0.
X-Ref Target - Figure 2-19
M[1:0] A[25:0]
D[15:0] CSO_B
INIT_B CCLK
HSWAPEN FCS_B
FOE_B
PROGRAM_B
FWE_B
DONE
UG380_c2_25_121109
VCCO_1
4.7 kΩ
4.7 kΩ
4.7 kΩ
VCCO_0
VCCINT
HSWAPEN VCCO_0 VCCO_1
VCCO_1 VCCO
FCS_B CE#
x8/x16
FOE_B OE#
Parallel NOR
FWE_B WE# Flash
A[25:0] A[n:0]
DOUT/BUSY VCCO_1
HDC
LDC BYTE#
D [15:8] D[15:8]
VCCO_2 VCCO_2 VCCO_2
D[7:0] D[7:0]
4.7 kΩ
M1
Spartan-6 FPGA GND
M0
PROGRAM_B
DONE VCCO_2
CCLK
CSO_B
4.7 kΩ
VCCAUX
330Ω
1 INIT_B
VREF
TMS VCCAUX
Xilinx Cable Header
TMS
(JTAG Interface)
TCK VCCAUX
TCK VFS
TDO
VFS
TDI VBATT
TDI
VBATT
N.C.
SUSPEND
N.C. TDO
GND
14
PROGRAM_B
6. A24 and A25 can be in I/O bank 5, depending on the device. Consult the pinout for
your selected device.
7. Sending a bitstream to the data pin follows the same bit-swapping rule as in
SelectMAP mode. See Parallel Bus Bit Order, page 79.
8. If flash programming is not required, FCS_B, FOE_B, and FWE_B can be tied off; that
is, DONE is connected to FCS_B, FOE_B is tied Low, and FWE_B is tied High.
9. The CCLK outputs are not used to connect to flash but are used to sample flash read
data during configuration. All timings are referenced to CCLK. The CCLK pin must
not be driven or tied High or Low.
10. If HSWAPEN is left unconnected or tied High, a pull-up resistor is required for FCS_B.
11. The DONE pin is by default an open-drain output with an internal pull-up. An
additional external pull-up is recommended in general, but required when using the
indirect programming method using iMPACT. The DONE pin has a programmable
active driver that can be enabled via the BitGen option -g DriveDone.
12. Required Data Spacing between MultiBoot Images, page 136 provides information on
when the DCM or PLL lock wait is turned on.
13. For details on how to daisy-chain FPGAs in BPI mode, see Chapter 9, Advanced
Configuration Interfaces.
14. The parallel NOR flash vendor data sheet should be referred to for details on the
specific flash signal connectivity. To prevent address misalignment, close attention
should be paid to the flash family address LSB for the byte/word mode used. Not all
flash families use the A0 as the address LSB.
15. The CCLK frequency is adjusted by using the BitGen option ConfigRate if the source
is the internal oscillator. If an external clock source is used, see External Configuration
Clock for Master Modes, page 54.
16. VFS is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is used for
eFUSE programming. See eFUSE, page 91 for more details.
17. VBATT is present in 6SLX75/T, 6SLX100/T, and 6SLX150/T devices, and is the power
source for AES key storage. If AES encryption is unused, VBATT can be tied to either
VCCAUX or ground, or left unconnected.
18. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be
either 2.5V or 3.3V.
19. The SUSPEND pin should be Low during power up and configuration. If the Suspend
feature is not used, the SUSPEND pin must be connected to ground.
CCLK
INIT_B
FCS_B
FOE_B
FWE_B
A[n:0] 0 1 2 3 n
D[n:0] D0 D1 D2 D3 Dn
DONE
UG380_c2_20_052109
• Hold the FPGA PROGRAM_B pin Low from power-up to delay the start of the FPGA
configuration procedure and release the PROGRAM_B pin to High after the parallel
NOR flash is fully powered and is able to perform asynchronous reads.
• Hold the FPGA INIT_B pin Low from power-up to delay the start of the FPGA
configuration procedure and release the INIT_B pin to High after the parallel NOR
flash becomes ready for asynchronous reads.
USERCCLK is a dual-purpose pin that can be used by the application as GCLK0 after the
configuration. To enable the external clock source during master mode configuration, the
ExtMasterCclk_en option in BitGen must be enabled. The USERCCLK frequency can be
divided down using the ExtMasterCclk_divide BitGen option. The allowable values
are 1 (default) and all even numbers between 2 and 1022. The I/O standard for the
USERCCLK is LVCMOS 8 mA slow slew rate. The configuration begins with the CCLK
generated by the FPGA internal oscillator. When the configuration clock register setting is
reached in the bitstream, the FPGA switches from the internal oscillator to the clock found
on USERCCLK (or divided down, as set by the BitGen option ExtMasterCclk_divide).
The clock multiplexer is designed to generate a glitchless output clock during the
transition. Care must be exercised when also using this clock output as an input to the
design. When the end of startup (EOS) completes, the I/O standard for this pin as specified
by the design is enabled. At this time, the input of this pin might glitch as the I/O changes
from the default I/O standard to the user-specified I/O standard.
• Terminate the end of the CCLK transmission line with a parallel termination of 100Ω
to VCCO and 100Ω to GND (the Thevenin equivalent of VCCO/2, and assuming a trace
characteristic impedance of 50Ω).
• After configuration in master mode, the CCLK pin is not driven unless it is used in the
user design. If unused in the design, it is recommended to drive this pin to a logic
level to prevent the pin from floating after configuration has completed.
Familiarity with the advantages and disadvantages of available termination techniques
helps the designer choose the best option for the target application. Refer to UG393,
Spartan-6 FPGA PCB Design and Pin Planning Guide, for detailed guidelines to determine
the appropriate topology for the intended application and detailed trade-offs. Figure 2-22
through Figure 2-24 show a few possible topologies for CCLK distribution. Because the
Master CCLK goes to high impedance at the end of the configuration sequence, the
examples using parallel termination can be less desirable than other termination options
because more power is dissipated. This trade-off must be weighed against other factors to
determine the optimal termination topography for an interface.
Figure 2-22 through Figure 2-25 show the recommended topologies for CCLK distribution.
Figure 2-22 shows the basic point-to-point topology for one CCLK driver (FPGA master)
and one CCLK receiver (PROM or FPGA slave).
X-Ref Target - Figure 2-22
CCLK CCLK
Output Input
Z0 (50Ω)
Z0 (50Ω)
VCCO_2
2 x Z0 (100Ω)
Figure 2-23 shows the basic multi-drop flyby topology for one CCLK driver and two CCLK
receivers. The stub at CCLK input 1 has a length constraint.
X-Ref Target - Figure 2-23
CCLK CCLK
Output Input 2
Z0 (50Ω) Z0 (50Ω)
Z0 (50Ω)
Z0 (50Ω)
Length < 8 mm
VCCO_2
CCLK 2 x Z0 (100Ω)
Input 1
2 x Z0 (100Ω)
UG380_c2_22_062510
Figure 2-24 shows the multi-drop flyby topology for one CCLK driver and more than two
CCLK receivers (four in this example). All CCLK inputs except input 4 have length
constraints.
X-Ref Target - Figure 2-24
CCLK CCLK
Output Input 4
length < 8 mm
length < 8 mm
Z0 (50Ω)
Z0 (50Ω)
Z0 (50Ω)
Z0 (50Ω)
VCCO_2
2 x Z0 (100Ω)
CCLK CCLK CCLK
Input 1 Input 2 Input 3
2 x Z0 (100Ω)
UG380_c2_23_062510
Figure 2-24: Multi-Drop: One CCLK Output, More Than Two CCLK Inputs
Figure 2-25 shows a star topology where the transmission line branches to the multiple
CCLK inputs. The branch point creates a significant impedance discontinuity. This
arrangement is Not Recommended.
X-Ref Target - Figure 2-25
CCLK
Input 1
Z0
Impedance
Discontinuity
CCLK
Output
Z0
CCLK
Input 2
Z0
UG380_c2_24_042909
TDO Out Pull-up(1) Test Data Out. This pin is the serial output for all JTAG instruction and
data registers.
The state of the TAP controller and the current instruction determine the
register (instruction or data) that feeds TDO for a specific operation. TDO
changes state on the falling edge of TCK and is only active during the
shifting of instructions or data through the device. TDO is an active
driver output.
TMS In Pull-up(1) Test Mode Select. This pin determines the sequence of states through the
TAP controller on the rising edge of TCK.
TMS has an internal resistive pull-up to provide a logic High if the pin is
not driven.
TCK In Pull-up(1) Test Clock. This pin is the JTAG Test Clock.
TCK sequences the TAP controller and the JTAG registers in the
Spartan-6 devices.
Notes:
1. All JTAG pins have internal pull-up resistors to VCCAUX before configuration. These internal pull-up resistors are active, regardless
of the mode selected. BitGen can be used to enable the pull-ups after configuration for all four mandatory pins. See UG628,
Command Line Tools User Guide for more information.
TMS
TDI
TTAPTCK TTCKTAP
TCK
TTCKTDO
JTAG Header
Spartan-6
FPGA
TDO TDO
TDI TDI
TMS TMS
TCK TCK
Device
UG380_c3_02_042909
JTAG Header
TDO
Spartan-6 Spartan-6 Spartan-6
FPGA FPGA FPGA
TDI TDI TDO TDI TDO TDI TDO
TMS TMS TMS TMS
TCK TCK TCK TCK
PROGRAM_B PROGRAM_B PROGRAM_B
If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be
tied High to a 330Ω resistor.
The devices in the JTAG chain are configured one at a time. The multiple device
configuration steps can be applied to any size chain as long as an excellent signal integrity
is maintained. The iMPACT software automatically discovers the devices in the chain,
starting from the one nearest to TDI coming from the JTAG header and the iMPACT
software.
JTAG inputs use the VCCAUX supply for JTAG operations.
Chapter 10, Advanced JTAG Configurations provides a detailed description of the various
TAP controller states, the JTAG instructions, and the architecture of the boundary-scan
chain.
For details on the boundary-scan instructions EXTEST, INTEST, and BYPASS, refer to the
IEEE Std 1149.1 and Chapter 10, Advanced JTAG Configurations.
For further information on the startup sequence, bitstream, and internal configuration
registers referenced here, refer to Chapter 5, Configuration Details and Chapter 10,
Advanced JTAG Configurations.
Design Considerations
Providing Power
To ensure proper power-on behavior, the guidelines in the Spartan-6 FPGA Data Sheet: DC
and Switching Characteristics must be followed. The power supplies should ramp
monotonically within the power supply ramp time range specified. All supply voltages
should be within the recommended operating ranges; any dips in VCCINT below VDRINT or
VCCAUX below VDRAUX can result in loss of configuration data.
VCCO_2 and sometimes VCCO_1 determine the I/O voltage for the configuration
interface (SPI, Serial, BPI, and SelectMAP). VCCAUX determines the I/O voltage for the
JTAG configuration pins. The voltage provided must be compatible with all configuration
interfaces that will be used
Unused serial transceivers have no effect on boundary-scan functionality and need not be
powered.
User Primitives
The configuration primitives described in this chapter are provided for users to access
FPGA configuration resources during or after FPGA configuration. For additional
information and instantiation templates, refer to UG615, Spartan-6 Libraries Guide for HDL
Designs.
BSCAN_SPARTAN6
JTAG is a standard four-pin interface: TCK, TMS, TDI, and TDO. Many applications are
built around this interface. The JTAG TAP controller is a dedicated state machine inside the
configuration logic. BSCAN_SPARTAN6 provides access between the JTAG TAP controller
and user logic in fabric. There are up to four instances of BSCAN_SPARTAN6 for each
device. Each instance of this design element can handle one JTAG USER instruction
(USER1 through USER4) as set with the JTAG_CHAIN attribute. To handle all four USER
instructions, four of these elements can be instantiated, and the JTAG_CHAIN attribute
must be set appropriately. Table 4-1 lists the BSCAN_SPARTAN6 port descriptions.
ICAP_SPARTAN6
The ICAP_SPARTAN6 primitive works similarly to the SelectMAP configuration interface
except it is on the fabric side, and ICAP has a separate read/write bus, as opposed to the
bidirectional bus in SelectMAP. ICAP also only supports x16 data width. The general
SelectMAP timing diagrams and the SelectMAP bitstream ordering information, as
described in SelectMAP Configuration Interface, page 30, are also applicable to ICAP. It
allows the user to access configuration registers and readback configuration data after
configuration is done.
ICAP data width is 16 bits for both input and output.
STARTUP_SPARTAN6
The STARTUP_SPARTAN6 primitive provides a fabric interface to allow users to control
some of global signals after configuration.
DNA_PORT
The DNA_PORT provides access to a dedicated shift register, which can be loaded with the
Device DNA data bits (unique ID) for a given Spartan®-6 device. In addition to shifting
out the DNA data bits, this component allows for the inclusion of supplemental data bits
for additional user data or allow for the DNA data to rollover (repeat DNA data after
initial data has been shifted out). This component is primarily used in conjunction with
other circuitry to build anti-cloning protection for the FPGA bitstream from possible theft.
The DNA_PORT component must be instantiated to be used in a design. The instantiation
template is found within the ISE® software. Project Navigator HDL templates. The
instance declaration must be placed within the code. All inputs and outputs must be
connected to the design to ensure proper operation.
To access the Device DNA data, the shift register must first be loaded by setting the
active-High READ signal for one clock cycle. After the shift register is loaded, the data can
be synchronously shifted out by enabling the active-High SHIFT input and capturing the
data from the DOUT output port. If desired, additional data can be appended to the end of
the 57-bit shift register by connecting the appropriate logic to the DIN port. If DNA data
rollover is desired, the DOUT port can be connected directly to the DIN port to allow for
the same data to be shifted out after completing the 57-bit shift operation. If no additional
data is necessary, the DIN port can be tied to a logic zero. The attribute SIM_DNA_VALUE
can optionally be set to allow for simulation of a possible DNA data sequence. By default,
the Device DNA data bits are all zeros in the simulation model.
SUSPEND_SYNC
The SUSPEND primitive extends the capabilities of the user to synchronize the design for
applications using the suspend mode. It uses a three-pin interface to allow synchronization
of the trigger to start the suspend mode, even when there are several clock domains
requiring synchronization. The three signals are: SREQ, SACK, and CLK.
SREQ outputs a request to the fabric to begin a suspend mode. SACK acknowledges that
the fabric is ready to start the suspend mode. The SACK pin is synchronous to the CLK pin.
POST_CRC_INTERNAL
POST_CRC_INTERNAL provides fabric access to the post-CRC error.
Configuration Details
Configuration Pins
Certain pins are dedicated to configuration (Table 5-1), while others are dual-purpose
(Table 5-3). Dual-purpose pins serve both as configuration pins and as user I/Os after
configuration. Dedicated configuration pins retain their function after configuration.
Configuration constraints can be selected when generating the Spartan®-6 device
bitstream. Certain configuration operations can be affected by these constraints. For a
description of the available constraints, see the software constraints guide.
DONE Bidirectional, Active High signal with programmable pull-up indicating configuration is complete.
Open-Drain, 0 = FPGA not configured
or Active 1 = FPGA configured
Refer to the BitGen section of UG628, Command Line Tools User Guide, for software settings.
PROGRAM_B(2, 3) Input Active Low signal with programmable pull-up, asynchronous full-chip reset.
TDI Input Test Data In. This pin is the serial input to all JTAG instruction and data registers.
The state of the TAP controller and the current instruction determine the register that
is fed by the TDI pin for a specific operation. TDI has an internal resistive pull-up to
provide a logic High to the system if the pin is not driven. TDI is applied into the
JTAG registers on the rising edge of TCK.
TDO Output Test Data Out. This pin is the serial output for all JTAG instruction and data registers.
The state of the TAP controller and the current instruction determine the register
(instruction or data) that feeds TDO for a specific operation. TDO changes state on
the falling edge of TCK and is only active during the shifting of instructions or data
through the device. TDO is an active driver output.
TMS Input Test Mode Select. This pin determines the sequence of states through the JTAG TAP
controller on the rising edge of TCK. TMS has an internal resistive pull-up to provide
a logic High if the pin is not driven.
TCK Input Test Clock. This pin is the JTAG Test Clock. TCK sequences the TAP controller and
the JTAG registers.
SUSPEND(3) Input Suspend Mode. Used to put the FPGA into suspend mode.
The SUSPEND pin should be Low during power up and configuration. If the
Suspend feature is not used, the SUSPEND pin must be connected to ground.
VFS Input Voltage source for eFUSE programming.(4)
VBATT Input Battery supply voltage for AES encryption key storage in SRAM.(4)
Notes:
1. The Bidirectional type describes a pin that is bidirectional under all conditions. If the pin is an input for some configuration modes or an
output for others, it is listed as an Input or Output type. For termination settings of configuration pins, see Table 5-2.
2. Pulsing PROGRAM_B does not reset the JTAG TAP state machine.
3. All JTAG pins and the SUSPEND pin are powered by VCCAUX; DONE and PROGRAM_B are powered by VCCO_2 supplies.
4. Only available in 6SLX75, 6SLX75T, 6SLX100, 6SLX100T, 6SLX150, and 6SLX150T devices. For more information on eFUSE
programming, refer to eFUSE, page 91.
Notes:
1. A24/A25 are in bank 5 in the 6SLX75/T devices and larger densities and in FG676 and larger packages. Then the pull-up is to
VCCO_5.
2. Setting the BitGen options configures the termination on the respective pin. Not setting an option defaults to Pull-up. Refer to the
BitGen section of UG628, Command Line Tools User Guide, for software settings.
3. The SUSPEND pin must be Low during power-up. Connection of an external pull-down resistor ensures this condition.
4. For more details on the Suspend feature, refer to UG394, Spartan-6 FPGA Power Management User Guide.
Floating signal levels are problematic in CMOS logic systems. Other logic components in
the system can require a valid input level from the FPGA. The internal pull-up resistors
generate a logic High level on each pin. Generally, a device driving signals into the FPGA
can overcome the pull-up resistor. Similarly, an individual pin can be pulled down using
an appropriately sized external pull-down resistor.
In hot-swap or hot-insertion applications, the pull-up resistors provide a potential current
path to the I/O power rail. Turning off the pull-up resistors disables this potential path.
However, then external pull-up or pull-down resistors can be required on each individual
I/O pin.
During power-up or at reconfiguration following PROG_B assertion, the I/O pull-ups may
be enabled until the device begins configuration.
Notes:
1. All 16 data pins are persisted regardless of whether the SelectMAP data width is x8 or x16.
2. INIT_B is persisted if readback CRC is enabled, regardless of the POST_CRC_INIT_FLAG setting.
3. AWAKE and SCP[7:0] are activated based on the suspend setting.
4. A24 and A25 are in bank 5 in larger devices with 6 or more I/O banks.
Notes:
1. Bit swapping is discussed in the Bit Swapping section.
2. For complete BitGen and PROMGen syntax, refer to UG628, Command Line Tools User Guide.
Bitstream Overview
The Spartan-6 FPGA bitstream contains commands to the FPGA configuration logic as
well as configuration data. Table 5-5 gives a typical default bitstream length for each of the
Spartan-6 devices. Compression can provide a smaller bitstream.
Notes:
1. The bitstream length represents the typical default cases. Certain BitGen options can vary the bitstream
length, such as Compress. The x2 and x4 SPI configuration modes require additional commands and
will increase the bitstream length.
2. Bitstream lengths might appear to increase after the ISE tools, version 13.2. This is due to a software
change that affects designs containing 9K block RAMs. For more information on this change, refer to
the Block RAM Initialization section of UG383, Spartan-6 FPGA Block RAM User Guide.
in x16 mode. The FPGA now knows on which bus width to receive the rest of the data. No
packet processed by the FPGA until the Sync word is found. See Table 5-7.
Bit Swapping
Bit swapping is the swapping of the bits within a byte. The MCS, EXO, and TEK PROM file
formats are always bit swapped. The HEX file format can be bit swapped or not bit
swapped, depending on user options. The bitstream files (BIT, RBT, and BIN) are never bit
swapped.
The HEX file format contains only configuration data. The other PROM file formats
include address and checksum information that should not be sent to the FPGA. The
address and checksum information is used by some third-party device programmers, but
it is not programmed into the PROM.
Figure 5-1 shows how two bytes of data (0xABCD) are bit swapped.
X-Ref Target - Figure 5-1
Hex: A B C D
SelectMAP D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7
Data Pin:
Binary: 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1
Bit-
Swapped 1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1
Binary:
SelectMAP
Data Pin:
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
Bit-
Swapped
D 5 B 3
Hex: UG380_c5_01_042909
The MSB of each byte goes to the D0 pin regardless of the orientation of the data:
• In the bit-swapped version of the data, the bit that goes to D0 is the right-most bit.
• In the non-bit-swapped data, the bit that goes to D0 is the left-most bit.
Whether or not data must be bit swapped is entirely application-dependent. Bit swapping
is applicable for Master Serial, Master SelectMAP, or BPI PROM files.
Notes:
1. [31:24] changes from 0xAA to 0x55 after bit swapping.
Table 5-9: Sync Word Data Sequence Example for x8 and x16 Modes
CCLK Cycle 1 2 3 4
D[7:0] pins for x8 0x55 0x99 0xAA 0x66
D[15:0] pins for x16 0x5599 0xAA66
Delaying Configuration
There are two ways to delay configuration for Spartan-6 devices:
• Hold the INIT_B pin Low during initialization. When INIT_B has gone High,
configuration cannot be delayed by subsequently pulling INIT_B Low.
• Hold the PROGRAM_B pin Low. The signals relating to initialization and delaying
configuration are defined in Table 5-10.
Table 5-10: Signals Relating to Initialization and Delaying Configuration
Signal Name Type Access (1) Description
PROGRAM_B Input Externally accessible via the Global asynchronous chip reset. Can be held Low to delay
PROGRAM_B pin. configuration.
INIT_B Input, Externally accessible via the Before the Mode pins are sampled, INIT_B is an input that
Output, INIT_B pin. can be held Low to delay configuration.
or Open After the Mode pins are sampled, INIT_B is an open-
Drain drain, active-Low output that indicates whether a CRC
error occurred during configuration or a readback CRC
error occurred after configuration (when enabled):
0 = CRC error
1 = No CRC error (needs an external pull-up)
MODE_STATUS[1:0] Status Internal signals, accessible Reflects the direct pin value of the Mode pins.
through the Spartan-6 FPGA
status register.
Notes:
1. Information on the Spartan-6 FPGA status register is available in Table 5-38, page 104. Information on accessing the device status
register via JTAG is available in Table 6-5, page 122. Information on accessing the device status register via SelectMAP is available in
Table 6-1.
2. The Status type is an internal status signal without a corresponding pin.
Configuration Sequence
While each of the configuration interfaces is different, the basic steps for configuring a
Spartan-6 device are the same for all modes. Figure 5-2 shows the Spartan-6 FPGA
configuration process. The following subsections describe each step in detail, where the
current step is highlighted in gray at the beginning of each subsection.
X-Ref Target - Figure 5-2
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG380_c5_02_042909
The Spartan-6 device is initialized and the configuration mode is determined by sampling
the mode pins in three setup steps.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG380_c5_03_042909
For configuration, Spartan-6 devices require power on the VCCO_2, VCCAUX, and VCCINT
pins. There are no power-supply sequencing requirements. Power VCCO last after VCCINT
and VCCAUX to ensure that the outputs stay disabled until configuration begins.
All JTAG and serial configuration pins are located in VCCAUX and VCCO_2 supply banks.
The dual-purpose pins are located in Banks 0, 1, and 2 (one exception is A24 and A25 are in
bank 5 for larger devices with 6 I/O banks). The DONE and PROGRAM_B dedicated
inputs operate at the VCCO_2 LVCMOS level, and the JTAG input pins (TCK, TMS, and
TDI) and the SUSPEND pin operate at the VCCAUX LVCMOS level. The DONE pin
operates at the VCCO_2 voltage level with the output standard set to LVCMOS 8 mA
SLOW. TDO drives at the voltage level provided on VCCAUX at 8 mA SLOW.
For all modes that use dual-purpose I/O, the associated VCCO_X must be connected to the
appropriate voltage to match the I/O standard of the configuration device. The pins are
also LVCMOS18, LVCMOS25, or LVCMOS33 8 mA SLOW during configuration,
depending on the VCCO_X level.
For power-up, the VCCINT power pins must be supplied with 1.2V for -2/-3 speed grades
and 1.0V for -1L sources. VCCO_2 must be supplied. Table 5-11 shows the power supplies
required for configuration. Table 5-12 shows the timing for power-up.
Notes:
1. For recommended operating values, refer to DS162, Spartan-6 FPGA Data Sheet: DC and Switching
Characteristics.
2. VBATT or VFS are required only when using bitstream encryption and are only supported in Spartan-6
LX75, LX75T, LX100, LX100T, LX150, and LX150T devices.
3. VCCAUX must be greater than or equal to VFS during eFUSE programming. This requirement is not
necessary for configuration.
4. If VCCO_2 is 1.8V, VCCAUX must be 2.5V. If VCCO_2 is 2.5V or 3.3V, VCCAUX can be either 2.5V or 3.3V.
5. VCCO_5 might be needed if BPI configuration mode is used and A24 and A25 are in I/O Bank 5.
Notes:
1. See Configuration Switching Characteristics in DS162, Spartan-6 FPGA Data Sheet: DC and Switching
Characteristics, for power-up timing characteristics.
2. Use TBPIICCK for the Master Select MAP and BPI configuration interfaces, and TSPIICCK for Master
Serial and SPI configuration interfaces.
PROGRAM_B
TPL
INIT_B
(2)
TICCK
M0, M1(1)
VALID
(Required)
UG380_c5_04_050812
2. TICCK is either TSPIICCK or TBPIICCK depending on whether the master SPI or BPI
configuration modes is used. In slave configuration modes, this is an input pin.
VCCINT, VCCO_2, and VCCAUX should rise monotonically within the specified ramp rate.
If this is not possible, configuration must be delayed by holding the INIT_B pin or the
PROGRAM_B pin Low (see Delaying Configuration, page 80) while the system power
reaches the recommended operating voltage.
VCCO_2, VCCAUX, and VCCINT are inputs to Power On Reset (POR). If either VCCAUX or
VCCINT dips below the operating minimum, POR might trigger again.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG380_c5_05_042909
Configuration memory is cleared sequentially any time the device is powered up, after the
PROGRAM_B pin is pulsed Low, after the JTAG JPROGRAM instruction or the IPROG
command is used, or during a fallback retry configuration sequence. During this time,
I/Os are placed in a High-Z state except for the dedicated configuration and JTAG pins.
INIT_B is internally driven Low during initialization, then released after TPOR (Figure 5-4)
for the power-up case, and TPL for other cases. If the INIT_B pin is held Low externally, the
device waits at this point in the initialization process until the pin is released.
The minimum Low pulse time for PROGRAM_B is defined by the TPROGRAM timing
parameter. The PROGRAM_B pin can be held active (Low) for as long as necessary, and the
device clears the configuration memory twice after PROGRAM_B is released.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Setup Loading
Start Finish
UG380_c5_06_042909
When the INIT_B pin transitions to High, the device samples the M[1:0] and begins driving
CCLK if in the Master modes. The device begins sampling the configuration data input
pins on the rising edge of the configuration clock.
Synchronization (Step 4)
X-Ref Target - Figure 5-7
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG380_c5_07_042909
The synchronization word alerts the device to upcoming configuration data and aligns the
configuration data with the internal configuration logic. Any data on the configuration
input pins prior to synchronization is ignored.
Synchronization is transparent to most users because all configuration bitstreams (BIT
files) generated by the BitGen software include both the bus width detection
pattern/synchronization word.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG380_c5_08_042909
After the device is synchronized, a device ID check must pass before the configuration data
frames can be loaded. This prevents a configuration with a bitstream that is formatted for
a different device. For example, the device ID check should prevent an XC6SLX4 from
being configured with an XC6SLX9 bitstream.
The device ID check is built into the bitstream, making this step transparent to most
designers. Table 5-14 shows the signals relating to the device ID check. The device ID check
is performed through commands in the bitstream to the configuration logic, not through
the JTAG IDCODE register in this case.
The Spartan-6 FPGA JTAG IDCODE register has the following format:
vvvv:fffffff:aaaaaaaaa:ccccccccccc1
where
v = revision
f = 7-bit family code
a = 9-bit array code (4-bit subfamily and 5-bit device identifier)
c = 11-bit company code
Notes:
1. The X digit in the ID code corresponding to the four binary revision
bits are not used by the programming tools when performing
IDCODE verification.
Notes:
1. Information on the Spartan-6 FPGA status register is available in Table 5-35. Information on accessing
the device status register via JTAG is available in Table 6-5. Information on accessing the device status
register via SelectMAP is available in Table 6-1.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG380_c5_09_042909
After the synchronization word is loaded and the device ID has been checked, the
configuration data frames are loaded. This process is transparent to most users.
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG380_c5_10_042909
As the configuration data frames are loaded and after synchronization, the device
calculates a Cyclic Redundancy Check (CRC) value from the configuration data packets.
After the configuration data frames are loaded and before the DESYNC word, the
configuration bitstream can issue a Check CRC instruction to the device, followed by an
expected CRC value. If the CRC value calculated by the device does not match the
expected CRC value in the bitstream, the device pulls INIT_B Low and aborts
configuration. The CRC check is included in the configuration bitstream by default,
although the designer can disable it if desired. (Refer to the BitGen section of UG628,
Command Line Tools User Guide.) If the CRC check is disabled, there is a risk of loading
incorrect configuration data frames, causing incorrect design behavior or damage to the
device.
If a CRC error occurs during configuration from a mode where the FPGA is the
configuration master, the device can attempt to do a fallback reconfiguration (see Fallback
MultiBoot, page 132).
Startup (Step 8)
X-Ref Target - Figure 5-11
Steps
1 2 3 4 5 6 7 8
Clear Load
Device Sample Mode Device ID Startup
Configuration Synchronization Configuration CRC Check
Power-Up Pins Check Sequence
Memory Data
Bitstream
Loading
Start Finish
UG380_c5_11_042909
After the configuration frames are loaded, the bitstream asserts the DESYNC command,
and then the START command instructs the device to enter the startup sequence. The
startup sequence is controlled by an eight-phase (phases 0–7) sequential state machine that
is clocked by the JTAG clock or any user clock defined by the BitGen -g StartupCLK
option. The startup sequencer performs the tasks outlined in Table 5-15.
The specific order of startup events (except for EOS assertion) is user-programmable
through BitGen options (refer to UG628, Command Line Tools User Guide). Table 5-15 shows
the general sequence of events, although the specific phase for each of these startup events
is user-programmable (EOS is always asserted in the last phase). Refer to Chapter 2,
Configuration Interface Basics, for important startup option guidelines. By default, startup
events occur as shown in Table 5-16.
The startup sequence can be forced to wait for the DCMs and PLLs to lock with the
appropriate BitGen options. These options are typically set to prevent DONE and GWE
from being asserted (preventing device operation) before the DCMs and PLLs have locked.
Startup can wait for DCMs and PLLs by assigning the LCK_CYCLE option to a startup
phase. If this is not done, startup does not wait for any DCMs or PLLs. When the
LCK_CYCLE is set to a startup phase, the FPGA waits for all DCMs and PLLs to lock prior
to moving to the next phase of startup. To only wait for specific DCMs to lock, assign the
STARTUP_WAIT attribute to those instances. There is no corresponding attribute for PLLs.
When waiting for DCM and PLL lock, the GTS startup setting must be enabled on a phase
before LCK_CYCLE. Failing to do so results in the FPGA waiting for the clock components
indefinitely and never completing startup. For additional information on using the
LCK_CYCLE feature in master configuration modes, see Required Data Spacing between
MultiBoot Images, page 136.
The DONE signal is released by the startup sequencer on the cycle indicated by the user,
but the startup sequencer does not proceed until the DONE pin actually sees a logic High.
The DONE pin is an open-drain bidirectional signal with an internal pull-up by default. By
releasing the DONE pin, the device simply stops driving a logic Low and the pin is weakly
pulled High. Table 5-17 shows signals relating to the startup sequencer. Figure 5-12 shows
the waveforms relating to the startup sequencer.
GWE Global Write Enable (GWE). When deasserted, GWE disables the CLB and
the IOB flip-flops as well as other synchronous elements on the FPGA.
GTS Global 3-State (GTS). When asserted, GTS disables all the I/O drivers
Spartan-6 FPGA except for the configuration pins.
Status
Status Register
DCM_LOCK DCM_LOCK indicates when all DCMs and PLLs have locked. This signal
is asserted by default. It is active if the STARTUP_WAIT option is used on
a DCM and the LCK_CYCLE option is used when the bitstream is
generated.
Notes:
1. Information on the Spartan-6 FPGA status register is available in Table 5-35, page 102. Information on accessing the device status
register via JTAG is available in Table 6-5, page 122. Information on accessing the device status register via SelectMAP is available in
Table 6-1, page 117.
2. Open-drain output with internal pull-up by default; the optional driver is enabled using the BitGen DriveDone option.
3. GWE is asserted synchronously to the configuration clock (CCLK) and has a significant skew across the part. Therefore, sequential
elements might not be released synchronously to the system clock and timing violations can occur during startup. It is
recommended to reset the design after startup and/or apply some other synchronization technique.
In a Slave configuration mode, additional clocks are needed after DONE goes High to
complete the startup events. In Master configuration mode, the FPGA provides these
clocks. The number of clocks necessary varies depending on the settings selected for the
startup events. A general rule is to apply eight clocks (with DIN all 1’s) after DONE has
gone High. More clocks are necessary if the startup is configured to wait for the DCM and
PLLs to lock (LCK_CYCLE).
When using the external master clock (USERCCLK) pin, I/O standard becomes enabled at
the EOS phase. As I/O standard changes from the default pre-configuration value to the
user specified value, a glitch might appear. It is recommended to use clock enables or a
reset to prevent glitches from affecting the design.
X-Ref Target - Figure 5-12
POR
INIT_B
DONE
GWE
GTS
EOS
CCLK
Bitstream Encryption
The Spartan-6 6SLX75/T, 6SLX100/T, and 6SLX150/T devices have on-chip AES
decryption logic to provide a high degree of design security. Without knowledge of the
encryption key, potential pirates cannot analyze an externally intercepted bitstream to
understand or clone the design. Encrypted Spartan-6 FPGA designs cannot be copied or
reverse-engineered. Encryption is permitted in configuration modes of x1 and x8 data
widths (including JTAG). Encryption cannot be used in conjunction with bitstream
compression.
The Spartan-6 FPGA AES system consists of software-based bitstream encryption and
on-chip bitstream decryption with dedicated memory for storing the encryption key.
Using the ISE software, the user generates the encryption key and the encrypted bitstream.
Spartan-6 devices store the encryption key internally in either dedicated RAM, backed up
by a small externally connected battery, or the eFUSE. The encryption key can only be
programmed onto the device through the JTAG interface; once programmed and secured
with the Key Security bits, it is not possible to read the encryption key out of the device
through JTAG or any other means.
During configuration, the Spartan-6 device performs the reverse operation, decrypting the
incoming bitstream. The Spartan-6 FPGA AES encryption logic uses a 256-bit encryption
key.
The on-chip AES decryption logic cannot be used for any purpose other than bitstream
decryption; i.e., the AES decryption logic is not available to the user design and cannot be
used to decrypt any data other than the configuration bitstream.
VBATT
The encryption key memory cells are volatile and must receive continuous power to retain
their contents. During normal operation, these memory cells are powered by the auxiliary
voltage input (VCCAUX), although a separate VBATT power input is provided for retaining
the key when VCCAUX is removed. Because VBATT draws very little current (on the order of
nanoamperes), a small watch battery is suitable for this supply. (To estimate the battery life,
refer to VBATT DC Characteristics in the Spartan-6 FPGA Data Sheet: DC and Switching
Characteristics and the battery specifications.) At less than a 150 nA load, the endurance of
the battery should be limited only by its shelf life.
VBATT does not draw any current and can be removed while VCCAUX is applied. VBATT
cannot be used for any purpose other than retaining the encryption keys when VCCAUX is
removed.
eFUSE
The fuse link is programmed by flowing a large current for a specific amount of time. Fuse
programming current is provided by a fixed external voltage supply (VFS pin). The
maximum level is controlled by an internally generated supply. eFUSEs are one-time
programmable.
The resistance of a programmed fuse link is typically a few orders of magnitude higher
than that of a pristine one. A programmed fuse is assigned a logic value of 1 and a pristine
fuse 0.
Each logical bit of the FUSE_KEY and FUSE_CNTL registers consists of two eFUSE cells
(primary and redundant), a flip-flop, and common logic elements for data multiplexing.
eFUSE Registers
A Spartan-6 FPGA has a total of three eFUSE registers. Table 5-18 lists the eFUSE registers
in Spartan-6 devices with their sizes and usage. The eFUSE bits are addressed so that the
LSB is shifted in/out first and MSB is last.
JTAG Instructions
eFUSE registers can be read through JTAG ports. eFUSE programming can be done only
via JTAG. Table 5-20 lists eFUSE-related JTAG instructions. Refer to Chapter 10, Advanced
JTAG Configurations, for general JTAG communication protocol. These instructions are
not sufficient to program eFUSEs. A precise algorithm is used and not provided. The only
supported method of programming eFUSEs is by using the iMPACT software.
VFS Pin
In Spartan-6 devices, the VFS pin is one of two pins dedicated to eFUSE operation. The VFS
pin should be treated as a power supply pin for testing purposes, such as power-up ramp
and ESD stress.
The voltage specification for the VFS pin during programming is 3.3V nominal. The supply
must be able to provide up to 40 mA of current during programming. For read mode, the
VFS pin only needs to be lower than the VCCAUX maximum operating condition. See
Table 5-21 for VFS bias conditions. For the full specification, see DS162, Spartan-6 FPGA
Data Sheet: DC and Switching Characteristics.
RFUSE Pin
The RFUSE pin is the second dedicated pin for eFUSE operation. If programming the
eFUSE is required, connect a 1,140Ω resistor to ground. If a 1,140Ω resistor is difficult to
acquire, it can be replaced with an 1,130Ω resistor in series with a 10Ω resistor. Resistor
tolerance can be found in DS162, Spartan-6 FPGA Data Sheet: DC and Switching
Characteristics. When not programming or using eFUSE, it is recommended to connect
RFUSE to VCCAUX or GND, or RFUSE can float.
VCCAUX Pin
The VCCAUX must be equal to or greater than VFS when programming the eFUSE. VCCAUX
can be any of the other recommended operating values allowed in DS162, Spartan-6 FPGA
Data Sheet: DC and Switching Characteristics, when reading or configuring from the eFUSE.
Notes:
1. I/O count can be greater than in available packages due to unbonded I/O.
Configuration Packets
All Spartan-6 FPGA bitstream commands are executed by reading or writing to the
configuration registers. Configuration data is organized as 16-bit words. Some data can
occupy multiple words. There are three major commands that the configuration data can
contain: NOP, READ, and WRITE, shown in Table 5-23.
Packet Types
All data (register writes and frame data) is encapsulated into two kinds of packets:
• Type 1 packet: contains two sections: Header and Data.
• Type 2 packet: contains three sections: Header, Word Count, and Data.
Type 1 Packet
A Type 1 packet is used for a register write with six address bits for a short block. The
Header section is always a 16-bit word. See Table 5-24.
The Type 1 data section follows the Type 1 packet header and contains the number of 16-bit
words specified by the word count portion of the header. See Table 5-25.
Type 2 Packet
The Type 2 packet, which must follow a Type 1 packet, is used to write long blocks. The
header section is always a 16-bit word.
Following the Type 2 packet header is the Type 2 data section, which contains the number
of 16-bit words specified by the word count portion of the header.
The Type 2 word count follows the Type 2 packet header and contains two 16-bit words,
with MSB in the first word.
Following the Type 2 word count section is the Type 2 data section; it contains the number
of 16-bit words that the word count portion of the header specifies.
Word Count = (Total Number of Frames + 1 Dummy Frame) x Actual Frame Length
Configuration Registers
Table 5-30 summarizes the configuration registers. A detailed explanation of selected
registers follows.
CRC Register
The Cyclic Redundancy Check register utilizes a standard 32-bit CRC checksum algorithm
to verify bitstream integrity during configuration. If the value written matches the current
calculated CRC, the CRC_ERROR flag is cleared and startup is allowed.
FAR_MAJ Register
Frame Address Register sets the starting block and column address for the next
configuration data input. See Table 5-31.
FAR_MIN Register
.
FDRI Register
Configuration data is written to the device by loading the command register with the
WCFG command and then loading the Frame Data Input Register.
FDRO Register
The FDRO is for reading configuration data or captured data from the device. Loading the
command register with the RCFG command, and then addressing the FDRO with a read
command perform a readback.
MASK Register
MASK register performs writes to the CTL register. A 1 in bit N of the mask allows that bit
position to be written in the CTL register. The default value of the mask is 0.
EYE_MASK Register
The EYE_MASK register stores the mask for the SCP pins for the Multi-Pin Wake-Up
feature. It is 16 bits, with the lower 8 representing the mask. The upper 8 bits are reserved.
The lower 8 bits are set from the -g wakeup_mask BitGen option.
LOUT Register
The Legacy Output Register (LOUT) is used for daisy-chaining the configuration bit
stream to other Xilinx devices. Data written to the LOUT is serialized and appears on the
DOUT pin.
CBC_REG Register
This register is used by the bitstream compression option to hold the Initial Vector (IV) for
AES decryption.
IDCODE Register
Any writes to the FDRI register must be preceded by a write to this register. The provided
IDCODE must match the device’s IDCODE. See Configuration Sequence, page 80.
A read of this register returns the device IDCODE.
CSBO Register
The CSBO register is designed to assert the CSB_O signal and then ignore any incoming
data for a specified word count. It works much the same way as the LOUT register except
that it only outputs a Low on CSB_O and no data is passed through. Like the LOUT
register, multiple calls can be nested for different devices in support of daisy-chaining.
Caution! PERSIST and ICAP cannot be set at the same time. PERSIST has higher priority.
HC_OPT_REG Register
The HC_OPT_REG register can only be reset to default by por_b.
If the second configuration needs a previously unknown SPI vendor command, the new
vendor command has already been loaded in GENERAL2 from the bitstream by this point.
BPI has a 26-bit address (there are 6 don’t care bits). See Table 5-43.
MODE Register
The MODE register contains the mode setting (two bits for bus width, three bits for mode,
and eight bits for vsel), which can be used for the reboot. The default is the original pin
setting.
This register is cleared in the same way as General registers, that is they can only be cleared
by bus_reset0 but NOT by reboot_rst (bus_reset = bus_reset || reboot_rst). See
Table 5-44.
CCLK_FREQ Register
Table 5-45: Master Mode CCLK Frequency Select Description
Name Bits Description Default
EXT_MCLK 14 Select external master clock. 0
0: Select internal master clock.
1: Select external master clock.
MCLK_FREQ 9:0 CCLK frequency select. This register is a shared use 10x1BE
register with the ExtMCCLK_Divide signal, which
divides the external clock.
PU_GWE Register
This 10-bit register stores the wake-up GWE sequence from suspend. See Table 5-46.
PU_GTS Register
This 10-bit register stores the wake-up GTS sequence from suspend. See Table 5-47.
SEU_OPT Register
This register enables SEU detection and contains the status and frequency at which the
FPGA should run during SEU detection. Each bit position of the SEU_OPT register is
described in Table 5-49.
Bitstream Composition
Configuration can begin after the device is powered and initialization has finished, as
indicated by the INIT_B pin being released. After initialization, the packet processor
ignores all data presented on the configuration interface until it receives the
synchronization word. After synchronization, the packet processor waits for a valid packet
header to begin the configuration process. A bitstream for regular configuration has the
structure as shown in Table 5-50.
Notes:
1. Configuration CRC calculation begins immediately after the SYNC WORD and the final check occurs
before the DESYNC WORD.
DNA_PORT
DIN DOUT
READ
SHIFT
CLK
UG380_c5_13_052009
Identifier Value
As shown in Figure 5-14, the device DNA value is 57 bits long. The two most-significant
bits are always 1 and 0. The remaining 55 bits are unique to a specific Spartan-6 FPGA.
Operation
Figure 5-14 shows the general functionality of the DNA_PORT design primitive. An FPGA
application must first instantiate the DNA_PORT primitive, shown in Figure 5-13, within a
design.
X-Ref Target - Figure 5-14
SHIFT=1
0 Read = 0 56
DIN 57-Bit Bit Loadable Shift Register DOUT
CLK
READ = 1
0 54 55 56
55-Bit Unique Device Identifier (Device DNA) 0 1
Factory Programmed, Unchangeable
UG380_c5_14_052009
To read the device DNA, the FPGA application must first transfer the identifier value into
the DNA_PORT output shift register. The READ input must be asserted during a rising
edge of CLK, as shown in Table 5-51. This action parallel loads the output shift register
with all 57 bits of the identifier. Because bit 56 of the identifier is always 1, the DOUT
output is also 1. The READ operation overrides a SHIFT operation.
To continue reading the identifier values, SHIFT must be asserted, followed by a rising
edge of CLK, as shown in Table 5-51. This action causes the output shift register to shift its
contents toward the DOUT output. The value on the DIN input is shifted into the shift
register.
A Low-to-High transition on SHIFT should be avoided when CLK is High because this
causes a spurious initial clock edge. Ideally, SHIFT should only be asserted when CLK is
Low or on a falling edge of CLK.
If both READ and SHIFT are Low, the output shift register holds its value and DOUT
remains unchanged.
DNA_PORT
DIN DOUT
READ
SHIFT
CLK
UG380_c5_15_121112
As shown in Figure 5-16, the length of the identifier can be extended by feeding the DOUT
serial output port back into the DIN serial input port. This way, the identifier can be
extended to any possible length. However, there are still only 55 unique bits, with a 57-bit
repeating pattern. A buffer is included in Figure 5-16 to demonstrate a user inserting logic
for the user’s DNA logic extension or delay for the loopback to meet hold time
requirements.
X-Ref Target - Figure 5-16
DNA_PORT
DIN DOUT
READ
SHIFT
CLK
UG380_c5_16_021010
It is also possible to add additional bits to the identifier using FPGA logic resources. As
shown in Figure 5-17, the FPGA application can insert additional bits via the DNA_PORT
DIN serial input. The additional bits provided by the logic resources could take the form of
an additional fixed value or a variable computed from the device DNA.
X-Ref Target - Figure 5-17
READ
SHIFT
CLK
UG380_c5_17_052009
Bitstream Compression
By default, FPGA bitstreams are uncompressed. However, Spartan-6 FPGAs support basic
bitstream compression. The compression is fairly simple, yet effective for some
applications. The ISE bitstream generator software examines the FPGA bitstream for any
duplicate configuration data frames. These duplicates occur often in these situations:
• FPGA designs with unused block RAM or hardware multipliers.
• FPGA designs with low logic utilization, such as when most of the FPGA array is
empty.
The ISE software can then generate a compressed FPGA bitstream. As the FPGA
configures, the internal configuration controller copies the redundant data frame to
multiple locations. Compression is not supported for encrypted bitstreams.
The amount of compression is non-deterministic. Changes to the source FPGA design can
cause the size of the compressed bitstream to grow. Sparse, mostly empty FPGA designs
have the greatest overall compression factor. Similarly, FPGA designs with an empty
column of block RAM have a high compression factor.
The overall benefits of a compressed bitstream are:
• Smaller memory footprint.
• Faster programming time for nonvolatile memory.
• Faster configuration time.
Compression is enabled using the BitGen option -g compress.
Parallel Platform Flash PROMs offer their own compression mechanisms. For more details,
see the “XCFxxP Decompression and Clock Options” chapter in UG161, Platform Flash
PROM User Guide.
CSI_B
RDWR_B
WRITE READ
CCLK
UG380_c6_01_042909
Figure 6-1: Changing the SelectMAP Port from Write to Read Control
The user must change the SelectMAP interface from write to read control between steps 10
and 11, and back to write control after step 11, as illustrated in Figure 6-2. The SelectMAP
16-bit data ordering applies to the ICAP interface as shown in Table 2-4, page 39 and
Table 2-5, page 39.
X-Ref Target - Figure 6-2
CSI_B
RDWR_B
WRITE READ WRITE
DATA[0:7] AA 99 55 66 28 00 E0 0 0 XX XX 30
CCLK
UG380_c6_02_011110
To read registers other than STAT, the address specified in the Type-1 packet header in
step 2 of Table 6-1 should be modified and the word count changed if necessary. Reading
from the FDRO register is a special case that is described in Configuration Memory Read
Procedure (SelectMAP).
User logic should strobe readback data while DOUT_BUSY is Low after switching from a
write to a read (both CSI_B and RDWR_B are Low). DOUT_BUSY must be monitored to
determine when the readback data is valid.
When readback is initiated, and after BUSY is deasserted, a number of dummy words
depending on the SelectMAP bus width are read prior to valid data behind present.
Table 6-3 lists the dummy readback cycles for the two SelectMAP widths.
Notes:
1. These latencies assume CSI_B and RDWR_B are deasserted for one cycle between write and read. If
the deassertion lasts more than one cycle, then the latency is less. It is best to monitor the BUSY signal
for valid readback data.
The packets shifted in to the JTAG CFG_IN register are identical to the packets shifted in
through the SelectMAP interface when reading the STAT register through SelectMAP.
a: 0xFFFF
b: 0xAA99
b: 0x5566
c: 0x30A1
c: 0x0008
d: 0x31A1
d: 0xXXXX
e: 0x3022
Shift configuration packets into the CFG_IN data
e: 0x0000 0 271
register, MSB first.
e: 0x0000
f: 0x30A1
7 f: 0x0004
g: 0x4880
g: 0x0000
g: 0x0000
h: 0x2000
h: 0x2000
Shift the LSB of the last configuration packet while
0 1 1
exiting SHIFT-DR.
Move into the SELECT-IR state. X 1 3
Move into the SHIFT-IR state. X 0 2
Shift the first five bits of the CFG_OUT instruction, 00100
0 5
LSB first. (CFG_OUT)
Shift the MSB of the CFG_OUT instruction while
8 0 1 1
exiting Shift-IR.
Move into the SELECT-DR state. X 1 2
Move into the SHIFT-DR state. X 0 2
number of
Shift the contents of the FDRO register out of the
… 0 readback
CFG_OUT data register.
bits – 1
The design.rba and design.rbb files combine readback commands with expected
readback data and the RBD file contains only expected readback data. Systems that use an
RBD file for readback must store readback commands elsewhere. The actual readback data
must be masked against an MSK or MSD mask file, as certain bits in the expected readback
stream in the RBA, RBB, and RBD files should be ignored.
The readback command set files do not indicate when users must change the SelectMAP or
JTAG interface from write to read control; the user must handle this based on the Readback
Command Sequences described above.
Readback Data
Pad Frame
1 Frame
(65 16-Bit Words)
Type 0 -
CLB Frame Data
Total
Number of
Device
Frames Pad Frame
(65 16-Bit Words)
Type 1 -
Block RAM
Frame Data
Pad Frame
(1 16-Bit Word)
Type 2 -
IOB Frame Data
UG380_c6_03_062911
The readback data stream is verified by comparing it to the original configuration frame
data that were programmed into the device. Certain bits within the readback data stream
must not be compared, because these can correspond to user memory or null memory
locations. The location of don't care bits in the readback data stream is given by the mask
files (MSK and MSD). These files have different formats although both convey essentially the
same information. Once readback data have been obtained from the device, either of the
following comparison procedures can be used:
1. Compare readback data to the RBD golden readback file. Mask by using the MSD file (see
Figure 6-4).
The simplest way to verify the readback data stream is to compare it to the RBD golden
readback file, masking readback bits with the MSD file. This approach is simple because
there is a 1:1 correspondence between the start of the readback data stream and the
start of the RBD and MSD files, making the task of aligning readback, mask, and
expected data easier.
The RBD and MSD files contain an ASCII representation of the readback and mask data
along with a file header that lists the file name, etc. This header information should be
ignored or deleted. The ASCII 1s and 0s in the RBD and MSD files correspond to the
binary readback data from the device. Take care to interpret these files as text, not
binary sources. Users can convert the RBD and MSD files to a binary format using a
script or text editor, to simplify the verify procedure for some systems and to reduce
the size of the files by a factor of eight.
MSD RBD
File File
Readback
Data Stream File Header File Header
Total
Number of Frame Data Frame Data Frame Data
Device Mask
Frames
UG380_c6_04_042909
Figure 6-4: Comparing Readback Data Using the MSD and RBD Files
The drawback to this approach is that in addition to storing the initial configuration
bitstream and the MSD file, the golden RBD file must be stored somewhere, increasing
the overall storage requirement.
2. Compare readback data to the configuration BIT file, mask using the MSK file (see
Figure 6-5).
Another approach for verifying readback data is to compare the readback data stream
to the frame data within the FDRI write in the original configuration bitstream,
masking readback bits with the MSK file.
After sending readback commands to the device, comparison begins by aligning the
beginning of the readback frame data to the beginning of the FDRI write in the BIT
and MSK files. The comparison ends when the end of the FDRI write is reached.
This approach requires the least in-system storage space, because only the BIT, MSK,
and readback commands must be stored.
MSK BIT
Readback File File
Data Stream
File Header File Header
1 Frame Pad Frame
Commands Commands
Total
Number of Frame Data Frame Data Frame Data
Device Mask
Frames
Commands Commands
UG380_c6_05_042909
Figure 6-5: Comparing Readback Data Using the MSK and BIT Files
The RBA and RBB files contain expected readback data along with readback command
sets. They are intended for use with the MSK file, although they are better suited to
readback for Virtex® devices than for Spartan-6 devices (see XAPP138, Virtex FPGA
Series Configuration and Readback).
Fallback MultiBoot
Fallback Behavior
Spartan-6 FPGAs have dedicated MultiBoot logic, which is used for both fallback and
MultiBoot (IPROG) reconfiguration. When fallback or IPROG happens, an internally
generated pulse resets the entire configuration logic, except for the dedicated MultiBoot
logic and the BOOTSTS, MODE, and GENERAL1.5 registers. See Figure 7-1. This reset
pulse pulls INIT_B and DONE Low, and restarts the configuration process by clearing
configuration memory.
X-Ref Target - Figure 7-1
0xFFFFFF
Strike 0..2
MultiBoot 2nd Image
Bitstream
Strike 3..5
3rd Image
Golden
Strike 6..8
Header 1st Image
0x000000
UG380_c7_01_051009
During configuration, a CRC error or a watchdog timer time-out error can trigger fallback.
The watchdog timer is only active in master configuration modes. The time-out value is
user configurable using the BitGen -g TIMER_CFG switch. The switch is followed by a
16-bit value (greater than 16h'0201) indicating the number of configuration clocks
allowed before detection of the Sync word times out.
During fallback reconfiguration, the FPGA increments the strike count, stored in the
BOOTSTS register, and continues reconfiguration if the strike count is less than the limit
permitted for that image. If the limit is not reached, the FPGA checks the NEW_MODE bit
in the MODE register. If this value is 0, the device uses the configuration mode defined by
the mode pins. If the value is 1, the device uses the configuration mode defined in the
BOOTMODE bits in the MODE register. The NEW_MODE register is set by the BitGen
option -g Next_Config_New_Mode:Yes. The BOOTMODE bits are set by the BitGen
option -g Next_Config_Boot_Mode.
There are three images for MultiBoot configuration. The first image is the Header. This
small bitstream contains the sync word, sets the addresses for the next bitstream as well as
the fallback or golden bitstream, and ends with an IPROG command. To generate this
bitstream automatically, add the BitGen option -g next_config_addr when creating
the programming file for the golden bitstream.
The second image is the MultiBoot bitstream. This is the bitstream that the user plans to
configure first. The location of this bitstream is defined by the values of GENERAL1,2. The
upper eight bits of the GENERAL 2 register are reserved for the opcode for the non-volatile
device. See Chapter 5, Configuration Details, for more information.
The third image is the fallback or golden bitstream. This bitstream is known to be “safe”
should an error occur consistently during configuration. The location of this bitstream is
defined by the values of GENERAL3,4. As with GENERAL1,2, the upper eight bits of
GENERAL4 are reserved for the opcode of the non-volatile device.
If the configuration fallback occurs and the golden bitstream is reached, the only way to
boot back into the MultiBoot bitstream (located at GENERAL1,2) is to toggle the
PROGRAM_B pin, power cycle the device, or use IPROG reconfiguration (see IPROG
Reconfiguration, page 134)
For designs that use more than two bitstreams, the GENERAL1,2 values must be set to the
location of the next bitstream then an IPROG command needs to be issued. GENERAL3,4
values should be reserved for the fallback bitstream.
The header image must start at address 0. This image has three “strikes” allotted to it. If a
CRC error is detected, the strike count increments and configuration restarts if the register
setting RESET_ON_ERROR is 1 (located in the register COR2, and can be set from BitGen
setting -g Reset_on_err) and the strike count is less than 3. The same behavior occurs
if the watchdog timer times out, but it does not depend on RESET_ON_ERROR. The strike
counter is found in the BOOTSTS registers. If the count is 3, configuration halts with INIT
and DONE driven Low.
The MultiBoot image can reside at any address specified in GENERAL1,2. This image has
three “strikes” allotted to it. If an error is detected, the strike count increments and
configuration will restart at the address specified in GENERAL1,2 if the count is less than
3 and RESET_ON_ERROR is 1. If the count hits 3, configuration moves to the fallback
bitstream located at GENERAL3,4. There are two ways to clear the strike count: power
cycle the FPGA or pulse the PROGRAM_B pin.
The fallback (or golden) image can reside at any address specified in GENERAL3,4. This
image has 3 strikes allotted to it. If an error is detected, the strike count increments and
configuration will restart at the address specified in GENERAL3,4 if the count is less than
6. The value is 6 because it shares the strike counter with the MultiBoot image. If the count
reaches 6, configuration boots back to zero, where the header image is located. When this
occurs, configuration will attempt both the MultiBoot image and the fallback image three
more times before halting configuration. This results in a strike count of 9.
After successful fallback reconfiguration, the user design should readback the STATUS or
BOOTSTS registers to verify the fallback was successful. Successful fallback configuration
maintains the strike count register, and a subsequent soft reboot uses the address stored in
GENERAL3,4 (the golden image). There are two ways to clear the strike count: perform a
hard reboot (pulse the PROGRAM_B pin) or cycle power.
If fallback reconfiguration exhausts all three strikes out, configuration stops and both
INIT_B and DONE are held Low.
Fallback is disabled if AES is enabled and for Slave configuration mode.
IPROG Reconfiguration
The IPROG (internal PROGRAM_B) command has similar effect as a pulsing
PROGRAM_B pin, except IPROG does not reset the dedicated reconfiguration logic. The
start address set in GENERAL1,2 is used during reconfiguration instead of the default
address (zero). The fallback (golden) bitstream address is set in GENERAL3,4. The IPROG
command can be sent through ICAP_SPARTAN6 or the bitstream.
After the configuration logic receives the IPROG command, the FPGA resets everything
except the dedicated reconfiguration logic, and the INIT_B and DONE pins go Low. After
the FPGA clears all configuration memory, INIT_B goes High again. Then the value in
GENERAL1,2 is used for the bitstream starting address.
Table 7-4: IPROG Embedded in First Bitstream, Second Bitstream CRC Error, and
Fallback Successfully
CRC_ERROR (1) ID_ERROR WTO_ERROR IPROG FALLBACK VALID
Status_1 (2) 0 0 0 1 1 1
Status_0 (3) 1 0 0 1 0 1
Notes:
1. CRC_Error only registers CRC errors detected during initial configuration. CRC_Error is not updated
if CRC errors are found from the Readback CRC (POST_CRC) function.
2. Status_1 shows a fallback bitstream was loaded successfully. The IPROG bit was also set in this case,
because the fallback bitstream contains an IPROG command. Although the IPROG command is
ignored during fallback, the status still records this occurrence.
3. Status_0 shows IPROG was attempted, and a CRC_ERROR was detected for that bitstream.
Watchdog Timer
The Spartan-6 FPGA watchdog timer is used to monitor detection of the sync word. When
the watchdog timer times out, the configuration logic increments the strike count and
attempts to reconfigure if the BitGen option -g Reset_On_Err is Yes and the maximum
strike limit has not been reached. The Fallback MultiBoot section provides more details.
The watchdog timer uses the same clock source as the configuration clock. The watchdog
counter limit is configurable by setting the Configuration WatchDog Timer (CWDT)
register or setting the BitGen option TIMER_CFG. The default is 64k clock cycles, and the
minimum value is 16h'0201.
The watchdog timer cannot be disabled by the user. The watchdog timer is disabled during
and after fallback reconfiguration.
Readback CRC
Spartan®-6 devices include a feature to perform continuous readback of configuration
data in the background of a user design. This feature is aimed at simplifying detection of
single event upsets (SEUs) that cause a configuration memory bit to flip. Detected failures
appear either on a device pin (INIT_B) and/or on an internally accessible component,
POST_CRC_INTERNAL. The clock source of the readback can be external or internally
generated.
Caution! Continuous readback of configuration data using the built-in post-configuration CRC
checking (POST_CRC) or configuration frame read operations using ICAP can increase jitter on
SelectIO or GTP I/O. Increased jitter lowers the link margin and can cause bit errors. This issue
is limited to Spartan-6 devices. The Soft Error Mitigation IP core includes a workaround for this
issue.
The expected “golden” CRC value is calculated by the software and written into the FPGA
for later comparison. The subsequent scans of Readback CRC value are compared against
the golden value. When a CRC mismatch is found, the CRCERROR pin of the
POST_CRC_INTERNAL primitive is driven High, the INIT_B pin is driven Low, and the
DONE pin remains High. The CONFIG user primitive attribute POST_CRC_INIT_FLAG
can be optionally set to DISABLE to disable INIT_B as a Readback CRC flag. The error flag
remains High until cleared.
Readback CRC is halted and the error flag cleared when:
• SYNC or DESYNC word is detected.
• JTAG TAP controller is reset.
• Abort is triggered through Slave SelectMAP or ICAP access.
• IPROG (internal program) command is received.
• Suspend mode is enabled.
• The device is in shutdown mode, such as readback shutdown, JSHUTDOWN, or
ISC_ENABLE.
The Readback CRC automatically stops without affecting the user configuration access,
and the error flag is cleared. When the user exits the condition that halted the readback, the
golden value CRC is recalculated and automatically resumes if POST_CRC is set to
ENABLE.
Readback CRC logic runs under these conditions:
• The FPGA has started up successfully, as indicated by the DONE pin going High.
• Any configuration operation must finish with a DESYNC command to release the
configuration logic. If a DESYNC command is not issued, the readback CRC logic
cannot access the configuration logic and cannot run.
• In addition, the JTAG instruction register (IR) must not contain any configuration
instructions (CFG_IN, CFG_OUT, or ISC_ENABLE). When these instructions are
present, at any time, the readback CRC logic can not access the configuration logic
and cannot run. Any configuration operation performed via the JTAG interface
should finish by loading the IR with a value other than these three configuration
instructions.
These dynamically changeable memory locations are masked during background
readback:
• Look-up tables (LUTs) configured as distributed RAM or shift registers are not
checked. In Spartan-6 FPGAs, only SLICEMs can be configured as these memory
elements. Due to the granularity of the LUT masking, any LUTs in the same vertical
alignment as a LUTRAM or SRL16 in a given frame are not checked. To ensure
maximum coverage of the readback CRC, these LUTs used as memories must be kept
in separate frames from the LUTs used for logic.
• Block RAM content is dynamic, so it is not expected to be the same as the initial
configuration; therefore, these elements are not checked.
• Use of the PLL DRP is not masked; therefore, any change to the PLL results in a CRC
error.
• The I/O interface DRP at the top and bottom can be masked; however, LUTs for CLBs
in the same frame are also masked. Similarly, masking LUTs in the top or bottom
frame will also mask the I/O interface.
CRC Masking
Configuration data is organized into frames. Each frame of data configures portions of
multiple configurable logic blocks (CLBs), and multiple frames are needed to configure a
single CLB. The granularity of masking for the Spartan-6 FPGA is at a single frame that
spans several CLBs. To understand the coverage of the CRC, it is necessary to understand
the masking details. Three masking scenarios are presented:
• CLBs containing LUTs configured as distributed RAM
• CLBs near top or bottom IOI DRP
• CLBs near top or bottom IOI DRP with LUT configured as distributed RAM
Note: Distributed RAM is a LUT configured as a distributed RAM or a shift register.
LUT6
LUT6
LUT6
LUT6
LUT6
LUT6
16 CLBs
LUT6
LUT6
SLICEM Frames SLICEX Frames
SLICEM
SLICEL
SLICEX
CLB CLB
UG380_c8_01_052412
There are two types of CLBs, those containing SLICEM, which are able to configure as
distributed RAM, and those containing SLICEL, which cannot. SLICEM CLBs are the only
type that are masked in this scenario.
When a single LUT is configured as a distributed RAM, the 15 adjacent CLBs sharing the
same frame must be masked. Consequently, to maximize coverage of the CRC, it is
recommended to constrain LUTs configured as distributed RAM to frame boundaries. This
limits the amount of masking performed by BitGen and therefore increases the CRC
coverage.
LUT6
LUT6
DRP DRP
SLICEL DRP DRP
SLICEX
LUT6
LUT6
LUT6
LUT6
LUT6
LUT6
SLICEM Frames SLICEX Frames
14 CLBs
Associated with 14 CLBs
Top and Bottom IOI Associated with
Top and Bottom IOI
UG380_c8_02_121212
LUT6
LUT6
LUT6
LUT6
LUT6
LUT6
LUT6
14 CLBs
SLICEM Frames SLICEX Frames
SLICEM
SLICEL
SLICEX
CLB CLB
UG380_c8_03_052412
Figure 8-3: CLB Masking with Both Distributed RAM and IOI DRP Enabled
Readback CRC runs on different clock sources in different modes as indicated in Table 8-1.
Because JTAG has the highest priority in the configuration mode, it takes over the
configuration bus whenever it needs to. The JTAG Instruction Register must not be parked
at the CFG_IN, CFG_OUT, or ISC_ENABLE instructions.
Post_CRC Constraints
There are several Spartan-6 FPGA constraints used for signaling SEU events. All
constraints have the same propagation rule. They are placed as an attribute on the
CONFIG block, then propagated to the physical design object.
POST_CRC
POST_CRC enables the readback CRC feature in the FPGA. It uses the
POST_CRC_INTERNAL primitive's CRCERROR pin for signaling SEU events. By default,
INIT is reserved as an SEU CRC error indicator but can be disabled by setting the
POST_CRC_INIT_FLAG constraint.
The POST_CRC constraint is the best way to convey this information. It attaches to the
CONFIG constraint. POST_CRC can be used by PAR and BitGen to reserve the INIT pin by
not programming the IOB to drive the INIT pin.
POST_CRC can take two values:
• ENABLE
SEU detection is enabled.
• DISABLE
SEU detection is disabled.
POST_CRC_INIT_FLAG
POST_CRC_INIT_FLAG determines whether the Spartan-6 FPGA INIT_B pin is a source
of the SEU error signal. Whether or not the INIT_B pin is used as the error signal, it cannot
be used as user I/O when POST_CRC is enabled.
During configuration, the INIT pin operates normally. After configuration, if SEU analysis
is enabled and INIT is reserved, the INIT pin (default) serves as an SEU status pin. An SEU
is detected when a comparison of the real-time computed CRC differs from the pre-
computed CRC, the CRCERROR pin is driven High, and the INIT pin is driven Low.
POST_CRC_INIT_FLAG is used to disable the INIT_B pin from acting as the readback
CRC error status output pin. The error condition is still available from the
POST_CRC_INTERNAL site.
POST_CRC_INIT_FLAG can take two values:
• ENABLE
The INIT_B pin is used as an indicator of the SEU error signal (default).
• DISABLE
INIT_B is not used as an indicator of the SEU error signal. The error condition is only
available via POST_CRC_INTERNAL primitive.
POST_CRC_SOURCE
POST_CRC_SOURCE determines the source of the golden CRC value.
POST_CRC_SOURCE can take two values:
• PRE_COMPUTED
BitGen calculates the CRC value and stores it in the FPGA. All CRC checks are
compared against this value (default).
• FIRST_READBACK
After successful configuration, the CRC logic runs in the FPGA and stores the first
calculated CRC value. All subsequent CRC checks are compared against this value.
POST_CRC_ACTION
POST_CRC_ACTION determines the behavior of the Readback CRC feature after a CRC
error is detected.
POST_CRC_ACTION can take two values:
• HALT
Once a CRC error is detected, do not perform any further readback CRC testing. After
the error is cleared, the CRC testing resumes (default).
• CONTINUE
Once a CRC error is detected, issue the error flag but continue to perform testing.
POST_CRC_FREQ
POST_CRC_FREQ determines the frequency of the internally generated clock to the
Readback CRC logic.
POST_CRC_FREQ can take these values: 2, 4, 6, 10, 12, 16, 22, 26, 33, 40, and 50.
These values do not directly represent a specific frequency. See the Spartan-6 FPGA Data
Sheet: DC and Switching Characteristics for the approximate frequency associated with each
of these values.
Syntax Examples
This section lists the supported syntax examples for each constraint.
POST_CRC
UCF Syntax Example
CONFIG POST_CRC = [ENABLE|DISABLE]
POST_CRC_INIT_FLAG
UCF Syntax Example
CONFIG POST_CRC_INIT_FLAG = [ENABLE|DISABLE]
POST_CRC_SOURCE
UCF Syntax Example
CONFIG POST_CRC_SOURCE = [PRE_COMPUTED|FIRST_READBACK]
POST_CRC_ACTION
UCF Syntax Example
CONFIG POST_CRC_ACTION = [HALT|CONTINUE]
POST_CRC_FREQ
UCF Syntax Example
CONFIG POST_CRC_FREQ = [2|4|6|10|12|16|22|26|33|40|50]
Xilinx M0 M1 M0 M1
Platform Flash PROM
PROGRAM UG380_c9_01_011513
3. The BitGen startup clock setting must be set for CCLK for serial configuration.
4. The PROM in this diagram represents one or more Xilinx® PROMs. Multiple Xilinx
PROMs can be cascaded to increase the overall configuration storage capacity.
5. The BIT file must be reformatted into a PROM file before it can be stored on the Xilinx
PROM.
6. The CCLK net requires Thevenin parallel termination. See Board Layout for
Configuration Clock (CCLK), page 54.
7. Serial daisy-chains are specific to the Platform Flash (XCFxxS and XCFxxP) PROMs
and SPI serial flash only.
The first device in a serial daisy-chain is the last to be configured. CRC checks only include
the data for the current device, not for any others in the chain.
After the last device in the chain finishes configuration and passes its CRC check, it enters
the Startup sequence. At the Release DONE pin phase in the Startup sequence, the device
places its DONE pin in a High-Z state while the next to the last device in the chain is
configured. After all devices release their DONE pins, the common DONE signal is either
pulled High externally or driven High by the first device in the chain. On the next rising
CCLK edge, all devices move out of the Release DONE pin phase and complete their startup
sequences.
It is important that all DONE pins in a Slave Serial daisy-chain be connected. Only the first
device in the serial daisy-chain should have the DONE active pull-up driver enabled.
Enabling the DONE driver on downstream devices causes contention on the DONE signal.
If using SPI in a serial daisy-chain configuration, the slave FPGAs must be configured with
a design prior to attempting to indirectly program the SPI flash through the master FPGA.
Not doing so causes indirect programming to fail.
Bitstream Formatting
Bitstreams must be customized to inform the FPGAs that more than one bitstream is being
delivered and to cascade information to downstream devices. This must be done by using
PROMGen, a PROM file formatting tool located within the iMPACT programming tool.
typically set for Master Serial mode (to drive CCLK) while the others are set for Slave Serial
mode. For ganged serial configuration, all devices must be identical. Configuration can be
driven from a configuration PROM or from an external configuration controller.
X-Ref Target - Figure 9-2
Xilinx M0 M1
Platform PROM
D0 DIN DOUT
CLK CCLK
CE Spartan-6
RESET/OE FPGA
Master
Serial
PROGRAM_B
DONE INIT_B
PROGRAM
M0 M1
DIN DOUT
CCLK
Spartan-6
FPGA
Slave
Serial
PROGRAM_B
DONE INIT_B
UG380_c9_02_052009
9. Ganged serial configuration is specific to the Platform Flash (XCFxxS and XCFxxP)
PROMs and SPI serial flash only.
10. Fallback MultiBoot is not supported in this configuration.
There are a number of important considerations for ganged serial configuration:
• Startup sequencing (GTS)
GTS should be released before DONE or during the same cycle as DONE to ensure all
devices are operational when all DONE pins have been released.
• Disable the active DONE driver for all devices
For ganged serial configuration, the active DONE driver must be disabled for all
devices if the DONE pins are tied together, because there can be variations in the
startup sequencing of each device. A pull-up resistor is therefore required on the
common DONE signal.
-g DriveDone:no (BitGen option, all devices)
• Connect all DONE pins if using a Master device
It is important to connect the DONE pins for all devices in ganged serial configuration
if one FPGA is used as the Master device. Failing to connect the DONE pins can cause
configuration to fail for individual devices in this case. If all devices are set for Slave
Serial mode, the DONE pins can be disconnected (if the external CCLK source
continues toggling until all DONE pins go High).
For debugging purposes, it is often helpful to have a way of disconnecting individual
DONE pins from the common DONE signal.
• DONE pin rise time
After all DONE pins are released, the DONE pin should rise from logic 0 to logic 1 in
one CCLK cycle. If additional time is required for the DONE signal to rise, the BitGen
-g DonePipe option can be set for all devices in the serial daisy-chain.
• Configuration Clock (CCLK) as the clock signal for board layout
The CCLK signal is relatively slow, but the edge rates on the Spartan-6 FPGA input
buffers are very fast. Even minor signal integrity problems on the CCLK signal can
cause the configuration to fail. (Typical failure mode: DONE Low and INIT_B High.)
Therefore, design practices that focus on signal integrity, including signal integrity
simulation with IBIS, are recommended.
• Signal fanout
Designers must focus on good signal integrity when using ganged serial
configuration. Signal integrity simulation is recommended.
• PROM files for ganged serial configuration
PROM files for ganged serial configuration are identical to the PROM files used to
configure single devices. There are no special PROM file considerations.
If Readback is going to be performed on the device after configuration, the RDWR_B and
BUSY signals must be handled appropriately. (For details, refer to Chapter 6, Readback
and Configuration Verification.)
Otherwise, RDWR_B can be tied Low and BUSY can be ignored. The BUSY signal never
needs to be monitored when configuring Spartan-6 devices. Refer to Bitstream Loading
(Steps 4-7), page 83 and to Chapter 6, Readback and Configuration Verification.
X-Ref Target - Figure 9-3
DATA[7:0]
CCLK
WRITE
BUSY
M1 M0 M1 M0
Spartan-6 Spartan-6
FPGA FPGA
Slave Slave
SelectMAP SelectMAP
D[7:0] D[7:0]
CCLK CCLK
RDWR_B RDWR_B
BUSY BUSY
DONE
INIT
PROGRAM
UG380_c9_03_052009
Parallel Daisy-Chain
Spartan-6 FPGA configuration supports parallel daisy-chains. Figure 9-4 shows an
example schematic of the leading device in Master BPI configuration mode. The leading
device can also be in Master or Slave SelectMAP modes. The D[15:0], CCLK, RDWR_B,
PROGRAM_B, DONE, and INIT_B pins share a common connection between all of the
devices. The CSI_B pins are daisy-chained, gating the configuration data to each device in
sequence.
X-Ref Target - Figure 9-4
4.7 kΩ
330Ω
330Ω
330Ω
BUSY BUSY BUSY No
CSO_B CSO_B CSO_B
INIT_B INIT_B INIT_B Connect
DONE DONE DONE
Spartan-6 Spartan-6 Spartan-6
A[25:0] A[25:0]FPGA FPGA FPGA
D[15:0] D[15:0] D[15:0] D[15:0]
Flash FCS_B FCS_B CSI_B CSI_B
FOE_B FOE_B RDWR_B RDWR_B
FWE_B FWE_B CCLK CCLK CCLK
M1 M0 M1 M0 M1 M0
0 0 1 0 1 0
Ganged SelectMAP
It is also possible to configure simultaneously multiple devices with the same
configuration bitstream by using a ganged SelectMAP configuration. In a ganged
SelectMAP arrangement, the CSI_B pins of two or more devices are connected together (or
tied to ground), causing all devices to recognize data presented on the D pins.
All devices can be set for Slave SelectMAP mode if an external oscillator is available, or one
device can be designated as the Master device, as illustrated in Figure 9-5.
X-Ref Target - Figure 9-5
M1 M0
PROGRAM_B
Spartan-6 FPGA
SelectMAP
D[0:7] D[0:7] Master
CCLK CCLK
PROGRAM_B
CE BUSY
RESET/OE INIT_B
Xilinx 330Ω
Platform Flash
DONE
PROM
M1 M0
Spartan-6 FPGA
SelectMAP
D[0:7] Slave
CCLK
PROGRAM_B
4.7 kΩ BUSY
INIT_B
DONE
UG380_c9_05_011513
7. The Xilinx PROM must be set for parallel mode. This mode is available on the XCFxxP
devices.
8. When configuring a Spartan-6 device in SelectMAP mode from a Xilinx configuration
PROM, the RDWR_B and CSI_B signals can be tied Low (see SelectMAP Data Loading,
page 35).
9. Ganged SelectMAP configuration is specific to the Platform Flash XCFxxP PROM.
10. The CCLK net requires Thevenin parallel termination. See Board Layout for
Configuration Clock (CCLK), page 54.
If one device is designated as the Master, the DONE pins of all devices must be connected
with the active DONE drivers disabled. An external pull-up resistor is required on the
common DONE signal. Designers must carefully focus on signal integrity due to the
increased fanout of the outputs from the PROM. Signal integrity simulation is
recommended.
Readback is not possible if the CSI_B signals are tied together, because all devices
simultaneously attempt to drive the D signals.
SelectMAP ABORT
An ABORT is an interruption in the SelectMAP configuration or readback sequence
occurring when the state of RDWR_B changes while CSI_B is asserted. During a
configuration ABORT, internal status is driven onto the D[7:4] pins over the next four
CCLK cycles. The other D pins are always High. After the ABORT sequence finishes, the
user can resynchronize the configuration logic and resume configuration. For applications
that must deassert RDWR_B between bytes, see Accessing Configuration Registers
through the SelectMAP Interface, page 116.
CCLK
CSI_B
RDWR_B
D[0:7] STATUS
BUSY
ABORT UG380_c9_06_021710
CCLK
CSI_B
RDWR_B
D[0:7] FPGA
BUSY
ABORT UG380_c9_07_052009
ABORTs during readback are not followed by a status word because the RDWR_B signal is
set for write control (FPGA D[x:0] pins are inputs).
The ABORT sequence lasts four CCLK cycles. During those cycles, the status word changes
to reflect data alignment and ABORT status. A typical sequence might be:
11011111 => DALIGN = 1, IN_ABORT_B = 1
11001111 => DALIGN = 1, IN_ABORT_B = 0
10001111 => DALIGN = 0, IN_ABORT_B = 0
10011111 => DALIGN = 0, IN_ABORT_B = 1
After the last cycle, the synchronization word can be reloaded to establish data alignment.
SelectMAP Reconfiguration
The term reconfiguration refers to reprogramming an FPGA after its DONE pin has gone
High. Reconfiguration can be initiated by pulsing the PROGRAM_B pin (this method is
identical to configuration) or by resynchronizing the device and sending configuration
data.
To reconfigure a device in SelectMAP mode without pulsing PROGRAM_B, the BitGen
-g Persist option must be set—otherwise, the DATA pins become user I/O after
configuration. Reconfiguration must be enabled in BitGen. See Table 5-3 for a list of pins
affected by Persist in the SelectMAP configuration mode.
JTAG Configuration/Readback
Test-Logic-Reset
1
0
1 1
Select Next State 0
Run-Test/Idle Select-DR Select-IR
TMS 0 0
1 1
Capture-DR Capture-IR
0 0
Shift-DR Shift-IR
Shift-IR/Shift-DR
0 0
1 1
1 1
Exit1-DR Exit1-IR
0 0
Pause-DR Pause-IR
0 0
1 1
Exit2-DR Exit2-IR
0 0
1 1
Update-DR Update-IR
TCK 1
0
1
0
Select Data
Instruction Decoder Register
TDO
Bypass[1] Register
IDCODE[32] Register
Boundary-Scan[N] Register
Figure 10-1 diagrams a 16-state finite state machine. The four TAP pins control how data is
scanned into the various registers. The state of the TMS pin at the rising edge of TCK
determines the sequence of state transitions. There are two main sequences, one for
shifting data into the data register and the other for shifting an instruction into the
instruction register.
A transition between the states only occurs on the rising edge of TCK, and each state has a
different name. The two vertical columns with seven states each represent the Instruction
Path and the Datapath. The data registers operate in the states whose names end with
"DR," and the instruction register operates in the states whose names end in "IR." The states
are otherwise identical.
1 TEST-LOGIC-RESET
0
1 1 1
0 RUN-TEST/IDLE SELECT-DR-SCAN SELECT-IR-SCAN
0 0
1 1
CAPTURE-DR CAPTURE-IR
0 0
SHIFT-DR 0 SHIFT-IR 0
1 1
EXIT1-DR 1 EXIT1-IR 1
0 0
PAUSE-DR 0 PAUSE-IR 0
1 1
0 0
EXIT2-DR EXIT2-IR
1 1
UPDATE-DR UPDATE-IR
1 0 1 0
Note: The value shown adjacent to each state transition represents the signal
present at TMS at the time of a rising edge at TCK.
UG380_c11_02_051109
Spartan-6 devices support the mandatory IEEE Std 1149.1 commands as well as several
Xilinx vendor-specific commands. The EXTEST, INTEST, SAMPLE, BYPASS, IDCODE,
USERCODE, and HIGHZ instructions are all included. The TAP also supports internal
user-defined registers (USER1, USER2, USER3, and USER4) and configuration/readback
of the device.
The Spartan-6 FPGA boundary-scan operations are independent of mode selection. The
boundary-scan mode in Spartan-6 devices overrides other mode selections. For this
reason, boundary-scan instructions using the boundary-scan register
(SAMPLE/PRELOAD, INTEST, and EXTEST) must not be performed during
configuration. All instructions except the user-defined instructions are available before a
Spartan-6 device is configured. After configuration, all instructions are available.
When boundary-scan testing is carried out on a configured Spartan-6 device, and the IOB
is configured to include an inverter, incorrect values can be driven by EXTEST and read on
the SAMPLE instructions. When the IOB is configured to include an inverter, this inverter
is included on the path from the pad to the boundary-scan cell. This results in unexpected
values being driven and/or sampled by the cell. The SAMPLE, PRELOAD, EXTEST, and
INTEST JTAG instructions can all be affected.
There are a number of alternatives that can be employed.
1. Prevent FPGA configuration. This can be achieved by holding the INIT_B pin Low, or
alternatively changing the Mode pin values if configuring from flash.
2. Clear prior configuration using PROGRAM_B pin or a power cycle and prevent
reconfiguration.
3. Overwrite the FPGA configuration with a design that does not use inversion at the
inputs.
4. Modify the original design to avoid the IOB invert path.
JSTART and JSHUTDOWN are instructions specific to the Spartan-6 architecture and
configuration flow. In Spartan-6 devices, the TAP controller is not reset by the
PROGRAM_B pin and can only be reset by bringing the controller to the TLR state. The
TAP controller is reset on power up.
For details on the standard boundary-scan instructions EXTEST, INTEST, and BYPASS,
refer to IEEE Std 1149.1.
Boundary-Scan Architecture
Spartan-6 device registers include all registers required by IEEE Std 1149.1. In addition to
the standard registers, the family contains optional registers for simplified testing and
verification (Table 10-1).
Boundary-Scan Register
The test primary data register is the boundary-scan register. Boundary-scan operation is
independent of individual IOB configuration. Each IOB, bonded or unbonded, starts as
bidirectional with 3-state control. Later, it can be configured to be an input, output, or
3-state only. Therefore, three data register bits are provided per IOB (Figure 10-1).
When conducting a data register (DR) operation, the DR captures data in a parallel fashion
during the CAPTURE-DR state. The data is then shifted out and replaced by new data
during the SHIFT-DR state. For each bit of the DR, an update latch is used to hold the input
data stable during the next SHIFT-DR state. The data is then latched during the
UPDATE-DR state when TCK is Low.
The update latch is opened each time the TAP controller enters the UPDATE-DR state. Care
is necessary when exercising an INTEST or EXTEST to ensure that the proper data has been
latched before exercising the command. This is typically accomplished by using the
SAMPLE instruction.
Internal pull-up and pull-down resistors should be considered when test vectors are being
developed for testing opens and shorts. The HSWAPEN pin determines whether the IOB
has a pull-up resistor. Figure 10-3 is a representation of Spartan-6 FPGA boundary-scan
architecture.
X-Ref Target - Figure 10-3
TDI
1x sd
01 D Q D Q
00
LE
INTEST
1
IOB.I
0
1x sd
01 D Q D Q
00
LE
1
IOB.O 0
IOB.T 0
1x sd
01 D Q D Q 1
00
LE
EXTEST
Instruction Register
The Instruction Register (IR) for the Spartan-6 device is connected between TDI and TDO
during an instruction scan sequence. In preparation for an instruction scan sequence, the
instruction register is parallel-loaded with a fixed instruction capture pattern. This pattern
is shifted out onto TDO (LSB first), while an instruction is shifted into the instruction
register from TDI.
To invoke an operation, the desired opcode must be loaded into the Instruction Register
(IR). The length of the instruction register varies by device type. However, the IR is
6 bits wide for all Spartan-6 FPGAs.
Table 10-3 shows the instruction capture values loaded into the IR as part of an instruction
scan sequence.
BYPASS Register
The other standard data register is the single flip-flop BYPASS register. It passes data
serially from the TDI pin to the TDO pin during a bypass instruction. This register is
initialized to zero when the TAP controller is in the CAPTURE-DR state.
USERCODE Register
The USERCODE instruction is supported in the Spartan-6 family. This register allows a
user to specify a design-specific identification code. The USERCODE can be programmed
into the device and can be read back for verification later. The USERCODE is embedded
into the bitstream during bitstream generation (BitGen -g UserID option) and is valid
only after configuration. If the device is blank or the USERCODE was not programmed,
the USERCODE register contains 0xFFFFFFFF.
TMS
TDI
TTAPTCK TTCKTAP
TCK
TTCKTDO
Data to be captured
For further information on the startup sequence, bitstream, and internal configuration
registers referenced here, refer to Configuration Sequence in Chapter 5.
Power-Up
No
VCCINT > .75V
Yes
Clear Configuration
Memory Once More
No
INIT_B = High?
Yes
Shutdown Load
Load CFG_IN JSHUTDOWN
Instruction Sequence
Instruction
Load
Bitstream
CRC No
Abort Startup
Correct?
Yes
Load JSTART
Instruction
Startup
Sequence
Yes
Operational Reconfigure?
No UG380_c10_05_042909
Notes:
1. In the Configuration Register, data is shifted in from the right (TDI) to the left (TDO), MSB first. (Shifts into the Configuration
Register are different from shifts into the other registers in that they are MSB first.)
JTAG Header
TDO
Spartan-6 Spartan-6 Spartan-6
FPGA FPGA FPGA
TDI TDI TDO TDI TDO TDI TDO
TMS TMS TMS TMS
TCK TCK TCK TCK
PROGRAM_B PROGRAM_B PROGRAM_B
When the shutdown sequence is clocked by CCLK or UserCLK, the user is responsible for
knowing how many JTAGCLK cycles in Run/Test Idle are needed to complete the
shutdown sequence. The shutdown sequence is the startup sequence in reverse order.
Note: When configuring the device through JTAG, the startup and shutdown clock should come
from TCK, regardless of the selection in BitGen.