Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
21618 Discussions

Choosing appropriate parameters to dynamically reconfigure the PLL in Cyclone IV

Altera_Forum
Honored Contributor II
1,275 Views

Hello! 

I am using ALT_PLL_Reconfig megafunction (Quartus II 13.0 Web Edition) to dynamically change clock signal. This megafunction requires input data such as: M, N and c0. The combination of these numbers affects multiplication and division factors and, therefore, output frequency. 

My goal is to change PLLs output frequency using my own user interface. I enter frequency in my GUI and it calculates M, N and c0 parameters using brute matching. Then I send these parameters via USB to my Altera device and reconfigure the PLL using ALTPLLRECONFIG megafunction. It should be noted that everything works fine and output frequency is changing like I want during I am using M, N and c0 parameters like in Quartus II software  

 

 

In my GUI M, N and c0 parameters are calculated with a simple formula: F_in/F_out = divfactor/multiplicationfactor = c0*n/M. But not every calculated numbers work. 

 

When I am setting ALT_PLL's output frequency in MegaWizard, the ALT_PLL generates her own special numbers automatically: M, N and c0. 

The question is - how these numbers are generated by ALT_PLL? Are there any restrictions except (1 < M, N, c0 < 512) and (600 MHz < Fvco < 1300 MHz)? It seems that there are some other restrictions, because when I want to set output frequency at 5.875 MHz, my GUI calculates following parameters, and they are not working: 

https://www.alteraforum.com/forum/attachment.php?attachmentid=8313  

N = 1, M = 47, c0 = 216, vco = 1269 MHz.  

 

When I send them to ALTPLLRECONFIG, it seems that these parameters are not appropriate, because instead of 5.875MHz i see approximately 5.4 Mhz at my oscilloscope. But when using parameters that were choosen by Quartus everything is fine: 

N = 2, M = 47, c0 = 108, vco = 634.5 MHz.  

It seems strange, because both mine and Quartus parameters match all restrictions. My algorithm can calculate such parameters as Quartus calculates, but it meets my parameters first, because algorithm starts with N = 1. As my parameters seems appropriate and they are found first, it chooses them. So I need another criteria to choose appropriate parameters. 

Compairing my parameters with Quartus parameters is not a choice for me, my GUI should calculate them automatically based on PLL specifications and restrictions. 

 

Hope you will help. Thanks in advance! 

 

Alexander
0 Kudos
0 Replies
Reply