- •Revision History
- •Table of Contents
- •About This Guide
- •Guide Contents
- •Additional Documentation
- •Additional Resources
- •Summary
- •Introduction
- •Clock Resources
- •Global Clocking Infrastructure
- •I/O Clocking Infrastructure
- •Spanning a Full Bank with a Single Global Clock Input With Two I/O Clocks
- •Clock Inputs
- •Clocking Structure Guidelines
- •SDR Data Rate (FD Register in IOB, No IOSERDES2)
- •DDR Data Rate (IDDR2, ODDR2, No IOSERDES2)
- •High-Speed IOSERDES2 Usage for Advanced Serialization
- •IOSERDES2 (SDR)
- •IOSERDES2 (DDR)
- •IOSERDES2 with PLL
- •Examples of High-Speed I/O Clock Network Connections
- •Clock Buffers and Multiplexers
- •Global Clock Input Buffer Primitives
- •Global Clock Buffer Primitives
- •BUFGMUX
- •BUFGMUX_1
- •BUFG
- •BUFGCE and BUFGCE_1
- •BUFH
- •Clock Buffers for the High-Speed I/O Clock Region
- •BUFIO2
- •BUFIO2_2CLK
- •BUFPLL
- •BUFPLL_MCB
- •BUFIO2FB
- •Clock Management Summary
- •DCM Summary
- •DCM Introduction
- •Compatibility and Comparison with Other Xilinx FPGA Families
- •DCM Functional Overview
- •Delay-Locked Loop
- •Skew Adjustment
- •Digital Frequency Synthesizer
- •Phase Shift
- •Fixed Phase Shift
- •Variable Phase Shift
- •Example 1
- •Example 2
- •Status Logic
- •DCM Primitives
- •DCM_SP Primitive
- •DCM_CLKGEN Primitive
- •DCM_SP Design Guidelines
- •Input Clock Frequency Range
- •Output Clock Frequency Range
- •Input Clock and Clock Feedback Variation
- •Cycle-to-Cycle Jitter
- •Period Jitter
- •DLL Feedback Delay Variance
- •Spread Spectrum Clock Reception
- •Optimal DCM Clock and External Feedback Inputs
- •LOCKED Output Behavior
- •Using the LOCKED Signal
- •RST Input Behavior
- •DCM_CLKGEN Design Guidelines
- •Dynamic Frequency Synthesis
- •Spread-Spectrum Clock Generation
- •Spread-Spectrum Generation
- •Fixed Spread Spectrum
- •Soft Spread Spectrum
- •Free-Running Oscillator
- •Introduction
- •Phase Lock Loop (PLL)
- •Aligning PLL using CLK_FEEDBACK and BUFIO2FB
- •General Usage Description
- •PLL Primitives
- •PLL_BASE Primitive
- •PLL_ADV Primitive
- •Clock Network Deskew
- •Frequency Synthesis Only
- •Jitter Filter
- •Limitations
- •VCO Operating Range
- •Minimum and Maximum Input Frequency
- •Duty Cycle Programmability
- •Phase Shift
- •PLL Programming
- •Determine the Input Frequency
- •Determine the M and D Values
- •PLL Ports
- •PLL Attributes
- •PLL Clock Input Signals
- •Counter Control
- •Clock Shifting
- •Detailed VCO and Output Counter Waveforms
- •Missing Input Clock or Feedback Clock
- •PLL Use Models
- •Clock Network Deskew
- •PLL with Internal Feedback
- •Zero Delay Buffer
- •Differential BUFIO2FB Zero Delay Buffer Example (Verilog)
- •Differential BUFIO2FB Zero Delay Buffer Example (VHDL)
- •DCM Driving PLL
- •PLL Driving DCM
- •PLL to PLL Connection
- •Dynamic Reconfiguration Port
- •Application Guidelines
- •PLL Application Example
Clock Buffers and Multiplexers
An example of the I/O clock network routing for the three I/O clocks is described in Figure 1-30.
IOCLK
IOCLK
IOCLK
BUFGMUX (Any)
BUFGMUX_X2Y1-4 or BUFGMUX_X3X5-8
IOCLK (BUFIO_X3Y0)
IOCLK (BUFIO_X3Y1)
IOCLK (BUFIO_X3Y6)
IOCLK (BUFIO_X3Y7)
IOCLK (BUFPLL_X1Y0)
IOCLK (BUFPLL_X1Y1)
ug382_c1_29_081210
Figure 1-30: Available I/O Clock Network Resources For BUFIO2 Clocking Region
BUFIO2
The BUFIO2 takes a GCLK clock input and generates two clock outputs and a strobe pulse as illustrated in Figure 1-31.
BUFIO2
DIVCLK
I |
IOCLK |

SERDESSTROBE
ug382_c1_21_120809
Figure 1-31: BUFIO2 Primitive
Spartan-6 FPGA Clocking Resources www.xilinx.com 45
UG382 (v1.10) June 19, 2015 |
Send Feedback |
|
Chapter 1: Clock Resources
Table 1-18 lists the BUFIO2 ports. The IOCLK output is a buffered version of the input clock (I). The period and duty-cycle of the DIVCLK output is dependent on the attribute setting listed in Table 1-19.
Table 1-18: BUFIO2 Port List and Definitions
Port Name |
Type |
|
|
Definition |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Clock input. Can optionally be connected to the |
|||
I |
Input |
|
IODELAY2 (DATAOUT) or the GTP_DUAL tile |
||||
|
|
|
|
(GTPCLKOUT0[1:0], GTPCLKOUT1[1:0]). |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
I/O clock network output. Connects to IODDR2 (C0 or |
|||
IOCLK |
Output |
|
C1), IOSERDES2 (CLK0 or CLK1), or IODELAY2 |
||||
|
|
|
|
(IOCLK0, IOCLK1). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Divided clock output. Connects to BUFG, PLL_BASE |
|||
DIVCLK |
Output |
|
(CLKIN), DCM_SP (CLKIN), and DCM_CLKGEN |
||||
|
|
|
|
(CLKIN). |
|
|
|
|
|
|
|
|
|
|
|
SERDESSTROBE |
Output |
|
I/O clock network output used to drive IOSERDES2 |
||||
|
(IOCE). |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Table 1-19: BUFIO2 Attributes |
|
|
|
||||
|
|
|
|
|
|
|
|
Attribute Name |
|
|
Description |
|
Possible Values |
Default Value |
|
|
|
|
|
|
|
||
|
|
Sets the DIVCLK and SERDESSTROBE |
|
|
|
||
|
|
divider divide-by values. |
|
|
|
||
DIVIDE |
|
FDIVCLK = FIN / DIVIDE |
|
1, 3, 4, 5, 6, 7, 8 |
1 |
||
|
<USE_DOUBLER = FALSE> |
|
|||||
|
|
|
|
|
|||
|
|
FDIVCLK = (2 * FIN) / DIVIDE |
|
|
|
||
|
|
<USE_DOUBLER = TRUE> |
|
|
|
||
|
|
|
|
|
|
||
|
|
When FALSE, DIVCLK outputs source |
|
|
|
||
DIVIDE_BYPASS |
|
from divider. When TRUE, DIVCLK |
|
TRUE, FALSE |
TRUE |
||
|
|
outputs source from input I, bypassing |
|
|
|
||
|
|
the divider. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
When set to TRUE, BUFIO2 placement |
|
|
|
||
|
|
is restricted to the I_INVERT locations |
|
|
|
||
|
|
of BUFIO2 (see Figure 1-7). Input clock |
|
|
|
||
|
|
is inverted, shifting the IOCLK output |
|
|
|
||
I_INVERT |
|
by 180°. DIVCLK and SERDESSTROBE |
|
TRUE, FALSE |
FALSE |
||
|
|
are also affected, as shown in |
|
|
|
||
|
|
Figure 1-32 and Figure 1-33. Primarily |
|
|
|
||
|
|
used for IODDR2 or IOSERDES2 |
|
|
|
||
|
|
(DATA_RATE = DDR). |
|
|
|
||
|
|
|
|
|
|
||
|
|
Used for ISERDES2/OSERDES2 with |
|
|
|
||
|
|
DATA_RATE = DDR. When set to |
|
|
|
||
USE_DOUBLER |
|
TRUE, doubles the DIVCLK and |
|
TRUE, FALSE |
FALSE |
||
|
|
SERDESSTROBE frequencies. |
|
|
|
||
|
|
FDIVCLK = (2 * FIN) / DIVIDE |
|
|
|
||
|
|
|
|
|
|
|
|
As listed in Table 1-19, when the DIVIDE_BYPASS is set to TRUE, the DIVCLK output is a buffered version of the input clock and the SERDESSTROBE output is driven to 1. When the DIVIDE_BYPASS is set to FALSE then the DIVCLK and SERDESSTROBE outputs will
46 |
Send Feedback |
|
www.xilinx.com |
Spartan-6 FPGA Clocking Resources |
|
UG382 (v1.10) June 19, 2015 |
Clock Buffers and Multiplexers
be the input clock divided by the setting of the divide attribute except when using USE_DOUBLER.
For applications where the I/O clock network is driven by a DDR clock, the USE_DOUBLER must be set to TRUE. Setting USE_DOUBLER = TRUE provides the required DIVCLK and SERDESSTROBE outputs when connected to IOSERDES2 with DATA_RATE = DDR (Figure 1-32). An additional BUFIO2 is required to create the 180° phase shift (see Figure 1-33).
Single Data Rate Clock
IBUFG/IBUFGDS |
BUFIO2 |
USE_DOUBLER = False |
RXCLK
Single Ended or Differential
RXCLK (I_INVERT = FALSE)
RXCLK (I_INVERT = TRUE)
IOCLK0
DIVIDE = 1
DIVCLK
SERDESSTROBE
DIVCLK
DIVIDE = 3
SERDESSTROBE
DIVCLK
DIVIDE = 4
SERDESSTROBE
DIVCLK
DIVIDE = 5
SERDESSTROBE
DIVCLK
DIVIDE = 6
SERDESSTROBE
DIVCLK
DIVIDE = 7
SERDESSTROBE
DIVCLK
DIVIDE = 8
SERDESSTROBE
SERDESSTROBE
IOCLK
GCLK
DIVCLK
BUFG
UG382_c1_30_061113
Figure 1-32: BUFIO2 Single Data Rate Clock
Spartan-6 FPGA Clocking Resources www.xilinx.com 47
UG382 (v1.10) June 19, 2015 |
Send Feedback |
|
Chapter 1: Clock Resources
Double Data Rate Clock
IBUFG/IBUFGDS
RXCLK
Single Ended or Differential
RXCLK
BUFIO2 Clock Input
(I_INVERT = FALSE)
IOCLK0
BUFIO2 Clock Input
(I_INVERT = TRUE)
IOCLK1
DIVCLK
DIVIDE = 3
SERDESSTROBE
DIVCLK
DIVIDE = 4
SERDESSTROBE
DIVCLK
DIVIDE = 5
SERDESSTROBE
DIVCLK 
DIVIDE = 6
SERDESSTROBE
DIVCLK
DIVIDE = 7
SERDESSTROBE
DIVCLK
DIVIDE = 8
SERDESSTROBE
BUFIO2
USE_DOUBLER = True
|
|
SERDESSTROBE |
|
|
|
IOCLK0 |
|
|
|
||
|
|
|
GCLK |
|
|
|
|
BUFIO2 |
|
DIVCLK |
|
|
BUFG |
||
I_INVERT = TRUE
IOCLK1
UG382_c1_31_061113
Figure 1-33: BUFIO2 Double Data Rate Clock
48 |
Send Feedback |
|
www.xilinx.com |
Spartan-6 FPGA Clocking Resources |
|
UG382 (v1.10) June 19, 2015 |
