discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Flow graph blocking when doing 2x1 transmission


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Flow graph blocking when doing 2x1 transmission
Date: Mon, 02 Jun 2014 19:42:44 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

Hi David,
On 02.06.2014 18:24, David Halls wrote:
> Hi Marcus,
>
> Thanks - I require sample level timing sync. Using the external sync to get 
> accurate LO frequencies is great, but not sufficient. Using a single UHD 
> block with 2 motherboards gives me sample-level sync.
That will only be true if the USRPs are physically sharing the same time
reference -- using a single USRP sink will not align clocks, but only
make sure that stream commands are issued "close after each other",
leaving more than sample duration of random latency between issue and
execution
> Thanks for the code but how are the uhd, and usrp_sink0, usrp_sink0 objects 
> obtained within my own out-of-tree block?
Good point! Usually, you can only do that from where you're constructing
your flow graph; this is where you have the handles for both blocks.
You can, however, write methods (or constructors) that take shared
pointers to USRP sinks, which will enable you to call methods on the
blocks; be careful not to run into multithreading issues when doing that.

> Also setting their time will synchronise the time registers of the two USRPs 
> in the same way as using the external sync (with PPS - I have an octoclock-G),
ah, ok, so this is where the common time ref comes from, and why using a
single sink synchronizes things. Cool!
>  but don't I need to use a 'tx_time' tag (and 'sob', 'eob') too so that they 
> know *when* to transmit their respective bursts? This means having some 
> communication between the two source streams so they can agree on a mutually 
> agreeable tx_time?
Well, with a common PPS pulse, you can do something like
usrp_sink{0,1}.set_time_next_pps(zero_time)

and just let the usrps set the time at the rising edge of your octoclock
PPS signal.

Then, using
usrp_sink{0,1}.set_start_time(uhd.time_spec(x))
you could issue the start of streaming for x seconds in the future.

Greetings,
Marcus



reply via email to

[Prev in Thread] Current Thread [Next in Thread]