ADF4351
Recommended for New Designs
The ADF4351 allows implementation of fractional-N or integer-N
phase-locked loop (PLL) frequency synthesizers when used with
an external loop filter and...
Datasheet
ADF4351 on Analog.com
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
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.
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.