I have been working on a Lattice FPGA to configure a 37.125MHz output for a 24MHz input clock... but the only way I have been able to accomplish getting this is with a 5% tolerance and a big fractional divider: enter image description here

The equation I found from a Lattice guide online is: fOUT = fIN × N/M, which would make sense with what I have above (fIN =24, N=3, M=2, fOUT =36, and a tolerance of 5% would allow between 34.2-37.8MHz).

However, this causes a lot of jitter (>100ps), and so I need to find a work around.

I was thinking to make N=37 and M=24, which would give me fOUT=37MHz, but the software will not let me.

Is there a way to configure this that I am missing, maybe cascading multiple clocks? Should I create my own PLL separate from the built-in?


  • \$\begingroup\$ What are the constraints on VCO frequency? One reference suggests 400-800 MHz, so a multipler of 17 and divider of 11 would give you a VCO frequency of 408 MHz and an output frequency of 37.091 MHz, which is off by only 0.095%. \$\endgroup\$
    – Dave Tweed
    Commented Jul 10 at 19:01
  • \$\begingroup\$ If you want to hit 37.125 MHz exactly, you'll need to cascade two PLLs. Set the first to multiply by 22 and divide by 8, giving a VCO frequency of 528 MHz and an output of 66 MHz. Set the second to multiply by 9 and divide by 16, putting its VCO at 594 MHz and the output at 37.125 MHz. \$\endgroup\$
    – Dave Tweed
    Commented 21 hours ago
  • \$\begingroup\$ @DaveTweed Thanks! I did try to do this, but the program is limited to one PLL, so I think we are looking into alternative solutions. I am still trying to understand why the software won't allow me to make the FBK divider = 37 and CLKI divider = 24. \$\endgroup\$ Commented 5 hours ago
  • \$\begingroup\$ Because 24 MHz × 37 = 888 MHz, which is outside the range of the VCO. Did you try 17 and 11 as I suggested? \$\endgroup\$
    – Dave Tweed
    Commented 4 hours ago
  • \$\begingroup\$ @DaveTweed Yes I did, but it also throws an error saying "The Requested Frequency of CLKOP cannot be generated. Try changing the desired frequency or tolerance", but once you start changing the tolerance, it causes a lot of jitter. \$\endgroup\$ Commented 3 hours ago

1 Answer 1


Based on Dave's comment the following should give you the desired outcome: enter image description here

please keep in mind that the clkop is mostlikely too fast even for internal use.

  • \$\begingroup\$ Thanks for the insight! Unfortunately, I get an error that 400 MHz is too high (when I enter all the values above, the 408 in desired frequency is highlighted in red before I even try to calculate), even though the datasheet says 800MHz maximum. \$\endgroup\$ Commented 5 hours ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.