USRP/LFRX ADC Saturation and Range


Hi I’ve done some tests over the last couple of months with a USRP
and a LFRX daughtercard.

I have been using the script with decimation
of 32 (2 MHz sampling rate).

I did some calibrations using a waveform generator that has a 50 ohm
impedance output. I set the waveform generator to a low amplitude of
50 mV peak to peak.

I recorded some files using the script and saved
the output as 16 bit integer shorts. I tried 0 and 10 dB USRP gain

Using a 50mV peak to peak sine wave at 10kHz:

At 0 dB of gain I computed a calibration of 12,383 counts/volt
At 10 dB of gain I computed a calibration of 37,679 counts/volt

I used the USRP/LFRX with a hydrophone (underwater microphone)
and obtained some recordings of sound events. Running the same
script and 10dB gain, I observed saturations
from loud events at about +14,964 and -12,025 counts.

I’m confused on a couple of issues.

  1. Its strange that at 0dB I don’t measure something like 32,767
    the full range of the 16 bit short integer data type.

  2. Its also strange (assuming my calibrations are valid) that I see
    at +14,964 and -12,025 with 10dB of gain. I would have expected to see
    this closer to +11,923 and -11,923 (my counts/volt calibration divided
    by 3…16 the 10 dB gain)

Does anyone have any ideas on the two issues of confusion? I’ve
read many posts and still can’t find answers.



Hi Dan.

I don’t think 2^16 denotes the maximum sample value in the USRP. We
have a 12bit ADC, so we start off with -2048->2047. This then gets
bit shifted to the right by 3 places when it enters the USRP, so we
have x8. The CORDIC causes our sample values to be divided by about
1.6. Then we also have the CIC and HBF. The CIC’s gain varies
depending on the decimation and the HBF’s gain is 1bit (6dB).

Looking at the ADC’s datasheet, we need 2Vp-p to fully utilise its
dynamic range. The input impedance of the ADC is around 220ohms so
this is equal to an input signal level of about 6dBm. If you go above
this you will get saturation.

I want to do some simulations with input signals and the algorithms on
the USRP to determine the maximum sample value. I’ll post the results
of this when I’m done.