Clock synchronization by message passing

how can we set the time of usrp by sending it message. I know there are
function to (usrp.set_time_now()) do this from from top block variable
but
can this be done by sending message at usrp port .
We can give internal reference signal of 10MHz but is there also a way
to
give pps signal internally i.e. without using any external hardware.

The GPSDO can provide an “internal” 10 MHz/1 PPS signal. I’m not sure
if
that’s what you meant or not:

AFIAK, you cannot set the time of a USRP with a message. You may be able
to
use the XML_RPC block in gr-extras to call the function if it is exposed
through gr-uhd.

-John

On Sun, Jun 16, 2013 at 10:30 AM, Jay Prakash
<[email protected]

thanks for the clarification
so i checked the new grextras wiki it has uhd_control block i guess that
can be used for this job.

Jay Prakash
Senior Undergraduate
Electronics Engineering
IIT (BHU)
VARANASI

+91-9559475258

http://www.linkedin.com/profile/view?id=91120191&trk=hb_tab_pro_top

so i checked the new grextras wiki it has uhd_control block i guess that
can be used for this job.
uhd_control block supports only a subset of usrp-functions (exposed
through gr-uhd) e.g. “set_command_time”, set/get_gain/freq etc BUT
currently it doesn’t support “set_time_now()”
https://github.com/guruofquality/grextras/blob/master/lib/uhd_control_port.cpp

-Adeel

On Sun, Jun 16, 2013 at 11:06 AM, Jay Prakash
<[email protected]

so do we have any other block to do that. I did’nt find XML_RPC block in
the new gr-extras

Jay Prakash
Senior Undergraduate
Electronics Engineering
IIT (BHU)
VARANASI

+91-9559475258

I think i can use set_command_time (which i guess set the next time of
transmission/command?).
how can i make the usrp send its time when configured for
synchronization?

Jay Prakash
Senior Undergraduate
Electronics Engineering
IIT (BHU)
VARANASI

+91-9559475258

“XML_RPC block in the new gr-extras”

XML_RPC would have been subject to the same limitations. It could only
call set_time_next_pps if set_time_next_pps was in the uhd_sink/source
blocks. Maybe you can update them to include the function.

Let me ask a more fundamental questions - why do you want to reset the
time?

-John

On Sun, Jun 16, 2013 at 11:20 AM, Jay Prakash
<[email protected]

“how can i make the usrp send its time when configured for
synchronization?”

I might be misunderstanding the question, but here’s an answer. The
USRP
source outputs stream tags on the first sample when streaming. The
three
tags are 1) rx_time 2) rx_rate 3) frequency. Using (1) and (2), you
should be able to determine and track the time of the USRP.

You would use set_command_time for anything with commands - gpio,
tuning,
etc. This is in the control plane. You do timed bursts in the data
plane
with stream tags -> tx_sob, tx_time, tx_eob.

If these terms are foreign to you, Google “introduction to stream tags”
by
Tom R.

-John

On Sun, Jun 16, 2013 at 12:02 PM, Jay Prakash
<[email protected]

I went through the stream tagging pdf.

The tags from source has time,freq and rate.

I am interested in insuring that transmitter sets a particular frequency
of
transmission ie Tx_Next_freq and time at which the transmitter starts
sending data packets at an instance.

The set_command_time as you suggested should work.

I see the features being implemented in Pre-cog.Can I get a heading of
how
has these two features been insured?

The sole purpose of my questions is setting a synchronized frequency
hopping and unbroken data transfer at these hopping channels.

I have a set of TX frequencies [f1,f2,…fn]
and Receiver two has the knowledge of the frequency table.

Now I have a file and want to send certain chunks at different
frequencies
and insure Receiver receives them without error.
For this Receiver will have to be synchronized with Tx and hop instances
of
rx/tx should not be lagging.

Setting time of transmission/freq hop from tx side and getting rx_time
info
from tags can help in establishing the channel I want.

Please help me figuring out the synchronization with respect to Pre-cog
implementation.

Jay Prakash

On 06/16/2013 02:13 PM, Adeel A. wrote:

so i checked the new grextras wiki it has uhd_control block i guess that
can be used for this job.
uhd_control block supports only a subset of usrp-functions (exposed
through gr-uhd) e.g. “set_command_time”, set/get_gain/freq etc BUT
currently it doesn’t support “set_time_now()”
https://github.com/guruofquality/grextras/blob/master/lib/uhd_control_port.cpp

I didnt add every possible setting. But I am happy to add more on
request! I’m gathering that someone would like to make a configuration
and control block that could perform the synchronization tasks w/ a
GPSDO or some external clock and time source.

The intention of the UHDControlPort block was to help clean up much of
the messy control logic in pre-cog. We were passing messages into a
python block that was executing python functions onto the flowgraph.
Sure it worked though :slight_smile: But now there is an API to do configuration
and control nicely.

My intention with the UHDControlPort was to allow for frequency hopping
control in a programatic way (and other stuff too). The UHDControlPort
block uses the property interface to expose device properties that can
be set by another entity – like some sort of configuration block.

So lets say the control block intended to frequency hop and perform a
new transmission:

  1. This control block would find the UHDControlPort in the element tree
    (you would probably do this once in the notify_active() callback).

  2. The control block calls
    uhd_control_block->set(“command_time”, t0);
    uhd_control_block->set(“tx_freq”, new_freq);

  3. The control block now causes a time-tagged message to be sent to the
    transmit chain. control_block → packet_framer → modulator → usrp_sink
    The time of the transmission would be t0 + some delta to allow the
    command of tuning the frontend to have settle time.

-josh

On 06/16/2013 10:44 PM, Josh B. wrote:

I didnt add every possible setting. But I am happy to add more on
request! I’m gathering that someone would like to make a configuration
and control block that could perform the synchronization tasks w/ a
GPSDO or some external clock and time source.

OK, exposed access to time source, clock source, and time registers. Use
it in good health!

-josh

Josh,

I didnt add every possible setting. But I am happy to add more on
request! I’m gathering that someone would like to make a configuration
and control block that could perform the synchronization tasks w/ a
GPSDO or some external clock and time source.

I think it will also be very useful to add “set_rate()” & “get_rate”.
This
will help in dynamic re-configuration of Tx-RX Bandwidth to/from USRP.
USRP source/sink blocks already generates a tag on sampling-rate change
.

Thanks,
Adeel