On 12/07/2019 12:05 PM, Nate Temple via USRP-users wrote:
Hi Luke,
What version of UHD are you using?
There was an issue with the DUC/DDC phase accumulator's resolution,
but it was fixed with UHD 3.14.1.0.
The threads below are were this was identified:
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2019-May/059914.html
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2019-April/059465.html
As recommended from the thread:
Phase may change each time streamers are created, but the phase between TX
and RX should remain consistent during streaming. Tuning must be done
with
timed commands and a consistent time delta between the tune time of TX and
RX must be maintained that is greater than 500us to maintain the coherence
across re-tunes.
If you're using the QT widget without any modifications, it will not
be using timed commands, you'll need to generate the python file and
manually add in the timed commands to the set_freq calls.
Also, if I remember correctly, even with the phase accumulator fix,
there was some caveats to which frequencies would stay coherent. I
need to go back and look at some notes on it.
Regards,
Nate Temple
The other thing to consider is the contribution of Fractional-N
synthesis to the unpredictable nature of the phase of two synthesizers,
even when
using a common reference.
Many years ago, Texas Instruments published a quite-nice technical brief
on the difference between Fractional-N and Integer-N synthesis:
http://www.ti.com/lit/an/swra029/swra029.pdf
A side-effect of fractional-N synthesis is that two frac-N synthesizers
will not necessarily have a zero phase-offset with respect to one another,
without a bit of "help". That "help" comes in the form of a special
"phase reset" signal on *some* modern PLL synthesizers. One of the
caveats is that all the synthesizers have to have this "phase reset"
signal triggered at the same time (or, I think, more properly, within less
than one cycle of Fref). So, that is the reason that timed commands
must be used to allow predictable phase-offset. Fortunately, the MAX2871
used on the UBX is such a synthesizer.
A further complication, just as a bit of trivia not relevant to this
case, is that SOME fractional-N synthesizers "dither" the averaging schedule
used to change between N and N+1 states, in order to spread-out
synthesizer spurs to reduce energy at sharply-defined frequencies.
In those cases, it's easy to see how maintaining coherence among
multiple instances would be impossible, even with a common
reference.
But this also brings up another issue (not relevant in this case, but
something to be aware of). Two frac-N synthesizers of different
design may not be able to maintain mutual coherence of predictable
phase-offset. So these "timed command" tricks can only
really be used among synthesizers of exactly the same type. In the
Ettus case, that means among daughterboards of exactly
the same type.
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com