UG362
UG362
Clocking Resources
User Guide
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Guide Contents
This manual contains the following chapters:
• Chapter 1, Clocking Resources
• Chapter 2, Mixed-Mode Clock Manager
Additional Documentation
The following documents are also available for download at
http://www.xilinx.com/support/documentation/virtex-6.htm.
• Virtex-6 Family Overview
The features and product selection of the Virtex-6 family are outlined in this overview.
• Virtex-6 FPGA Data Sheet: DC and Switching Characteristics
This data sheet contains the DC and Switching Characteristic specifications for the
Virtex-6 family.
• Virtex-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.
• Virtex-6 FPGA Configuration Guide
This all-encompassing configuration guide includes chapters on configuration
interfaces (serial and SelectMAP), bitstream encryption, boundary-scan and JTAG
configuration, reconfiguration techniques, and readback through the SelectMAP and
JTAG interfaces.
• Virtex-6 FPGA SelectIO Resources User Guide
This guide describes the SelectIO™ resources available in all Virtex-6 devices.
• Virtex-6 FPGA Configurable Logic Blocks User Guide
This guide describes the capabilities of the configurable logic blocks (CLBs) available
in all Virtex-6 devices.
• Virtex-6 FPGA Memory Resources User Guide
The functionality of the block RAM and FIFO are described in this user guide.
Clocking Resources
Global, Regional and I/O Clocks
For clocking purposes, each Virtex-6 device is divided into regions. The number of regions
varies with device size, six regions in the smallest device to 18 regions in the largest one. A
region is 40 CLBs high with a horizontal clock row in its center (HROW). Global I/O and
regional clocking resources manage complex and simple clocking requirements. Non-clock
resources, such as local routing, are not recommended when performing clock functions.
Global Clocks
Each Virtex-6 device has 32 global clock lines that can clock all sequential resources on the
whole device (CLB, block RAM, DSPs, and I/O). Any 12 of these 32 global clock lines can
be used in any region. Global clock lines are only driven by a global clock buffer, which can
also be used as a clock enable circuit, or a glitch-free multiplexer. It can select between two
clock sources, and can also switch away from a failed clock source.
A global clock buffer is often driven by a Clock Management Tile (CMT) to eliminate the
clock distribution delay, or to adjust its delay relative to another clock. There are more
global clocks than CMTs, but a CMT often drives more than one global clock.
Clocking Architecture
Each Virtex-6 device has a center column containing the dedicated configuration pins. Free
regions above and below are filled with CLBs (logic only). There is a CMT column adjacent
to the right of the center column with one CMT per region. A CMT has two Mixed-Mode
Clock Managers (MMCMs). See Chapter 2, Mixed-Mode Clock Manager. The CMT
column also contains the 32 vertical spines of the global clock trees. In the horizontal
direction, Virtex-6 FPGAs are organized by regions each 40 CLBs and one bank high. There
is a horizontal clock row (HROW) in the center of each region containing the horizontal
clock spines (12), six regional clock tracks (BUFR) and the horizontal clocks (up to 12
BUFH). BUFHs use the same resources as the horizontal clock spines. A new type of
horizontal clock tree, the high-performance clock is introduced in this architecture
providing a low jitter clock path from the MMCMs to the I/O. See the Virtex-6 FPGA
SelectIO User Guide for more detail.
Every Virtex-6 FPGA has two I/O columns to the left and right of the center column
labeled I/O center left (IOCL) and I/O center right (IOCR) with CLBs in between. Every
LX, LXT, and SXT device has an I/O outer column at the left edge of the device (IOOL) and
some devices have an outer edge I/O column to the right. Other devices have a Gigabit
Transceiver (GT) column to the right instead. There is a horizontal clock row (HROW)
running in the center of each region/bank. The HROW contains the vertical global clock
spines of the global clock buffers (BUFG) and the BUFHs if the vertical global clock spines
are used as such. The inner I/O columns contain eight global clock pin pairs (GCs) spread
over four banks for maximum flexibility in I/O standards. All I/O columns contain four
clock-capable pin pairs (CCs) which can connect to BUFIO and BUFR. Two of the four CCs
per bank can connect to BUFIOs spanning the adjacent regions. Additionally, the BUFRs
and CC pins in the center columns can directly drive MMCMs in the same region and
indirectly BUFGs through the vertical global clock spins that drive the BUFGs. Figure 1-1
shows an example of the high-level banking and global-clocking architecture. Figure 1-2
shows a more detailed view of the clocking in a single region with two inner column I/O
banks.
X-Ref Target - Figure 1-1
CLB MMCM01
CMT
CLB MMCM00
Figure 1-1: Example of Block Level Banking and Global Clocking Architecture
To Bank To Bank
Two Multi- Above Above
Region Two Single
BUFIOs CMT Region BUFIOs
MMCM X0Yn
In Same Region
IOCL IOCR
Bank Bank
40 I/Os 4 4 40 I/Os
SRCC Pin Pair SRCC Pin Pair
MMCM X0Yn
In Same Region
To Bank To Bank
Below Below
SRCC = Single Region Clock Capable I/O Single ended clocks must be connected
MRCC = Multi Region Clock Capable I/O to the P-side of the differential pair.
UG362_c1_02_011609
For more information on clock input pins, consult the Die Level Bank Numbering and Clock
Pins Overview section in UG365: Virtex-6 FPGA Packaging and Pinout Specification.
These two primitives work in conjunction with the Virtex-6 FPGA SelectIO™ resource by
setting the IOSTANDARD attribute to the desired standard. Refer to Chapter 1 of the
Virtex-6 FPGA SelectIO Resources User Guide for a complete list of possible I/O standards.
Global clock buffers allow various clock/signal sources to access the global clock trees and
nets. The possible sources for input to the global clock buffers include:
• Global clock inputs
• Clock-capable inputs in the same region of the inner I/O columns.
• Clock Management Tile (CMT) consisting of mixed-mode clock managers (two
MMCMs per CMT) driving BUFGs in the same half of the device.
• Other global clock buffer outputs (BUFGs)
• General interconnect
• Regional clock buffers (BUFRs)
• Gigabit transceivers
The Virtex-6 FPGA clock-capable inputs can drive global clock buffers indirectly through
the vertical clock network that exists in the MMCM column. The 32 BUFGs are organized
into two groups of 16 BUFGs in the top and bottom of the device. Any resources (e.g., GTX
transceivers) connecting to the BUFGs directly have a top/bottom limitation. For example,
each MMCM in the top can only drive the 16 BUFGs residing in that top of the device.
Similarly, the MMCMs in the bottom drive the 16 BUFGs in the bottom.
All global clock buffers can drive all clock regions in Virtex-6 devices. However, only 12
different clocks can be driven in a single clock region. A clock region (40 CLBs) is a branch
of the clock tree consisting of 20 CLB rows up and 20 CLB rows down. A clock region only
spans halfway across the device.
The clock buffers are designed to be configured as a synchronous or asynchronous glitch-
free 2:1 multiplexer with two clock inputs. Virtex-6 device control pins provide a wide
range of functionality and robust input switching. In the Virtex-6 clocking architecture,
BUFGCNTRL multiplexers and all derivatives can be cascaded to adjacent clock buffers
within the group of 16 in the upper/lower half of the device, effectively creating a ring of
16 BUFGMUXes (BUFGCNTRL multiplexers) in the upper half and another ring of 16 in
the lower half. Figure 1-3 shows a simplified diagram of cascading BUFGs.
X-Ref Target - Figure 1-3
ug362_c1_03_111510
The following subsections detail the various configurations, primitives, and use models of
the Virtex-6 FPGA clock buffers.
Notes:
1. All primitives are derived from a software preset of BUFGCTRL.
BUFGCTRL
The BUFGCTRL primitive shown in Figure 1-4, can switch between two asynchronous
clocks. All other global clock buffer primitives are derived from certain configurations of
BUFGCTRL. The ISE software tools manage the configuration of all these primitives.
BUFGCTRL has four select lines, S0, S1, CE0, and CE1. It also has two additional control
lines, IGNORE0 and IGNORE1. These six control lines are used to control the input I0 and
I1.
X-Ref Target - Figure 1-4
BUFGCTRL
IGNORE1
CE1
S1
I1
O
I0
S0
CE0
IGNORE0
UG362_c1_03_040209
BUFGCTRL is designed to switch between two clock inputs without the possibility of a
glitch. When the presently selected clock transitions from High to Low after S0 and S1
change, the output is kept Low until the other (to-be-selected) clock has transitioned from
High to Low. Then the new clock starts driving the output.The default configuration for
BUFGCTRL is falling edge sensitive and held at Low prior to the input switching.
BUFGCTRL can also be rising edge sensitive and held at High prior to the input switching
by using the INIT_OUT attribute.
In some applications the conditions previously described are not desirable. Asserting the
IGNORE pins will bypass the BUFGCTRL from detecting the conditions for switching
between two clock inputs. In other words, asserting IGNORE causes the MUX to switch
the inputs at the instant the select pin changes. IGNORE0 causes the output to switch away
from the I0 input immediately when the select pin changes, while IGNORE1 causes the
output to switch away from the I1 input immediately when the select pin changes.
Selection of an input clock requires a “select” pair (S0 and CE0, or S1 and CE1) to be
asserted High. If either S or CE is not asserted High, the desired input will not be selected.
In normal operation, both S and CE pairs (all four select lines) are not expected to be
asserted High simultaneously. Typically only one pin of a “select” pair is used as a select
line, while the other pin is tied High. The truth table is shown in Table 1-3.
Notes:
1. Old input refers to the valid input clock before this state is achieved.
2. For all other states, the output becomes the value of INIT_OUT and does not toggle.
Although both S and CE are used to select a desired output, each one of these pins behaves
slightly different. When using CE to switch clocks, the change in clock selection can be
faster than when using S. Violation in Setup/Hold time of the CE pins causes a glitch at the
clock output. On the other hand, using the S pins allows the user to switch between the two
clock inputs without regard to Setup/Hold times. It will not result in a glitch. See
BUFGMUX_CTRL. The CE pin is designed to allow backward compatibility from previous
Virtex architectures.
The timing diagram in Figure 1-5 illustrates various clock switching conditions using the
BUFGCTRL primitives. Exact timing numbers are best found using the speed specification.
1 2 3 4 5 6
I0
I1
TBCCCK_CE
CE0
CE1
S0
S1
IGNORE0
IGNORE1
TBCCKO_O TBCCKO_O TBCCKO_O
at I0 Begin I1 Begin I0
UG362_c1_04_040209
Notes:
1. Both PRESELECT attributes cannot be TRUE at the same time.
2. The LOC constraint is available.
BUFG
BUFG is simply a clock buffer with one clock input and one clock output. This primitive is
based on BUFGCTRL with some pins connected to logic High or Low. Figure 1-6 illustrates
the relationship of BUFG and BUFGCTRL. A LOC constraint is available for BUFG.
X-Ref Target - Figure 1-6
IGNORE1
VDD
CE1
GND
GND S1
BUFG
I1
VDD
O O
I
I0
I
VDD S0
VDD CE0
IGNORE0
GND
UG362_c1_05_040209
The output follows the input as shown in the timing diagram in Figure 1-7.
X-Ref Target - Figure 1-7
BUFG(I)
BUFG(O)
TBCCKO_O
UG362_c1_06_040209
BUFGCE as BUFGCTRL
IGNORE1
VDD
CE1
GND
BUFGCE GND S1
CE
I1
VDD
O O
I
I0
I
VDD S0
CE CE0
IGNORE0
GND
UG362_c1_07_040209
The switching condition for BUFGCE is similar to BUFGCTRL. If the CE input is Low prior
to the incoming rising clock edge, the following clock pulse does not pass through the
clock buffer, and the output stays Low. Any level change of CE during the incoming clock
High pulse has no effect until the clock transitions Low. The output stays Low when the
clock is disabled. However, when the clock is being disabled it completes the clock High
pulse.
Since the clock enable line uses the CE pin of the BUFGCTRL, the select signal must meet
the setup time requirement. Violating this setup time may result in a glitch. Figure 1-9
illustrates the timing diagram for BUFGCE.
X-Ref Target - Figure 1-9
BUFGCE(I)
TBCCCK_CE
BUFGCE(CE)
BUFGCE(O)
TBCCKO_O
UG362_c1_08_040209
BUFGCE_1 is similar to BUFGCE, with the exception of its switching condition. If the CE
input is Low prior to the incoming falling clock edge, the following clock pulse does not
pass through the clock buffer, and the output stays High. Any level change of CE during
the incoming clock Low pulse has no effect until the clock transitions High. The output
stays High when the clock is disabled. However, when the clock is being disabled it
completes the clock Low pulse.
BUFGCE_1(I)
TBCCCK_CE
BUFGCE_1(CE)
BUFGCE_1(O)
TBCCKO_O
UG362_c1_09_040209
IGNORE1
GND
S CE1
VDD S1
BUFGMUX
I1 I1
O O
I0 I0
S
VDD S0
CE0
IGNORE0
GND
UG362_c1_10_040209
Since the BUFGMUX uses the CE pins as select pins, when using the select, the setup time
requirement must be met. Violating this setup time may result in a glitch.
Switching conditions for BUFGMUX are the same as the CE pins on BUFGCTRL.
Figure 1-12 illustrates the timing diagram for BUFGMUX.
TBCCCK_CE
I0
I1
O
TBCCKO_O TBCCKO_O
begin
switching using I1
ug362_c1_11_121510
In Figure 1-12:
• The current clock is I0.
• S is activated High.
• If I0 is currently High, the multiplexer waits for I0 to deassert Low.
• Once I0 is Low, the multiplexer output stays Low until I1 transitions High to Low.
• When I1 transitions from High to Low, the output switches to I1.
• If Setup/Hold are met, no glitches or short pulses can appear on the output.
BUFGMUX_1 is rising edge sensitive and held at High prior to input switch. Figure 1-13
illustrates the timing diagram for BUFGMUX_1. A LOC constraint is available for
BUFGMUX and BUFGMUX_1.
X-Ref Target - Figure 1-13
TBCCCK_CE
S
I0
I1
O
TBCCKO_O
ug362_c1_12_040209
In Figure 1-13:
• The current clock is I0.
• S is activated High.
• If I0 is currently Low, the multiplexer waits for I0 to be asserted High.
• Once I0 is High, the multiplexer output stays High until I1 transitions Low to High.
• When I1 transitions from Low to High, the output switches to I1.
• If Setup/Hold are met, no glitches or short pulses can appear on the output.
BUFGMUX_CTRL
The BUFGMUX_CTRL replaces the BUFGMUX_VIRTEX4 legacy primitive.
BUFGMUX_CTRL is a clock buffer with two clock inputs, one clock output, and a select
line. This primitive is based on BUFGCTRL with some pins connected to logic High or
Low. Figure 1-14 illustrates the relationship of BUFGMUX_CTRL and BUFGCTRL.
X-Ref Target - Figure 1-14
IGNORE1
GND
VDD CE1
S S1
BUFGMUX_CTRL
I1 I1
O O
I0 I0
S
S0
CE0
VDD
IGNORE0
GND
ug362_c1_13_051809
BUFGMUX_CTRL uses the S pins as select pins. S can switch anytime without causing a
glitch. The Setup/Hold time on S is for determining whether the output will pass an extra
pulse of the previously selected clock before switching to the new clock. If S changes as
shown in Figure 1-15, prior to the setup time TBCCCK_S and before I0 transitions from High
to Low, then the output will not pass an extra pulse of I0. If S changes following the hold
time for S, then the output will pass an extra pulse. If S violates the Setup/Hold
requirements, the output might pass the extra pulse, but it will not glitch. In any case, the
output will change to the new clock within three clock cycles of the slower clock.
The Setup/Hold requirements for S0 and S1 are with respect to the falling clock edge, not
the rising edge as for CE0 and CE1.
Switching conditions for BUFGMUX_CTRL are the same as the S pin of BUFGCTRL.
Figure 1-15 illustrates the timing diagram for BUFGMUX_CTRL.
X-Ref Target - Figure 1-15
I0
I1
O
TBCCKO_O
TBCCKO_O
ug362_c1_14_040209
IGNORE1
VDD
VDD CE1
S S1
Asynchronous MUX
Design Example
I1 I1
O O
I0 I0
S0
CE0
VDD
VDD IGNORE0
ug362_c1_15_040209
I1
I0
S
TBCCKO_O TBCCKO_O
O
at I0 Begin I1
UG362_c1_16_040209
In Figure 1-17:
• The current clock is from I0.
• S is activated High.
• The Clock output immediately switches to I1.
• When Ignore signals are asserted High, glitch protection is disabled.
IGNORE1
GND
CE CE1
S S1
BUFGMUX_CTRL+CE
Design Example
I1 I1
O O
I0 I0
S
S0
CE
CE0
IGNORE0
GND
ug362_c1_17_051509
1 2 3
I0
I1
S
TBCCCK_CE
CE
TBCCKO_O TBCCKO_O
O
Begin I1
at I0 Clock Off
ug362_c1_18_040209
In Figure 1-19:
• At time event 1, output O uses input I0.
• Before time event 2, S is asserted High.
• At time TBCCKO_O, after time event 2, output O uses input I1. This occurs after a High
to Low transition of I0 followed by a High to Low transition of I1 is completed.
• At time TBCCCK_CE, before time event 3, CE is asserted Low. The clock output is
switched Low and kept at Low after a High to Low transition of I1 is completed.
Clock Regions
Virtex-6 devices improve the clocking distribution by the use of clock regions. Each clock
region can have up to 12 global clock domains. These 12 global clocks can be driven by any
combination of the 32 global clock buffers. The dimensions of a clock region are fixed to 40
CLBs tall (40 IOBs) and spanning half of the die (Figure 1-20). By fixing the dimensions of
the clock region, larger Virtex-6 devices can have more clock regions. As a result, Virtex-6
devices can support many more multiple clock domains than previous FPGA
architectures. Table 1-5 shows the number of clock regions in each Virtex-6 device. The
CMT and global clocking resources are located to the right of the center column containing
the configuration pins.
CMT Column
Center Column Resources
Configuration
Resources
Clock-Capable I/O
Each clock region has four clock-capable I/O pin pairs per I/O bank in every I/O column.
Clock-capable I/O pairs are regular I/O pairs in select locations with special hardware
connections to nearby regional clock resources and other clock resources. There are four
dedicated clock-capable I/O sites in every bank. When used as clock inputs, clock-capable
pins can drive BUFIO and BUFR. Each I/O column supports regional clock buffers
(BUFR). There are up to four I/O columns in each device. Two inner I/O columns are
available in each device and support four BUFRs in each region. Depending on the device
used, up to two outer I/O columns are available.
When used as single-ended clock pins, then as described in Global Clock Buffers the P-side
of the pin pair must be used because a direct connection only exists on this pin.
In Virtex-6 devices, the inner I/O column clock-capable pins can also drive MMCM and
BUFG clock inputs. This method of driving MMCM input clocks produces a higher
performance path than connecting clocks to the MMCMs using the global clock pins. The
clock-capable pins must be in the same region/bank and to either the left or right of where
the MMCM is located.
BUFIO Primitive
BUFIO is simply a clock in, clock out buffer. There is a phase delay between input and
output. Figure 1-21 shows the BUFIO. Table 1-6 lists the BUFIO ports. A location constraint
is available for BUFIO.
X-Ref Target - Figure 1-21
BUFIO
O
I
ug362_c1_20_040209
I/O
I/O
I/O
I/O
P I/O
Clock Capable I/O
Single Region N I/O
P I/O
Clock Capable I/O
Multiple Regions N I/O
BUFIO
BUFR
BUFIO
P I/O
Clock Capable I/O
Multiple Regions N I/O
P I/O
Clock Capable I/O
Single Region N I/O
I/O
I/O
I/O
I/O
I/O
To Adjacent To Adjacent
I/O Bank Region
ug362_c1_21_062210
the global clock tree. Each BUFR can drive the six regional clock nets in the region it is
located, and the six clock nets in the adjacent clock regions (up to three clock regions).
Unlike BUFIOs, BUFRs can drive the I/O logic and logic resources (CLB, block RAM, etc.)
in the existing and adjacent clock regions. BUFRs can be driven by clock-capable pins, local
interconnect, GTs, and the MMCMs high-performance clocks. In addition, BUFR is capable
of generating divided clock outputs with respect to the clock input. The divide values are
an integer between one and eight. BUFRs are ideal for source-synchronous applications
requiring clock domain crossing or serial-to-parallel conversion.
Each I/O column supports regional clock buffers. There are up to four I/O columns in a
device with two inner columns (center left and right) and up to two outer left and right
columns. The availability of the outer columns are device dependant while the inner
columns are always present. The Virtex-6 architecture therefore can have up to four BUFRs
per region with two driving from the inner columns out (always present), and two BUFRs
per region driving from the outer I/O columns in (when present). In Virtex-6 devices,
BUFRs can also directly drive MMCM clock inputs and BUFGs.
BUFR Primitive
BUFR (Figure 1-23 and Table 1-7) is a clock-in/clock-out buffer with the capability to
divide the input clock frequency. The Virtex-6 FPGA BUFRs can also directly drive MMCM
clock inputs and BUFGs.
X-Ref Target - Figure 1-23
I O
CE
CLR
ug362_c1_22_040209
Notes:
1. Location constraint is available for BUFR.
1 2 3 4
CE
CLR
TBRCKO_O TBRDO_CLRO TBRCKO_O
ug362_c1_23_040209
In Figure 1-24:
• Before clock event 1, CE is asserted High.
• After CE is asserted and time TBRCKO_O, the output O begins toggling at the divide by
three rate of the input I. TBRCKO_O and other timing numbers are best found in the
speed specification.
Note: The duty cycle is not 50/50 for odd division. The Low pulse is one cycle of I
longer.
• At time event 2, CLR is asserted. After TBRDO_CLRO from time event 2, O stops
toggling.
• At time event 3, CLR is deasserted.
• At time TBRCKO_O after clock event 4, O begins toggling again at the divided by three
rate of I.
To Region
Above
CLBs
I/O Tile
Clock Capable I/O
CLBs
I/O Tile Block DSP
RAM Tile
CLBs
I/O Tile
Clock Capable I/O
CLBs
I/O Tile
BUFIO
BUFR
To more
FPGA logic
To Region resources
Below ug362_c1_24_040209
BUFRs
ug362_c1_25_011609
BUFH
I O
BUFHCE
I O
CE
ug362_c1_26_040209
To use the BUFH, the logic must fit into the two regions adjacent to each other (left and
right) as illustrated in Figure 1-28. The clock enable pin can completely turn off the clocks
thus realizing potential power savings. The power consumption in a BUFH has lower
power consumption when compared to a BUFG driving two adjacent regions with lower
jitter and higher performance.
I/O Bank
I/O Bank
12 12
Clocking
Region
BUFH BUFH
ug362_c1_27_040209
High-Performance Clocks
Virtex-6 devices contain four high-performance clocks (HPC) per I/O column: in each
region from the MMCMs and in the same region to the inner and outer I/O columns,
including the GTX/GTH transceiver columns. These clocks (Figure 1-29) are directly
driven by the MMCMs regulated power supply and never enter the VCCINT supply
domain. Therefore, these clocks exhibit very low jitter and minimal duty-cycle distortion.
In the I/O columns the HPC connects to the BUFIO and drives the I/O logic. Two of the
four HPCs can drive directly into the I/O banks (above and below) without using the
multiregion BUFIO. The HPCs can also directly connect to the OSERDES without going
through another clock buffer. This provides a forwarded clock with very low jitter and low
duty-cycle distortion. An HPC has no buffer associated with it. The ISE software
automatically determines when to use this resource by examining the connections to the
IOLOGIC (OLOGIC) in the design. HPCs can also drive BUFRs in the same region to
support the source-synchronous interface designs. Either MMCM in a CMT (CLKOUT0
through CLKOUT3) can drive the HPCs in the left- or right-side regions.
To Bank Above From Bank Above From Bank Above To Bank Above
IOCL Bank 2 2 2 2 IOCR Bank
40 1/Os CMT 40 1/Os
OSERDES OSERDES
MMCM X0Yn In
The Same Region
OSERDES OSERDES
CLKOUT[3:0]
BUFIOs BUFIOs
2 2
HPC To
4 HPC To Outer 4
BUFR BUFR
Outer Column
Column 4 4 or GTX
4 4
HPC[3:0] HPC[3:0]
4 4
BUFR BUFR
2 2
OSERDES OSERDES
MMCM X0Yn In
The Same Region
OSERDES OSERDES
2 2 2 2
To Bank Below From Bank Below From Bank Below To Bank Below
Notes:
1) Any of the MMCM CLKOUT[3:0] outputs can drive any of the HPC[3:0] to the inner or outer columns
or GTX column (outer I/O and GTX column not shown).
2) HPCs can drive OSERDES directly. The same two HPCs can drive directly OSERDES in the adjacent Banks.
3) Any MMCM CLKOUT[3:0] can drive any BUFIO and any BUFR.
UG362_c1_28_011609
BUFR
IBUFG(GCIO and CCIO)
BUFG CLKIN1
GTX CLKIN2
BUFH
Local Routing
(not recommended) MMCM1 BUFG
BUFH
BUFIO
CLKFB
CLKIN1
CLKIN2
BUFG
MMCM2
BUFH
BUFIO
CLKFB
ug362_c2_01_011209
MMCMs
Virtex-6 devices contain up to nine CMT tiles. The MMCMs serve as a frequency
synthesizer for a wide range of frequencies, serve as a jitter filter for either external or
internal clocks, and deskew clocks.
Input MUXes select the reference and feedback clocks from either the IBUFG, BUFG,
BUFG, GTs (CLKIN only), or interconnect (not recommended). Each clock input has a
programmable counter divider (D). The Phase-Frequency Detector (PFD) compares both
phase and frequency of the rising edges of both the input (reference) clock and the
feedback clock. If a minimum High/Low pulse is maintained, the duty cycle is ancillary.
The PFD is used to generate a signal proportional to the phase and frequency between the
two clocks. This signal drives the Charge Pump (CP) and Loop Filter (LF) to generate a
reference voltage to the VCO. The PFD produces an up or down signal to the charge pump
and loop filter to determine whether the VCO should operate at a higher or lower
frequency. When VCO operates at too high of a frequency, the PFD activates a down signal,
causing the control voltage to be reduced decreasing the VCO operating frequency. When
the VCO operates at too low of a frequency, an up signal will increase voltage. The VCO
produces eight output phases and one variable phase for fine-phase shifting. Each output
phase can be selected as the reference clock to the output counters (Figure 2-2). Each
counter can be independently programmed for a given customer design. A special counter,
M, is also provided. This counter controls the feedback clock of the MMCM allowing a
wide range of frequency synthesis.
In addition to integer divide output counters, Virtex-6 devices adds a fractional counter by
combining the O0/O5 counters. When used in fractional mode, the O5 output is not
available.
CLKIN1 9
D O0 CLKOUT0
CLKIN2 PFD CP LF VCO
Fractional Divide CLKOUT0B
CLKFB CLKOUT1
O1 CLKOUT1B
HOLD
CLKOUT2
O2 CLKOUT2B
CLKOUT3
O3 CLKOUT3B
CLKOUT4
O4
CLKOUT5
Notes: O5(1)
1. The O5 output is disabled when
the O0 output is set to a non-integer divide. CLKOUT6
O6
CLKFBOUT
M
CLKFBOUTB
ug362_c2_02_010510
MMCM Primitives
The two Virtex-6 FPGA MMCM primitives, MMCM_BASE and MMCM_ADV, are shown
in Figure 2-3.
MMCM_ADV
ug362_c2_03_033109
MMCM_BASE Primitive
The MMCM_BASE primitive provides access to the most frequently used features of a
stand alone MMCM. Clock deskew, frequency synthesis, coarse phase shifting, and duty
cycle programming are available to use with the MMCM_BASE. The ports are listed in
Table 2-1.
MMCM_ADV Primitive
The MMCM_ADV primitive provides access to all MMCM_BASE features plus additional
ports for clock switching, connectivity to the other MMCM in the same CMT, access to the
Dynamic Reconfiguration Port (DRP), as well as dynamic fine-phase shifting. The ports are
listed in Table 2-2.
The Virtex-6 FPGA MMCM is a mixed signal block designed to support clock network
deskew, frequency synthesis, and jitter reduction. These three modes of operation are
discussed in more detail within this section. The Voltage Controlled Oscillator (VCO)
operating frequency can be determined by using the following relationship:
M
F VCO = F CLKIN × ----- Equation 2-1
D
M
F OUT = F CLKIN × --------------- Equation 2-2
D×O
where the M, D, and O counters are shown in Figure 2-2. The value of M corresponds to the
CLKFBOUT_MULT_F setting, the value of D to the DIVCLK_DIVIDE, and O to the
CLKOUT_DIVIDE.
The seven “O” counters can be independently programmed. For example, O0 can be
programmed to do a divide-by-two while O1 is programmed for a divide by three. The
only constraint is that the VCO operating frequency must be the same for all the output
counters since a single VCO drives all the counters.
relationships between the reference clock and the output clocks, but there are required
relationships between the output clocks.
X-Ref Target - Figure 2-4
33 MHz
Reference PFD, CP, Processor
D=1 O0 = 2
Clock LF, VCO
O1 = 4 Gasket
M = 32
O2 = 8 CLB/Fabric
O3 = 10 Memory Interface
O4 = 16 66 MHz Interface
O5 = 32 33 MHz interface
ug362_c2_04_030211
Jitter Filter
MMCMs always reduce the jitter inherent on a reference clock. The MMCM can be
instantiated as a standalone function to simply support filtering jitter from an external
clock before it is driven into the another block. As a jitter filter, it is usually assumed that
the MMCM acts as a buffer and regenerates the input frequency on the output (e.g.,
FIN = 100 MHz, FOUT = 100 MHz). In general, greater jitter filtering is possible by using the
MMCM attribute BANDWIDTH set to Low. Setting the BANDWIDTH to Low can incur an
increase in the static offset of the MMCM.
Limitations
The MMCM has some restrictions that must be adhered to. These are summarized in the
MMCM electrical specification in the Virtex-6 FPGA Data Sheet. In general, the major
limitations are VCO operation range, input frequency, duty cycle programmability, and
phase shift.
Since the VCO can provide eight phase shifted clocks at 45° each; always providing
possible settings for 0°, 45°, 90°, 135°, 180°, 225°, 270°, and 315° of phase shift. The higher
the VCO frequency is, the smaller the phase-shift resolution. Since the VCO has a distinct
operating range, it is possible to bound the phase-shift resolution using from
1 1
---------------------------- to ------------------------------ period.
8F VCOMIN 8F VCOMAX
It is possible to phase shift the CLKFBOUT feedback clock. In that case all CLKOUT output
clocks are negatively phase shifted with respect to CLKIN.
If the VCO runs at 600 MHz, then the phase resolution is approximately (rounded) 30 ps
and at 1.6 GHz is approximately (rounded) 11 ps.
The phase shift value can be programmed as a fixed value set during configuration or a
dynamic increment/decrement under application control after configuration. The
dynamic phase shift is controlled by the PS interface of the MMCM_ADV. This phase-shift
mode equally affects all CLKOUT output clocks that are selected for this mode by setting
the USE_FINE_PS attribute to TRUE. It is possible for each individual CLKOUT counter to
either select the interpolated, the previously described static phase-shift mode or none.
Fractional divide is not allowed in this mode. Fixed or dynamic phase shifting of the
feedback path will result in a negative phase shift of all output clocks with respect to
CLKIN. The dynamic phase-shift interface can not be used when the phase-shift mode is
set to fixed.
,
X-Ref Target - Figure 2-5
PSCLK
PSEN
PSDONE
PSINCDEC
ug362_2_05_020409
Counter Cascading
The CLKOUT6 divider (counter) can be cascaded with the CLKOUT4 divider. This
provides a capability to have an output divider that is larger than 128. CLKOUT6 simply
feeds the input of the CLKOUT4 divider. There is a static phase offset between the output
of the cascaded divider and all other output dividers.
MMCM Programming
Programming of the MMCM must follow a set flow to ensure configuration that
guarantees stability and performance. This section describes how to program the MMCM
based on certain design requirements. A design can be implement in two ways, directly
through the GUI interface (the Clocking Wizard) or directly implementing the MMCM
through instantiation. Regardless of the method selected, the following information is
necessary to program the MMCM:
• Reference clock period
• Output clock frequencies (up to seven maximum)
• Output clock duty cycle (default is 50%)
• Output clock phase shift in number of degrees relative to the original 0 phase of the
clock.
• Desired bandwidth of the MMCM (default is OPTIMIZED and the bandwidth is
chosen in software)
• Compensation mode (automatically determined by the software)
• Reference clock jitter in UI (i.e., a percentage of the reference clock period)
As an example, consider FIN = 100 MHz. If the minimum PFD frequency is 10 MHz, then D
can only go from 1 to 10.
• D = 1, M can only have values from four to 16.
• D = 2, M can only have values from eight to 32.
• D = 4, M can only have values from 16 to 64.
In addition, D = 1 M = 4 is a subset of D = 2 M = 8, D = 4 M = 16, and D = 8 M = 32
allowing these cases to be dropped. For this case, only D = 1, 3, 5, 6, 7, and 9 are considered
since all other D values are subsets of these cases. This drastically reduces the number of
possible output frequencies. The output frequencies are sequentially selected. The desired
output frequency should be checked against the possible output frequencies generated.
Once the first output frequency is determined, an additional constraint can be imposed on
the values of M and D. This can further limit the possible output frequencies for the second
output frequency. Continue this process until all the output frequencies are selected.
The constraints used to determine the allowed M and D values are shown in the following
equations:
f IN
D MIN = roundup ------------------------ Equation 2-4
f PFD MAX
f IN
D MAX = rounddown ----------------------- Equation 2-5
f PFD MIN
f VCOMIN
M MIN = roundup ---------------------- × D MIN Equation 2-6
f IN
f VCOMAX
M MAX = rounddown ------------------------ × D MAX Equation 2-7
f IN
D MIN × f VCOMAX
M IDEAL = -------------------------------------------- Equation 2-8
f IN
The goal is to find the M value closest to the ideal operating point of the VCO. The
minimum D value is used to start the process. The goal is to make D and M values as small
as possible while keeping ƒVCO as high as possible.
MMCM Ports
Table 2-3 summarizes the MMCM ports. Table 2-4 lists the MMCM attributes.
Notes:
1. All control and status signals except PSINCDEC are active High.
LOCKED
An output from the MMCM used to indicate when the MMCM has achieved phase and
frequency alignment of the reference clock and the feedback clock at the input pins. Phase
alignment is within a predefined window and frequency matching within a predefined
PPM range. The MMCM automatically locks after power on, no extra reset is required.
LOCKED will be deasserted within one clock cycle if the input clock stops, the phase
alignment is violated (e.g., input clock phase shift) or the frequency has changed. The
MMCM will automatically re-lock if the clock stops or when the phase or frequency is
changed.
MMCM Attributes
Table 2-4: MMCM Attributes
Attribute Type Allowed Values Default Description
BANDWIDTH String HIGH OPTIMIZED Specifies the MMCM programming
LOW algorithm affecting the jitter, phase
OPTIMIZED margin and other characteristics of the
MMCM.
CLKOUT[1:6]_DIVIDE Integer 1 to 128 1 Specifies the amount to divide the
associated CLKOUT clock output if a
CLKOUT[0]_DIVIDE_F Real 2.000 to 128 in 1 different frequency is desired. This
increments of 0.125 number in combination with the
or integers CLKFBOUT_MULT_F and
DIVCLK_DIVIDE values will
determine the output frequency.
CLKOUT[0:6]_PHASE Real –360.000 to 360.000 in 0.0 Allows specification of the output
increments of phase relationship of the associated
1/56 the FVCO and/or CLKOUT clock output in number of
increments depending degrees offset (i.e., 90 indicates a 90° or
on CLKOUT_DIVIDE. ¼ cycle offset phase offset while 180
indicates a 180° offset or ½ cycle phase
offset).
CLKOUT[0:6]_ Real 0.01 to 0.99 0.50 Specifies the Duty Cycle of the
DUTY_CYCLE associated CLKOUT clock output in
percentage (i.e., 0.50 will generate a
50% duty cycle).
CLKFBOUT_MULT_F Real 5 to 64 5 Specifies the amount to multiply all
(Integer values only) CLKOUT clock outputs if a different
frequency is desired. This number, in
combination with the associated
CLKOUT#_DIVIDE value and
DIVCLK_DIVIDE value, will
determine the output frequency.
DIVCLK_DIVIDE(1) Integer 1 to 80 1 Specifies the division ratio for all
output clocks with respect to the input
clock. Effectively divides the CLKIN
going into the PFD.
Notes:
1. The DIVCLK_DIVIDE values of 3 and 4 cannot be used if the MMCM input clock (CLKIN) frequency is greater than 315 MHz.
Multiplying up (doubling) both the DIVCLK_DIVIDE and CLKFBOUT_MULT attribute values yield the same result for the VCO
and CLKOUT frequencies.
2. The COMPENSATION attribute values are documented for informational purpose only. The ISE® software tools automatically
select the appropriate compensation based on circuit topology. Do not manually select a compensation value, leave the attribute at
the default value.
Counter Control
The MMCM output counters provide a wide variety of synthesized clocks using a
combination of DIVIDE, DUTY_CYCLE, and PHASE. Figure 2-6 illustrates how the
counter settings impact the counter output.
The top waveform represents the output from the VCO.
X-Ref Target - Figure 2-6
DIVIDE = 2
DUTY_CYCLE = 0.5
PHASE = 0
DIVIDE = 2
DUTY_CYCLE = 0.5
PHASE = 180
DIVIDE = 2
DUTY_CYCLE = 0.75
PHASE = 180
DIVIDE = 1
DUTY_CYCLE = 0.5
PHASE = 0
DIVIDE = 1
DUTY_CYCLE = 0.5
PHASE = 360
DIVIDE = 3
DUTY_CYCLE = 0.33
PHASE = 0
DIVIDE = 3
DUTY_CYCLE = 0.5
PHASE = 0
UG362_c2_06_040209
0°
45°
90°
VCO 135°
8 Phases
180°
225°
270°
315°
O0
Counter O1
Outputs O2
O3
All “O” counters can be equivalent, anything O0 can do, O1 can do. In Virtex-6 devices, the
O0 counter has the additional capability to be used in fractional divide mode. The MMCM
outputs are flexible when connecting to the global clock network since they are identical.
In most cases, this level of detail is imperceptible to the designer as the software and
Clocking Wizard determines the proper settings through the MMCM attributes and
Wizard inputs.
CLKINSEL
BUFG
CLKIN1
IBUFG (GCIO or CCIO)
BUFR
GTX
BUFH
Local Rounting
(not recommended)
MMCM
CLKIN
BUFG
CLKIN2
IBUFG (GCIO or CCIO)
BUFR
GTX
BUFH
Local Rounting
(not recommended) UG362_c2_08_033109
IBUFG BUFG
1 2 4 5
CLKIN1 CLKOUT0 To Logic
3
CLKFBIN CLKOUT0B
RST CLKOUT1
CLKOUT1B
CLKOUT2
CLKOUT2B
CLKOUT3
CLKOUT3B 1
CLKOUT4
2
CLKOUT5
BUFG 3
CLKOUT6
6
CLKFBOUT
4
CLKFBOUTB
LOCKED 5
MMCM
6
UG362_c2_09_033109
There are certain restrictions on implementing the feedback. The CLKFBOUT output can
be used to provide the feedback clock signal. The fundamental restriction is that both input
frequencies to the PFD must be identical. Therefore, the following relationship must be
met:
f IN f VCO
------- = f FB = ------------- Equation 2-9
D M
As an example, if ƒIN is 166 MHz, D = 1, M = 6, and O = 2, then VCO is 996 MHz and the
clock output frequency is 498 MHz. Since the M value in the feedback path is 6, both input
frequencies at the PFD are 166 MHz.
In another more complex scenario has an input frequency of 66.66 MHz and D = 2, M = 30,
and O = 4. The VCO frequency in this case is 1000 MHz and the CLKOUT output
frequency is 250 MHz. Therefore, the feedback frequency at the PFD is 1000/30 or
33.33 MHz, matching the 66.66 MHz/2 input clock frequency at the PFD.
IBUFG BUFG
UG362_c2_10_033109
ug362_c2_11_033109
In some cases precise alignment will not occur because of the difference in loading between
the input capacitance of the external component and the feedback path capacitance of the
FPGA. For example, the external components can have an input capacitance on 1 pF to
4 pF while the FPGA has an input capacitance of around 8 pF. There is a difference in the
signal slope, which is basically skew. Designers need to be aware of this effect to ensure
timing.
IBUFG BUFG
ug362_c2_12_040209
IBUFG BUFG
ug362_c2_13_040209
REFCLK
VCOCLK
CLKOUT0
CLKOUT1
CLKOUT2
CLKOUT3
CLKOUT4
CLKOUT5
UG362_c2_14_033109