Thursday, September 19, 2019

Notes on VNA Cal-kit SOL Standards

I was recently wondering what the effect was of the various VNA Cal-kit parameters (used to define the non-ideal nature of a VNA Calibration Kit's Short, Open, and Load standards) on a VNA measurement.

Were some parameters more important than others, and which could be ignored if measuring, say, below a certain frequency?

Some googling took me to this Keysight application note, Specifying Calibration Standards and Kits for Keysight Vector Network Analyzers, and its terminated transmission-line one-port model for SOL (Short, Open, Load) standards:


From this model and a set of givens, Keysight has derived the application note's equation 1.4, shown below:


How do we use this equation?  First, we need to look at how cal-kit standards are defined...


Specifying a Calibration Kit's Open and Short Standards:

Keysight specifies its Open and Short cal-kit standards using the following parameters:

Open: 

  • C0   (Farads(e-15))
  • C1   (Farads(e-27)/Hz)
  • C2   (Farads(e-36)/Hz^2)
  • C3   (Farads(e-45)/Hz^3)
  • (Offset) Delay   (Sec)
  • (Offset) Loss   (Gohm/Sec)
  • (Offset) Zo   (Ohm)

Short: 

  • L0   (Henries(e-12))
  • L1   (Henries(e-24)/Hz)
  • L2   (Henries(e-33)/Hz^2)
  • L3   (Henries(e-42)/Hz^3)
  • (Offset) Delay   (Sec)
  • (Offset) Loss   (Gohm/Sec)
  • (Offset) Zo   (Ohm)

How do I apply these parameters to the Application Note's Equation 1.4?


Applying Equation 1.4:

Solving equation 1.4 requires calculating ΓT, Γ1, and e-2γl.  Let's first look at finding  ΓT.

1.  Calculating ΓT:

First, recognize that ΓT for the Open and the Short standards is calculated as follows:

For an Open standard:

ΓT =  (Zopen - Zr)/(Zopen + Zr)

where Zr is our system's reference impedance (50 ohms), and Zopen is defined to be:

Zopen = -j/(2πf*(C0 + C1*f + C2*f2 + C3*f3))

given C0, C1, C2, and C3 coefficients specified by the open-standard's supplier.

Similarly, for a Short standard:

ΓT =  (Zshort - Zr)/(Zshort + Zr)

where

Zshort = j2πf*(L0 + L1*f + L2*f2 + L3*f3)

and given L0, L1, L2, and L3 coefficients specified by the short-standard's supplier.


So ΓT for either the Open or the Short is easily calculated.

2.  Calculating  Γ1 and e-2γl:

From the app note's equations, we know:


So, using the supplied-values and the formulas, above, we can calculate αl, βl, and Zc, from which we can then calculate γl (which we can then plug into e-2γl) and Γ1.

This, then, gives us all the values we need to solve the app note's equation 1.4.


Simplifying the Model...

Keysight's equation 1.4 is a fairly complex equation.  I was wondering...for the frequencies used, for example, by the NanoVNA (up to 900 MHz "stock" and 1500 MHz "modified"), how important are the various parameters?

That is, could we ignore some of the parameters?  Simplify the model?

If we assume that we are working at frequencies in which loss is negligible (i.e.  α essentially equals 0), and if we assume Zc = Zr (i.e. Γ1 = 0), then equation 1.4 reduces to:

Γi = e-2jβl ΓT

Much simpler!

Note that β has units of radians/meter and l has units of meters.  Therefore βl has units of radians (of delay).  And the factor of 2 in the exponent represents, from the perspective of the standard's input, a wave first traveling the distance l down the line, and then its reflection traveling back that same distance, for a total travel-distance of 2l.

But -- the delays of SOL standards are typically defined in terms of time (e.g. picoseconds), not length.  How do we convert this equation into one that is a function of time?

First, recognize that β = 2π/λ (where λ is the wavelength, in the transmission-medium, at the frequency of interest -- i.e. λ = c*VF/f, where c is the speed-of-light (m/s), VF is the Velocity Factor (unitless), and f is frequency in cycles-per-second).  Thus λ's units are meters/cycle.

Making this substitution for lambda into the equation for beta, we get:

 β = 2πf/(c*VF)


Now, note that if the transmission-medium's relative permeability is 1, then VF = 1/√εr, where εr is the relative permittivity of the transmission-medium.

We can now rewrite the equation for beta as:

β = (2πf√εr )/c


Thus:

βl =  (2πf√εr )l/c


Next, note that the Keysight app note (referenced above) defines "Offset-delay" as:

offset-delay = √εr / c     (Keysight's equation 1.5)


Substituting this into our equation for βl, we get:

βl =  2πf*(offset-delay)

And thus our earlier equation for Γi, expressed in terms of βl, becomes (when expressed in terms of frequency and offset-delay):

Γi = e-2j(2πf)*(offset_delay) ΓT


So now we can calculate Γin terms of frequency, the specified offset-delay, and ΓT using a much simpler equation to solve than equation 1.4!


An even Simpler Model:

In the simplified model, above, I tossed out Keysight's "Offset Loss" and "Offset Zo" parameters by assuming loss is 0 and Offset Zo equals Zr (thus Γ1 = 0).

Can I simplify the model even further?

Let's assume that, for the Open model, only C0 is important at our frequencies of interest (e.g. up to 900 MHz).  Thus, I'll set C1, C2, and C3 to 0.

And let's also assume that the Short model's inductance terms (L0, L1, L2, and L3) can all be set to 0 -- in other words, the actual short is modeled as an ideal short.

Now the model is very simple.  But have I simplified it too far?

Let's run some calculations and compare the models, using values from actual Keysight cal-kits...


Comparing the Models:

Matlab Code to Perform the Comparisons:

Here's my Matlab code for calculating gamma for my simplified models and for Keysight's complete ("full") model, per the equations, above.

% **************************************
% Comparison of VNA Cal-Standard Models
% **************************************

clear
% First -- Cal standard values from Rune's v0.0.8 python code:

% C0 = 50e-15;
% C1 = 0;
% C2 = 0;
% C3 = 0;
% Delay_Open = 0;
% Loss_Open = 0;
% Offset_Zo_Open = 50;
%
% L0 = 0;
% L1 = 0;
% L2 = 0;
% L3 = 0;
% Delay_Short = 0;
% Loss_Short = 9.99e20;
% Offset_Zo_Short = 50;

% % From Keysight Board Message for 85032B, per 8753C
% C0 = 62e-15;
% C1 = 17e-27;
% C2 = 28e-36;
% C3 = 0;
% Delay_Open = 17.544e-12;
% Loss_Open = 0;
% Offset_Zo_Open = 50;
%
% L0 = 0;
% L1 = 0;
% L2 = 0;
% L3 = 0;
% Delay_Short = 17.8e-12;
% Loss_Short = 9.99e20;
% Offset_Zo_Short = 50;


% Now -- standards for 8753D from Keysight Website...

% 85031B 7mm Cal Kit

% C0 = 92.85e-15;
% C1 = 0;
% C2 = 7.2e-36;
% C3 = 4.3e-45;
% Delay_Open = 0;
% Loss_Open = 0.7E9;
% Offset_Zo_Open = 50;
%
% L0 = 0;
% L1 = 0;
% L2 = 0;
% L3 = 0;
% Delay_Short = 0;
% Loss_Short = 2.1002e9;
% Offset_Zo_Short = 50;


% 85032B/E N Standards, Male, Keysight PNA85032B/E

% % Std No. 2, Male Open
% C0 = 62.14e-15;
% C1 = -143.07e-27;
% C2 = 82.92e-36;
% C3 = 0.76e-45;
% Delay_Open = 17.4e-12;
% Loss_Open = 0.7E9;
% Offset_Zo_Open = 50;
%
% % Std No. 3, Male Short
% L0 = 0;
% L1 = 0;
% L2 = 0;
% L3 = 0;
% Delay_Short = 17.8e-12;
% Loss_Short = 2.1002e9;
% Offset_Zo_Short = 50.209;

% % Std No. 5, Female Open
% C0 = 119.09e-15;
% C1 = -36.955e-27;
% C2 = 26.258e-36;
% C3 = 5.5136e-45;
% Delay_Open = 0;
% Loss_Open = 0.7E9;
% Offset_Zo_Open = 50;
%
% % Std No. 6, Female Short
% L0 = 0;
% L1 = 0;
% L2 = 0;
% L3 = 0;
% Delay_Short = 0.093e-12;
% Loss_Short = 0.7e9;
% Offset_Zo_Short = 49.992;


% 85032F N Standards, Male, Keysight PNA85032F

% % Standard 8, Male Open
% C0 = 89.939e-15;
% C1 = 2536.8e-27;
% C2 = -264.99e-36;
% C3 = 13.4e-45;
% Delay_Open = 40.8563e-12;
% Loss_Open = 0.93e9;
% Offset_Zo_Open = 50;
%
% % Standard 7, Male Short
% L0 = 3.3998e-12;
% L1 = -496.4308e-24;
% L2 = 34.8314e-33;
% L3 = -0.7847e-42;
% Delay_Short = 45.955e-12;
% Loss_Short = 1.087e9;
% Offset_Zo_Short = 49.992;

% % Standard 2, Female Open
% C0 = 89.939e-15;
% C1 = 2536.8e-27;
% C2 = -264.99e-36;
% C3 = 13.4e-45;
% Delay_Open = 40.117e-12;
% Loss_Open = 0.93e9;
% Offset_Zo_Open = 50;
%
% % Standard 1, Female Short
% L0 = 3.3998e-12;
% L1 = -496.4308e-24;
% L2 = 34.8314e-33;
% L3 = -0.7847e-42;
% Delay_Short = 45.955e-12;
% Loss_Short = 1.087e9;
% Offset_Zo_Short = 49.99;


% 85033D/E 3.5mm standards (per Keysight PNA 85033DE)

% Open, Male
C0 = 49.433e-15;
C1 = -310.13e-27;
C2 = 23.168e-36;
C3 = -0.15966e-45;
Delay_Open = 29.2e-12;
Loss_Open = 2.2E9;
Offset_Zo_Open = 50;

% Short, Male
L0 = 2.0765e-12;
L1 = -108.54e-24;
L2 = 2.1705e-33;
L3 = -0.01e-42;
Delay_Short = 31.8e-12;
Loss_Short = 2.36e9;
Offset_Zo_Short = 50;

% % Open, Female
% C0 = 49.433e-15;
% C1 = -310.13e-27;
% C2 = 23.168e-36;
% C3 = -0.15966e-45;
% Delay_Open = 29.2e-12;
% Loss_Open = 2.3E9;
% Offset_Zo_Open = 50;
% %
% % % Short, Female
% L0 = 2.0765e-12;
% L1 = -108.54e-24;
% L2 = 2.1705e-33;
% L3 = -0.01e-42;
% Delay_Short = 31.8e-12;
% Loss_Short = 2.36e9;
% Offset_Zo_Short = 50;


zr = 50;    % reference impedance
f = 900e6;  % frequency

% *****************************
% Calculations for Open Standard
% *****************************

% First,  calculate the Short's Gamma
%assuming no Loss and Offset_Zo = 50 ohms.
divisor = (2*pi*f * (C0 + C1*f + C2*f^2 + C3*f^3));
Zop = -1i / divisor;
GammaOpen = ((Zop/50) - 1) / ((Zop/50) + 1);
abs(GammaOpen);
angle(GammaOpen)*180/pi;
delayedOpenGamma = GammaOpen * ...
    exp(-1i*2*2*pi*f*Delay_Open);
% Magnitude of Gamma
rho_NoLoss_Open = abs(delayedOpenGamma)
% Angle of Gamma (degrees)
theta_NoLoss_Open = angle(delayedOpenGamma)*180/pi

% Repeat open calculation, but make C1-C3 zero:
divisor2 = (2 * pi * f * C0);
Zop2 = -1i / divisor2;
GammaOpen2 = ((Zop2/50) - 1) / ((Zop2/50) + 1);
abs(GammaOpen2);
angle(GammaOpen2)*180/pi;
delayedOpenGamma = GammaOpen2 *...
    exp(-1i*2*2*pi*f*Delay_Open);
rho_C0_Only_Open = abs(delayedOpenGamma)
theta_C0_Only_Open = angle(delayedOpenGamma)*180/pi


% Now, let's repeat the calculation for the
% Open's Gamma, but now assuming loss and
% specified Offset_Zo.
%
% Per equation 1.10 in Keysight's
% "Specifying Calibration Standards
% and kits for Keysight Vector Network Analyzers".

al_op = ((Loss_Open*Delay_Open)/...
    (2*Offset_Zo_Open))*sqrt(f/1e9);
Bl_op = 2*pi*f*Delay_Open + al_op;
zc_open = Offset_Zo_Open +...
    (1-1i)*(Loss_Open/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:
gammaEl_op = al_op + 1i*Bl_op;

% Next, calculate a common exponential term...
e2gammaEl_op = exp(-2*gammaEl_op);

% Then applying to equation 1.4:
% Now, calculate Gamma-sub-1 and Gamma-sub-i
% (the latter equation 1.4 in  Keysight doc.
Gamma_1_op = (zc_open-zr)/(zc_open+zr);

Open_Gamma_i = (Gamma_1_op*...
    (1-e2gammaEl_op-Gamma_1_op*GammaOpen)...
    +(e2gammaEl_op*GammaOpen)) / ...
    (1-Gamma_1_op*(e2gammaEl_op*Gamma_1_op +...
    GammaOpen*(1-e2gammaEl_op)));

rho_FullModel_open = abs(Open_Gamma_i)
theta_FullModel_open = angle(Open_Gamma_i)*180/pi


% *****************************
% Repeat for the short Standard
% *****************************

% First, calculate the Short's Gamma assuming
% no Loss and Offset_Zo = 50 ohms.
Zsh = 1i * (2*pi*f * (L0 + L1*f + L2*f^2 + L3*f^3));
GammaShort = ((Zsh/50) - 1) / ((Zsh/50) + 1);
abs(GammaShort);
angle(GammaShort)*180/pi;
delayedShortGamma = GammaShort *...
    exp(-1i*2*2*pi*f*Delay_Short);
% Gamma magnitude
rho_NoLoss_Short = abs(delayedShortGamma)
% Gamma angle (degrees0
theta_NoLoss_Short = angle(delayedShortGamma)*180/pi

% Repeat short calculation, but make L0-L3 zero
% (i.e. perfect short):
GammaShort2 = ((0/50) - 1) / ((0/50) + 1);
abs(GammaShort2);
angle(GammaShort2)*180/pi;
delayedShortGamma = GammaShort2 *...
    exp(-1i*2*2*pi*f*Delay_Short);
rho_PerfectShort = abs(delayedShortGamma)
theta_PerfectShort = angle(delayedShortGamma)*180/pi


% Now, let's repeat the calculation for the
% Short's Gamma, but now assuming loss and
% specified Offset_Zo.
%
% Per equation 1.10 in Keysight's
% "Specifying Calibration Standards
% and kits for Keysight Vector Network Analyzers".

al_sh = ((Loss_Short*Delay_Short)/...
    (2*Offset_Zo_Short))*sqrt(f/1e9);
Bl_sh = 2*pi*f*Delay_Short + al_sh;
zc_short = Offset_Zo_Short + ...
    (1-1i)*(Loss_Short/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:
gammaEl_sh = al_sh + 1i*Bl_sh;

% Next, calculate a common exponential term...
e2gammaEl_sh = exp(-2*gammaEl_sh);

% Then applying to equation 1.4:
% Now, calculate Gamma-sub-1 and Gamma-sub-i
% (the latter equation 1.4 in the Keysight app note.
Gamma_1_sh = (zc_short-zr)/(zc_short+zr);

Short_Gamma_i = (Gamma_1_sh*...
    (1-e2gammaEl_sh-Gamma_1_sh*GammaShort)+ ...
    (e2gammaEl_sh*GammaShort)) / ...
    (1-Gamma_1_sh*(e2gammaEl_sh*Gamma_1_sh + ...
    GammaShort*(1-e2gammaEl_sh)));

rho_FullModel_short = abs(Short_Gamma_i)
theta_FullModel_short = angle(Short_Gamma_i)*180/pi
rho_NoLoss_Open =

    1.0000


theta_NoLoss_Open =

  -20.5147


rho_C0_Only_Open =

    1.0000


theta_C0_Only_Open =

  -20.5231


rho_FullModel_open =

    1.0000


theta_FullModel_open =

  -20.5163


rho_NoLoss_Short =

    1.0000


theta_NoLoss_Short =

  159.3679


rho_PerfectShort =

     1


theta_PerfectShort =

  159.3936


rho_FullModel_short =

    0.9972


theta_FullModel_short =

  159.2065



Note that the above block ends with the calculated values of Gamma for the 85033D/E Male SMA standards at 900 MHz.


Comparison Results at 900 MHz:

Here are the Matlab results for various cal-kit standards:


Notes:

1.  The "Simple" model uses C0-C3 and L0-L3, but not (offset) Loss nor (offset) Zo (i.e.  α essentially equals 0).  Also, Zc is assumed to equal Zr (refer to Keysight equations).
2.  The "Very Simplified" model is the "Simple" model but with C1-C3 and all the L terms zeroed-out.
3.  The "Keysight" Model is the "full" model I've created using the equations in their app note.
4.The very last "cal kit" represents the NanoVNA's compensation, as gleaned by looking at its firmware (note that I set Loss to 0 ohms/S to force α to be 0).


Conclusion:

In the above results, the worst case Gamma differences between the "Full" and "Very Simplified" models, calculated at 900 MHz, are:

  • rho (magnitude):  Less than 0.003
  • theta (degrees):  Less than 0.2 degrees.

Note that at 900 MHz, an S11 angle of 0.2 degrees (for an Open Standard) is roughly equal to a one-way delay of 0.3 picoseconds (i.e. a length of about 90 nano-meters, assuming a Velocity Factor of 1).

So, in my opinion, these differences are insignificant.

Note:  To calculate the above values...
  seconds_of_delay (one way) = angle (degrees) / 360 (degrees/cycle) / f (cycles/sec) / 2,
where the 2 represents the fact that the overall delay is two times the one-way delay.  Thus the final calculated value is the one-way delay.
We can then calculate the equivalent length using this one-way delay value:
  length (meters) = seconds_of_delay (sec) * speed_of_light (m/sec) * Velocity_Factor.


And here is another reason why I believe these errors to be insignificant...

Per Keysight, the electrical specifications of their 85033E cal-kit are:


Note that the Opens can have an error (from nominal) of +/- 0.55 degrees and the Shorts can have an error (from nominal) of +/- 0.48 degrees.  My calculated error under 0.2 degrees is less than half of either of these errors (errors for which we usually do not compensate).


Comparison Results at 1500 MHz:

Some users have modified their NanoVNA firmware to support operation up to 1500 MHz.  How important are the differences between the "Full" model's parameters and my "Very Simplified" model at this higher frequency limit?

Here's the data from the Matlab calculations:


As you can see, the worst-case Gamma angle-error of an Open (SMA, in this case) is about a quarter of a degree at 1500 MHz.  This angle represents an equivalent one-way delay of about 0.24 picoseconds, or a length of 72 nano-meters, assuming a Velocity Factor of 1.

Again, fairly insignificant differences.


Other Notes:

Similar equations can be found at these URL's:

Effect of Loss on VNA Calibration Standards, Raul Monsalve

One Port Direct/Reverse Method for Characterizing VNA Calibration Standards, Raul Monsalve, et al. (see Appendix at end of paper).

Calibration values for all the Keysight standards can be found here: Keysight Cal Kit Page


Standard Caveat:

As always, I might have made a mistake in my equations, assumptions, drawings, or interpretations.  If you see anything you believe to be in error or if anything is confusing, please feel free to contact me or comment below.

And so I should add -- this information is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

No comments: