[USRP-users] Phase sync with different frequencies

2017-11-25 Thread Bakshi, Arjun via USRP-users
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-A TX @ 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
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Phase sync with different frequencies

2017-11-25 Thread John Shields via USRP-users
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
Sent: Sunday, November 26, 2017 10:28 AM
To: discuss-gnura...@gnu.org ; usrp-users@lists.ettus.com
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-A TX @ 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
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Phase sync with different frequencies

2017-11-25 Thread Bakshi, Arjun via USRP-users
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 
Sent: Saturday, November 25, 2017 10:07:14 PM
To: Bakshi, Arjun; discuss-gnura...@gnu.org; usrp-users@lists.ettus.com
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
Sent: Sunday, November 26, 2017 10:28 AM
To: discuss-gnura...@gnu.org ; 
usrp-users@lists.ettus.com
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-A TX @ 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_