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:
where Zr is our system's reference impedance (50 ohms), and Zopen is defined
to be:
given C0, C1, C2, and C3 coefficients specified by the open-standard's
supplier.
Similarly, for a Short standard:
where
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:
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:
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:
Thus:
Next, note that the Keysight app note (referenced above) defines
"Offset-delay" as:
Substituting this into our equation for βl, we get:
And thus our earlier equation for Γi, expressed in terms of
βl, becomes (when expressed in terms of frequency and
offset-delay):
So now we can calculate Γi 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.