Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21584 Discussions

Choosing appropriate parameters to dynamically reconfigure the PLL in Cyclone IV

Altera_Forum
Honored Contributor II
1,217 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