Automatic testing with Magnitude and Phase plotting
This is an extension of the scalar analyzer to include the
phase response of the device under test (DUT). The results appear to be
relatively correct but I have not yet calibrated them absolutely.
The only hardware required is a USRP with one basic TX and RX
board, and something to test.
We measure a DUT by comparing it's response to a referance channel, a coax cable.
The referance channel is a 2 ft long RG-174 with sma connectors
connected from J49 to J18. The DUT is connected with two
shorter pieces of RG-174 between J48 and J19. At the low frequencies
used (below 30Mhz, wavelengths longer than 10 meters) a few
inches difference is negligible.
A single software signal source is swept over a 600Khz band and sunk into
the usrp, upconverted and transmitted from the basic TX board. This one
signal makes a quadrature output on J48 and J49. When
the two signals, either directly connected or thru a DUT, are downconverted
(what is it's effect on phase?),
equalized in amplitude (to 120 units here) and mixed, we get 2X f
and a DC component relative to their phase. The 2X f is filtered
out, and the DC component varies with the phase difference: it is near 0 when the
two signal paths have equal phase delay, i.e., the two received signals
are the original quadrature signals at 90 degrees. If there
is enough delay in the DUT, relative to the referance path, that the
signals are made 0 degrees apart, the DC component of the mix is maximum
positive, and when 180 degrees apart the DC is maximum negative.
Since we have to measure the input signals to set a pair
of multipliers to equalize the signals anyway, we already have a measurement
of their amplitudes. Also, although the stimulus signal levels from J48 and J49
vary with frequency, we can still plot the DUT amplitude response
by measuring it relative to the reference channel.
Anyway, here's the script
Here is a wire coax for the DUT:
As we expect, the magnitue response, the red curve, is even across the domain, i.e.,
the amplitude of the two signals are equal, and the phase, green, is constantly
near 0, indicating the two input signals remain at 90 degrees from
3.5 to 4.1Mhz. Within about 10Khz of the center DUC/DDC frequency
the signal products get very low and 2f becomes less than 20Khz so it
becomes very expensive to filter out. For now we consider center +/- 10K
as invalid data. Some day we will just move the center frequency and retest to
get a continuous plot.
Next we connect an 80 meter bandpass filter between J48 and J19. This is
a concatenation of the data taken in 7 600Khz bands with centers at 1.4, 2,
2.6, 3.2, 3.8, 4.4 and 5Mhz.
This is the plot of magnitude and phase of the circuit simulated in SPICE3:
I think it's validating that where phase is "0" in the gnuradio plot, relative
to the peaks in the magnitude, is also 0 or 3.14 in the spice plot.
Again, the data is uncalibrated at the moment, as far
as absolute measurements go, but this is just to show that they do wiggle
and change reasonably and smoothly with frequency.