On 01/21/2021 02:56 PM, Glenn Hazelwood via USRP-users wrote:
I have an N310 and I wish to scan from 10 MHz to 5910 MHz with two
channels. The frontend bandwidth is 100 MHz. So I do 60 tunings
overall. I am directly using the UHD 3.15.0.0 C++ API
The retune time is typically ~120 ms. My sample rate is 125 Msps.
Therefore, the time to receive samples is relatively small. For
example, receiving time for 32768 samples is ~1.3 ms. WIth one thread
and one channel, my overall tune and receive time for the 60 tunings
is ~7200 ms.
I wanted to try to reduce the overall runtime by using two threads and
two channels. One thread would do half the tunings and the other
thread would do the other half at the same time.
I see that I can make separate rx_streamers in separate threads, each
with its own channel to receive samples. I think
rx_streamers[chan].recv() should work for two threads. I'm not so
confident about 'usrp->set_rx_frequency()' for two threads.
Is it possible to have two separate threads each tune to different
frequencies at the same time with the N310?
Also: Is there a way to search the Archives to see if someone has
already asked this question. Google doesn't always seem to help.
-
Diftor heh smusma
-Famous Vulcan Phrase ;)
Tuning time is an artifact of the hardware (AD9371 in this case)--which
isn't really fast on re-tuning. It has nothing to do with thread
architecture/layout.
Further, channels 0 and 1 will always be tuned to the same RF frequency,
due to the LO architecture of the AD9371, similarly 2 and 3 will
always use the same LO frequency.
You can certainly spread sample-handling across multiple threads, and
use the two available RF tunings (across the two RF chips) to speed
things up a bit (cut the effective latency in half by interleaving).
But you're not going to get more than a factor of two.
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com