On 11/27/2017 01:12 PM, Bakshi, Arjun via USRP-users wrote:
I've redone my experiments using the octo-clock as the time/clock/PPS
source, but still can't get a reliable phase across multiple runs.
If I could get confirmation that the following is possible or
impossible through timed commands, I'd have something to go on:
I have 2 USRP N210s each with an SBX. I form 2 "links":
link1 = tx of USRP-A connected to rx of USRP-B by a wire. tx/rx @ freq1
link2 = tx of USRP-B connected to rx of USRP-A by a wire. tx/rx @ freq2
All wire lengths are the same. I believe the wires are also from the
same manufacturing batch.
Note that the frequencies being used on each link are different, so I
don't expect the phase value to be the same across the links. Just the
same for each link after restarting the USRPs.
I would like to see the same phase X on link1 no matter how many times
I restart the 2 USRPs, and the same phase Y on link2.
Thank you,
AB
------------------------------------------------------------------------
*From:* Bakshi, Arjun
*Sent:* Saturday, November 25, 2017 10:40:54 PM
*To:* John Shields; [email protected]; [email protected]
*Subject:* Re: [USRP-users] Phase sync with different frequencies
Hi John,
Thanks for the reply. In my setup I make one of the USRPs use the time
source and clock source as the MIMO cable, while both get an external
PPS signal. Thinking about it now, it may have been better to just
have everything from the external octo clock.
My goal is to get the same channel 'X' on link1, and the same channel
'Y' on link2, no matter how many times I restart the USRPs. Or every
time I restart I should get a*X and a*Y as my channels on the two
links where 'a' can change each time. Right now I observe
different/random channels on each link every time I restart.
To clarify link1 = tx of USRP-A connected to rx of USRP-B by a wire.
tx/rx @ freq1
link2 = tx of USRP-B connected to rx of USRP-A by a wire. tx/rx @ freq2
My concern is that maybe trying to set the tx and rx chains to
different frequencies on the same daughterboard is not a "normal"
operation. I was able to observe the same channel over multiple
restarts when I use only 1 of the two links. But not when I use both.
I'll re-do my setup with time/clock source as octo-clock and update on
Monday.
Thank you,
Arjun
------------------------------------------------------------------------
*From:* John Shields <[email protected]>
*Sent:* Saturday, November 25, 2017 10:07:14 PM
*To:* Bakshi, Arjun; [email protected]; [email protected]
*Subject:* Re: [USRP-users] Phase sync with different frequencies
Hi Arjun,
You mention that you have both units connected to
‘external PPS source, and have a MIMO cable between them’. Not sure
where the Vref is coming from but I presume over the MIMO cable?
I wonder how you are setting the clock and time source
but I had an issue with my understanding of the behaviour of the MIMO
cable in a configuration of 2xN200 each with an SBX.
Firstly, while the documentation on MIMO doesn’t
explicitly mention/highlight it, the PPS is not distributed over the
MIMO cable – the RTC register of the master is copied to the slave
which means that the slave doesn’t actually ‘see’ a PPS over the MIMO
cable. This was not a big issue for me but it meant that operations
such as get_last_pps and setting the ‘sync’ on the slave to ‘unknown
PPS’ both fail though, get_time_now works, so your timed commands
should be good.
Secondly, while it is obvious when you think about it, if
the slave is receiving Vref over the MIMO cable there will always be a
fixed phase offset based, at a minimum, on the physical length of the
MIMO so the Vref offset is a function of the frequency.
Once I understood especially the second behaviour, my
system performed as I would expect.
I know that your setup is different than mine (I was
just supplying the same signal through a splitter to each USRP and
measuring the phase offset), but wonder if this might explain your
observations?
Kind Regards,
John
*From:* Bakshi, Arjun via USRP-users <mailto:[email protected]>
*Sent:* Sunday, November 26, 2017 10:28 AM
*To:* [email protected] <mailto:[email protected]> ;
[email protected] <mailto:[email protected]>
*Subject:* [USRP-users] Phase sync with different frequencies
Hi all,
I'd like to use the phase resync freature on the SBX to get reliable
phase alignment in the following setup:
link_freq1 = USRP-A TX @ Freq1 ---> USRP-B RX @ Freq1
link_freq2 = USRP-B TX @ Freq2 ---> USRP-A RX @ Freq2
Where link_freq1 should always have phase X, and link_freq2 should
always have phase Y. I measure the phase by first calculating the
channel over a wire for that link. I then look at the phase of the
channel.
The USRPs are connected to an external PPS source, and have a MIMO
cable between them.
I've been able to use timed commands to get the same channel/phase
every time (after multiple restarts) in a single link setup like:
USRP-ATX @ Freq1 ---> USRP-B RX @ Freq1
But my code for phase sync in the 2-link setup doesn't seem to
work(copied below). I understand that the phase of each link's channel
may not be the same as the frequencies are different. However is it
possible to set it up so that the phase/channel over wire in
link_freq1 is always X and that in link_freq2 is always Y? Or is that
impossible because of some hardware constraints?
Thank you,
AB
code snippet:
## 2-channel usrp source and sink have been initialized, everything
except
## center feqs have been set
## uhd_usrp_source_0 is a multi usrp source block
## uhd_usrp_sink_0 is a multi usrp sink block
## both blocks have device args set to : "addr0=192.168.10.3,
addr1=192.168.10.2"
## the following code is added in the init() function:
time.sleep(1)
future_cmd_time = self.uhd_usrp_source_0.get_time_last_pps() +
uhd.time_spec_t(1.0)
##My guess is that both physical USRPs should see this time since
MIMO+same external PPS
self.uhd_usrp_source_0.set_command_time(future_cmd_time)
self.uhd_usrp_sink_0.set_command_time(future_cmd_time)
self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(cf), 0)
self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(cf2), 1)
self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request(cf2), 0)
self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request(cf), 1)
self.uhd_usrp_source_0.clear_command_time()
self.uhd_usrp_sink_0.clear_command_time()
This is in the init() function. I don't re-tune the frequencies again
after this.
------------------------------------------------------------------------
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
Virus-free. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
You may get better phase coherence using INTEGER_N tuning:
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2016-February/018450.html
If you're distributing clock and PPS from the Octoclock, there's no need
for the MIMO cable, unless you're running in shared-ethernet mode.
Also, see the following app-note on device synchronization here:
https://kb.ettus.com/Synchronization_and_MIMO_Capability_with_USRP_Devices
But I'll comment that in the "real world" you'll never see RX and TX
having phase-synchronous clocks, which is why receiver algorithms require
PLLs to extract data from the carrier modulation.
Now, that's a *different* issue than having phase-synchronous TX and
(independently) phase-synchronous RX in a MIMO system. You need all
receivers to be phase-synchronous with each other, and all
transmitters to be phase-synchronous with each other.
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com