skrf.calibration.deembedding.IEEEP370_MM_NZC_2xThru
- class skrf.calibration.deembedding.IEEEP370_MM_NZC_2xThru(dummy_2xthru, name=None, z0=50, port_order='second', use_z_instead_ifft=False, verbose=False, forced_z0_line_dd=None, forced_z0_line_cc=None, *args, **kwargs)[source]
Creates error boxes from a 4-port test fixture 2xThru.
Based on [ElSA20] and [I3E370].
A deembedding object is created with a single 2xThru (FIX-FIX) network, which is split into left (FIX-1_2) and right (FIX-3_4) fixtures with IEEEP370 2xThru method.
When
Deembedding.deembed()is applied, the s-parameters of FIX-1 and FIX-2 are deembedded from the FIX_DUT_FIX network.This method is applicable only when there is a 2x-Thru measurement.
The S-parameters bisection is done by time gating S11 and S22, taking the proper square root of the S21 corrected by return loss, and remixing the parameters according to the fixture signal flow graph. This method gives crude results but is robust.
Note
The port_order =’first’, means front-to-back also known as odd/even, while `port_order`=’second’ means left-to-right also known as sequential. `port_order`=’third’ means yet another numbering method. Next figure show example of port numbering with 4-port networks.
The scikit-rf cascade ** 2N-port operator use second scheme. This is very convenient to write compact deembedding and other expressions.
numbering diagram:
port_order = 'first' +---------+ -|0 1|- -|2 3|- +---------+ port_order = 'second' +---------+ -|0 2|- -|1 3|- +---------+ port_order = 'third' +---------+ -|0 3|- -|1 2|- +---------+
use Network.renumber to change port ordering.
Example
>>> import skrf as rf >>> from skrf.calibration import IEEEP370_MM_NZC_2xThru
Create network objects for 2xThru and FIX-DUT-FIX
>>> s2xthru = rf.Network('2xthru.s4p') >>> fdf = rf.Network('f-dut-f.s4p')
Create de-embedding object
>>> dm = IEEEP370_MM_NZC_2xThru(dummy_2xthru = s2xthru, name = '2xthru')
Apply deembedding to get the actual DUT network
>>> dut = dm.deembed(fdf)
Note
numbering diagram:
FIX-1_2 DUT FIX-3_4 +----+ +----+ +----+ -|1 3|---|1 3|---|3 1|- -|2 4|---|2 4|---|4 2|- +----+ +----+ +----+
Warning
There are two differences compared to the original matlab implementation [I3E370]: - FIX-2 is flipped (see diagram above) - A more robust root choice solution is used that avoids the apparition of 180° phase jumps in the fixtures in certain circumstances
References
[ElSA20]Ellison J, Smith SB, Agili S., “Using a 2x-thru standard to achieve accurate de-embedding of measurements”, Microwave Optical Technology Letter, 2020, https://doi.org/10.1002/mop.32098
[I3E370] (1,2)https://opensource.ieee.org/elec-char/ieee-370/-/blob/master/TG1/IEEEP370mmZc2xthru.m commit 49ddd78cf68ad5a7c0aaa57a73415075b5178aa6
Methods
receiver filter in COM defined by eq 93A-20 As defined in 802.3-2022 - IEEE Standard for Ethernet annex 93A |
|
Advanced reflective DC point extrapolation. |
|
Enforce the Nyquist Rate Point. |
|
IEEEP370_MM_NZC_2xThru De-embedding Initializer |
|
Extrapolate a network to DC using interpolation for all S-parameters. |
|
enforces symmetric upon the first 10 points and interpolates the DC point. |
|
Perform the de-embedding calculation |
|
Extrapolate the network to DC using IEEE370 NZC algorithm. |
|
Compute step response to get the time-domain impedance from S-parameters. |
|
Make a time-domain step response from an impulse response. |
|
Compute the S-parameters of a transmission line. |
|
Peel N points of the network on both side and return the corresponding error boxes. |
|
Shift the whole network of N samples in time-domain. |
|
Shift one port of the network of N samples in time-domain. |
|
Perform the fixtures extraction. |
|
Create a perfect thru |