Is it possible for CLKDV and CLKFX to be phase-aligned?
When I create a CLKDV (CLKIN/2) and CLKFX (CLKIN/4) from one DCM, the output rising edges do not match. Both CLKDV and CLKFX are aligned with CLK0, but CLKDV and CLKFX are not aligned.
It is possible to do this with one DCM. Use CLKIN_DIVIDE_BY2 option on the DCM, and use only the CLK0 and CLKDV (with D set to 2) outputs, and they will be aligned. The divided by 2 and divided by 4 outputs of the original CLKIN will come out of the CLK0 and CLKDV outputs, respectively.
If it is not possible to do this with one DCM as with the work-around above, you can use two DCMs in series to guarantee matching edges.
Tie CLKDV (CLKIN_1/2) of DCM1 to CLKIN of DCM2 and output CLKDV (CLKIN_2/2).
- CLKDV of DCM1 will be aligned with CLK0 of DCM1.
- CLKDV of DCM2 will be aligned with CLKDV of DCM1 (and therefore, aligned with CLK0 of DCM1).
This answer applies to Spartan-3, Spartan-3E, Spartan-3A, Spartan-3AN, Spartan-3A DSP, Virtex-II, Virtex-II Pro, and Virtex-4.
Additionally, the first rising edge of CLKFX after LOCKED is High is not always the one aligned to the rising edge of CLK0. For example, if CLKFX is set to 1.5 of CLK0, the first rising edge of CLK0 after LOCKED is achieved might be aligned to the falling edge of CLKFX, or it might be aligned to the rising edge of CLKFX. In this case, you will have alignment on rising edges at every other CLK0, but not for the very first CLK0 after LOCKED is High.