Phase coherence for N210 and SBX

Hi,

I am working on phase coherent reception using 2 USRP N210s where each
is
mounted with a SBX. The 2 N210s are connected via a MIMO cable. 10MHz
reference clock and PPS are generated by an OctoClock-G and are fed into
each N210. In this experiment, a TX antenna transmits a constant signal
to
2 RX antennas. I want to obtain coherent phases at the 2 RX antennas.
Attached is the flow graph I am executing. It seems that I cannot
achieve
coherent phase at the 2 Rx antennas. Any suggestions? Thanks.

Pengyu

I followed the suggestions and plotted the received baseband signal in
the
IQ constellation. The phase offset of the baseband received by the two
RX
antennas are still not constant… Attached are the update flow graph
and
python program. Would be great if you can take a look again. Thanks.

If you have the Octoclock-G connected to both units, then you don’t need
to use the MIMO cable.

Make sure that both mboards have “external” for both the reference clock
and pps selections, and that “device time” is set to “unknown PPS” for
both of them.

On 2015-04-23 14:49, Pengyu Z. wrote:

Hi,

I am working on phase coherent reception using 2 USRP N210s where each is
mounted with a SBX. The 2 N210s are connected via a MIMO cable. 10MHz reference
clock and PPS are generated by an OctoClock-G and are fed into each N210. In this
experiment, a TX antenna transmits a constant signal to 2 RX antennas. I want to
obtain coherent phases at the 2 RX antennas. Attached is the flow graph I am
executing. It seems that I cannot achieve coherent phase at the 2 Rx antennas. Any
suggestions? Thanks.

Pengyu


Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page [1]

Links:

On 04/23/2015 06:06 PM, Pengyu Z. wrote:

I followed the suggestions and plotted the received baseband signal in
the IQ constellation. The phase offset of the baseband received by the
two RX antennas are still not constant… Attached are the update flow
graph and python program. Would be great if you can take a look again.
Thanks.

ALSO, the WX GUI scope sink doesn’t maintain predictable phase-alignment
between multiple signal sources…

On 04/23/2015 06:06 PM, Pengyu Z. wrote:

don't need to use the MIMO cable.
cable. 10MHz reference clock and PPS are generated by an
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

If you want phase-coherency, the two USRP sources must be part of the
same multi_usrp object–you have them as separate sources. One
can think of a multi_usrp object as also providing a common
“coherency domain”.

Also, even when you do that, the “timed commands” feature in UHD,
specifically designed to zero-out phase offset for the SBX and WBX and
UBX boards, isn’t, as far as I recall, something that gr-uhd does
automatically, so it isn’t available in a GR flow-graph. Martin B.
can correct
me if I’m wrong.

Thanks for the inspiring tips. I did not use the WX GUI scope for
checking
the phase offset. Instead, I log the baseband signal received by each RX
antenna. Then, I plot the IQ constellation of the received baseband for
checking their phase offset.

Can you be a bit more specific when you say the “multi_usrp object” and
the
“timed commands”? Are there tutorials that I can follow step by step for
using the two functions you mentioned? Your comments are very helpful :slight_smile:

On 04/23/2015 06:23 PM, Pengyu Z. wrote:

Thanks for the inspiring tips. I did not use the WX GUI scope for
checking the phase offset. Instead, I log the baseband signal received
by each RX antenna. Then, I plot the IQ constellation of the received
baseband for checking their phase offset.

Can you be a bit more specific when you say the “multi_usrp object”
and the “timed commands”? Are there tutorials that I can follow step
by step for using the two functions you mentioned? Your comments are
very helpful :slight_smile:

A source/sink block in Gnu Radio uses an underlying multi_usrp object,
so all you have to do is configure your source block for two channels,
with
two devices, and use

addr0=<first-device-ip-addr,addr1=

In the device arguments.

Also, recent gr-uhd (3.7.6.1 and newer at least) use timed commands, so
phase-zeroing will happen after a tune automatically, without you having
to do anything.

The top of the UHD manual is here:

http://files.ettus.com/manual/page_devices.htmlhttp://files.ettus.com/manual/page_devices.html

The Doxygen docs are here:

http://files.ettus.com/manual/page_coding.html

The documents for gr-uhd are part of the Gnu Radio documentation:

http://gnuradio.org/doc/doxygen/classgr_1_1uhd_1_1usrp__source.html

Hi Marcus, hi Pengyu,

I’d like to make an addition to that:
modern gr-uhd uses a timed command to start streaming samples, so the
CORDICs in both USRPs should be aligned. But:
It doesn’t inherently use timed commands for tuning; you should do
something like:

usrp_source0.set_command_time(uhd_source0.get_time_now()+0.1)
usrp_source0.set_center_freq(frequency)
usrp_source0.clear_command_time()
time.sleep(0.15)

after you configured your usrp_source and before your top_block is
.start()ed.

Generally, I like
http://files.ettus.com/manual/page_sync.html
because it explains a bit why and how things work.

Greetings,
Marcus

Hi Marcus,

I updated the flow graph (attached) as you suggested. It would be great
if
you can help check and let me know if I am wrong…

For upgrading the UHD, I followed this link. UHD is installed
successfully.
However, it seems that gnuradio does not call the latest UHD. Instead,
it
still calls uhd-host which is combined in the gnuradio package. Do you
have
suggestions about how to solve this problem? Thanks.

Pengyu

I got the same UHD version (shown below) when I use apt-get for
installation. I will try the PyBOMBS now…

$ python top_block.py
linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.005.005-0-unknown

$ apt-get install gnuradio

On 04/24/2015 04:27 PM, Pengyu Z. wrote:

    constellation of the received baseband for checking their
  two devices, and use

http://gnuradio.org/doc/doxygen/classgr_1_1uhd_1_1usrp__source.html

Uninstall all your uhd and gnuradio packages, and re-install, following
the guide here:

http://ettus-apps.sourcerepo.com/redmine/ettus/projects/uhd/wiki/GNU_Radio_UHD

You must not do apt-get install gnuradio, because Ubuntu’s GNU Radio
depends on Ubuntu’s UHD which will automatically and inevitably be
installed; so you must uninstall gnuradio, uhd-host, and your manually
installed UHD now, before doing things with pybombs.

Greetings,
Marcus

Hello Pengyu:

I’ll send you my build instructions document. I think that will help
guide
you.

–Neel