Showing results for 
Search instead for 
Did you mean: 
Registered: ‎10-07-2016

Kintex7 MMCM reconfiguration issue with phase and duty-cycle

Dear colleagues,

I want to reconfigure the MMCM of a Clocking Wizard IP-core during runtime, by using the Microblaze. The Clocking Wizard IP-core is connected to the Microblaze CPU-System via the AXI4-Lite (Dynamic Reconfiguration is enabled in the GUI of the Clocking Wizard).

I followed the programming steps in chapter 4 (Dynamic Reconfiguration through AXI4-Lite) mentioned in the PG065 (05 Feb. 2020). 

I'm now able to program the output frequency of Clkout 0, by programming the following parameter:

Input Divider => DIVCLK_DIVIDE
Multiplier Integer Part => CLKFBOUT_MULT
Multiplier Fractional Part => CLKFBOUT_FRAC
Output Divider Integer Part => CLKOUT0_DIVIDE
Output Divider Fractional Part => CLKOUT0_FRAC

This works great, and I can adjust the output frequency Clkout 0 with high resolution.

In a next step I have added the possibility to adjust also the output phase and the duty-cycle for Clkout 0, by programming the following additional parameter:

Output Phase => CLKOUT0_PHASE
Duty-Cycle => CLKOUT0_DUTY

Well, when I set the Output Phase to positive values in the range from 0° to 360°, I can see with the oscilloscope, that the phase is changing as expected. But when I change the Output Phase by using negative values in the range from -360° to 0°, the phase is changing unexpectedly. For example when I set to the Output Phase to -180°, I can measure a completely different value.
The product guide PG065 says on page 21:

5. Phase value = (Phase Requested) * 1000. For example, for a 45.5 degree phase, the required value is 45500 = 0xB1BC.
6. Phase values entered are signed numbers in the range +360000 to -360000.

So if I want to set the Output Phase to -180°, I have to multiply this value by 1000, and convert it to a 32-bit signed number. So if I'm right this should result in:

-180*1000 = -180000 = 0xFFFD40E0

Unfortunately this does not work as expected.

Additionally when I try to change the duty cycle nothing happens on the output clock, independent which value I 'm writing to CLKOUT0_DUTY. I can not see with the oscilloscope any change in the duty cycle.

By the way, the check mark "Phase Duty Cycle Config" in the Clocking Wizard GUI is enabled. This should actually enable the functionality to adjust the phase and the duty-cycle.

Does anyone have an idea why the negative phase and the duty cycle settings does not work as expected?

Best regards


0 Kudos