Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
литература / Spartan-6 FPGA Clocking Resources.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
3.31 Mб
Скачать

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