QPSK: Over-the-Air With Pluto Radios
Scaling the Pluto Radio Output
The Pluto radio outputs double-prevision floating point values.
(The A/D converters and fix-point resampling filters do are converted to doubles inside the Pluto radio.)
You can see this by doing the following in the MATLAB workspace
>> load TestInput.mat
>> whos
Name Size Bytes Class Attributes
r 800001x1 12800016 double complex
The vector r contains complex-valued numbers.
The real part is the inphase component, and the imaginary part is the quadrature component.
You can use the values, as is, in your Simulink design.
But you must scale the TED and PED gains (both Kp) accordingly.
The alternative is us scale the input so that you can use the TED and PED gains
you have used in the past.
Using the Phase Trajectory to Scale the Pluto Radio Output
The PLLs operate on the matched filter outputs.
So we need to determine the scale constant that produces the desired amplitudes
on the matched filter outputs.
Because the samples in r were obtained at 4 samples/symbol the matched filter
is computed using
>> p = rcosdesign(0.5,12,4);
The corresponding matched filter output is
>> x = conv(r,p);
You are now in a position to create a phase trajectory.
The phase trajectory is a plot of the quadrature component of x (the imaginary part) vs. the
inphase component of x (the real part).
In MATLAB, this is accomplished by simply plotting x.
To plot 1000 samples (skipping the transients introduced by the matched filter) do the following:
>> plot(x(6*4+1:6*4+1000));
>> grid on;
>> axis square;
>> axis([-1 1 -1 1]);
The resulting plot should look like this
You should be able to see an average radius that many of the I/Q samples live near.
From this "eye-ball" estimate, you can select the scale factor to create an average radius of 1,
or an average radius of √2.
[The second one places the constellation points at approximately (±1,±1).]