I’m starting up on another R&D project using GnuRadio.
The project is a transponder, used by NASA for ranging.
It uses DSSS on both the uplink and the downlink. The
transponder has to be coherent, and it synchronizes the
PN epochs of the received uplink and the transmitted downlink.
This allows the groundstation to compute the round-trip time,
(and hence the range), by comparing the offset of the
received epoch to that of the one originally transmitted
to the transponder.
My plan is to use stream tags to accomplish the
synchronization. This will require getting a time tag
for each received sample, identifying the time of the
first sample associated with the epoch of the received
uplink, and using that time to start the transmission
of the first sample of the downlink epoch a small integer
number of epochs later (to allow for GnuRadio latency).
I have not yet used stream tags, and have a number of
Is it possible to get timetags for every sample? My
readings on time tags seemed to imply that only one
is created at the beginning of a stream.
What is the accuracy/precision of the time tags? Jitter
is going to be the make-or-break factor on this project.
It looks like the Start-Of-Burst (SOB) tag is the only
way to control the time of transmission. Is there any
limitation on the length of a burst? In my case, I would
want to start the transmitter in response to receiving
the uplink, and not stop it until the uplink ceases,
about 4 minutes later.
Is there any good tutorial or example information on
the use of stream tags? (I’m using GR 3.6.1)
Does all this sound like I’m headed in the right direction,
or is there something fundamental that I’m missing?
Thanks in advance for any help!