MMCM Programming

Versal Adaptive SoC Clocking Resources Architecture Manual (AM003)

Document ID
Release Date
1.5 English

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 implemented in two ways: 1) directly through the GUI interface (the Clocking Wizard) or 2), 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 (that is, a percentage of the reference clock period)

Using the following equations, the input frequency, D, M, and O values can be determined.

The best performance can be achieved by observing the following guidelines:

  • Choose the highest input/reference clock frequency as possible to keep M Low. This allows for higher PLL bandwidths (which helps to filter reference noise).

Direct instantiation of the MMCM requires that the D, M (M+F) and O (Seven possible O values) are manually calculated. The following formulas help to determine the allowed M and D values:

Determining the input frequency can result in several possible M and D values. The next step is to determine the optimum M and D values. The starting M value is first determined. This is based off the VCO target frequency, the ideal operating frequency of the VCO.

M is the representation of a value M+(F/26), where M is the integer value, and F is the integer value to calculate the fraction n.

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 FVCO as high as possible.