Post Go back to editing

ADF4351 RF setting Eval SW and ADIsimPLL

Category: Software
Product Number: ADF4351

Hi all,

This is a question about the ADF4350/ADF4351 Evaluation Board Software.

Q1
Grayed-out items that are automatically calculated in the RF settings section:
After entering the RF frequency, channel spacing, and REF frequency,
what formula is used to calculate N DIVIDER (INT, FRAC, MOD, Div) inside the software?
I assume that ADIsimPLL also performs a similar calculation.
Would you be able to disclose the formula/method of calculation?

Q2
I cannot reproduce the following ADF4351 EVAL GUI settings with ADIsimPLL.
Is there a bug in the ADF4351 EVAL GUI or ADIsimPLL?
I don't understand the relationship between the ADF4351 EVAL GUI and ADIsimPLL parameters.

The frequency settings are as shown in the EVAL GUI:
RF Freq 470MHz
REF Freq 25MHz
PFD Freq 25MHz
CH Spacing 100KHz
Can you give me some advice?

Best regards,

sss



Modify the figure
[編集者:sss@jpn、編集時刻: 18 Jun 2024 日 6:14 AM 時 (GMT -4)]
Parents
  • Hi,

    Attached is a text file containing the functions used to calculate the various parameters. 

     #region Calculate N, INT, FRAC, MOD
    
                RFout = Convert.ToDouble(RFOutFreqBox.Text);
                REFin = Convert.ToDouble(RefFreqBox.Text);
                OutputChannelSpacing = Convert.ToDouble(OutputChannelSpacingBox.Text);
    
                PFDFreqBox.Text = (REFin * (RefDoublerBox.Checked ? 2 : 1) / (RefD2Box.Checked ? 2 : 1) / (double)RcounterBox.Value).ToString();
                PFDFreq = Convert.ToDecimal(PFDFreqBox.Text);
    
    
          
    
    
    
    
                #region Select divider
                if (RFout >= 2200)
                    OutputDividerBox.Text = "1";
                if (RFout < 2200)
                    OutputDividerBox.Text = "2";
                if (RFout < 1100)
                    OutputDividerBox.Text = "4";
                if (RFout < 550)
                    OutputDividerBox.Text = "8";
                if (RFout < 275)
                    OutputDividerBox.Text = "16";
                if (RFout < 137.5)
                    OutputDividerBox.Text = "32";
                if (RFout < 68.75)
                    OutputDividerBox.Text = "64";
                #endregion
    
    
                if (FeedbackSelectBox.SelectedIndex == 1)
                    N = ((decimal)RFout * Convert.ToInt16(OutputDividerBox.Text)) / PFDFreq;
                else
                    N = ((decimal)RFout / PFDFreq);
    
                INT = (uint)N;
                MOD = (uint)(Math.Round(1000 * (PFDFreq / (decimal)OutputChannelSpacing)));
                FRAC = (uint)(Math.Round(((double)N - INT) * MOD));
    
                if (EnableGCD.Checked)
                {
                    uint gcd = GCD((uint)MOD, (uint)FRAC);
    
                    MOD = MOD / gcd;
                    FRAC = FRAC / gcd;
                }
    
                if (MOD == 1)
                    MOD = 2;
    
                INTBox.Text = INT.ToString();
                MODBox.Text = MOD.ToString();
                FRACBox.Text = FRAC.ToString();
                PFDBox.Text = PFDFreq.ToString();
                DivBox.Text = OutputDividerBox.Text;
                RFoutBox.Text = (((INT + (FRAC / MOD)) * (double)PFDFreq / Convert.ToInt16(DivBox.Text)) * ((FeedbackSelectBox.SelectedIndex == 1) ? 1 : Convert.ToInt16(DivBox.Text))).ToString();
                NvalueLabel.Text = (INT + (FRAC / MOD)).ToString();

    I will send the simPLL file separately as it does not appear to upload. 

Reply
  • Hi,

    Attached is a text file containing the functions used to calculate the various parameters. 

     #region Calculate N, INT, FRAC, MOD
    
                RFout = Convert.ToDouble(RFOutFreqBox.Text);
                REFin = Convert.ToDouble(RefFreqBox.Text);
                OutputChannelSpacing = Convert.ToDouble(OutputChannelSpacingBox.Text);
    
                PFDFreqBox.Text = (REFin * (RefDoublerBox.Checked ? 2 : 1) / (RefD2Box.Checked ? 2 : 1) / (double)RcounterBox.Value).ToString();
                PFDFreq = Convert.ToDecimal(PFDFreqBox.Text);
    
    
          
    
    
    
    
                #region Select divider
                if (RFout >= 2200)
                    OutputDividerBox.Text = "1";
                if (RFout < 2200)
                    OutputDividerBox.Text = "2";
                if (RFout < 1100)
                    OutputDividerBox.Text = "4";
                if (RFout < 550)
                    OutputDividerBox.Text = "8";
                if (RFout < 275)
                    OutputDividerBox.Text = "16";
                if (RFout < 137.5)
                    OutputDividerBox.Text = "32";
                if (RFout < 68.75)
                    OutputDividerBox.Text = "64";
                #endregion
    
    
                if (FeedbackSelectBox.SelectedIndex == 1)
                    N = ((decimal)RFout * Convert.ToInt16(OutputDividerBox.Text)) / PFDFreq;
                else
                    N = ((decimal)RFout / PFDFreq);
    
                INT = (uint)N;
                MOD = (uint)(Math.Round(1000 * (PFDFreq / (decimal)OutputChannelSpacing)));
                FRAC = (uint)(Math.Round(((double)N - INT) * MOD));
    
                if (EnableGCD.Checked)
                {
                    uint gcd = GCD((uint)MOD, (uint)FRAC);
    
                    MOD = MOD / gcd;
                    FRAC = FRAC / gcd;
                }
    
                if (MOD == 1)
                    MOD = 2;
    
                INTBox.Text = INT.ToString();
                MODBox.Text = MOD.ToString();
                FRACBox.Text = FRAC.ToString();
                PFDBox.Text = PFDFreq.ToString();
                DivBox.Text = OutputDividerBox.Text;
                RFoutBox.Text = (((INT + (FRAC / MOD)) * (double)PFDFreq / Convert.ToInt16(DivBox.Text)) * ((FeedbackSelectBox.SelectedIndex == 1) ? 1 : Convert.ToInt16(DivBox.Text))).ToString();
                NvalueLabel.Text = (INT + (FRAC / MOD)).ToString();

    I will send the simPLL file separately as it does not appear to upload. 

Children
No Data