[USRP-users] Unexpected (increasing) latency for set_rx_gain
marcus.mueller at ettus.com
Mon Feb 4 14:23:09 EST 2019
On Mon, 2019-02-04 at 18:34 +0100, Brais Ares via USRP-users wrote:
> I'm trying to implement an AGC software in our RF application. The
> setup is the following:
> master clock rate: 16 MSPS
> fs = 32 KSPS
Are you sure? That's a decimation of 500, 125 of which you're doing
with a CIC. 32 kS/s is really an extremely low sampling rate for SDR
applications, and there's little reason not to do the resampling with
"nicer" software filters on your host PC; even the slowest Linux
computer should have plenty CPU power to do that.
A higher sampling rate would also allow a much more fine-grained
examination of these delays. I'd ask you to examine this option.
Generally, in the interest of reproducability: how are you doing that
gain step detection, en detail?
> Receive samples in blocks of 32k (1 second).
> I made a tiny program, where I change rx_gain every 1 seconds (just
> after rx_streamer->recv() returns) adding or substracting 30 dB.
> To find out when a change in rx_gain actually affects the received
> samples I implemented a simple detection algorithm.
> Ignoring the non-deterministic latency, at least I would expect the
> time between changes to be 1 seconds as well (µ = 1 seconds, with
> some non-zero variance), the same periodicity they were invoked
> However, this change takes on average 1.016 seconds (see figure).
> This means for each set_rx_gain call the radio is taking longer and
> longer to apply the change (see figure). Example:
> t = 1 s -> Recv previous block and change gain
> t = 2 s -> Recv previous block and change gain
> t = 1.016 -> Change in gain detected in previous block (OK, latency
> to change gain is around ~0.016 ms)16 µs would indeed be a pretty *gp
> t = 3 s -> Recv previous nd change gain
> t = 2.032 s -> Change in gain detected in previous block (I would
> expect ~2.016)
> t = 4 s -> Recv previous block and change gain
> t = 3.048 s -> Change in gain detected in previous block (I would
> expect ~3.016)
> t = 60 s -> Recv previous block and change gain
> t = 59.96 s -> Change in gain detected in previous block (After 60th
> call to rx_gain, latency has increased to almost 1 second!)
> Is there any rational reason why this is happening?
> (I've tried longer periods, up to 10 seconds, with the same result).
> USRP-users mailing list
> USRP-users at lists.ettus.com
More information about the USRP-users