# What is the range of USRP complex sample values

For complex IQ data values, what is the min/max range both for data
coming from the USRP and data sent to the USRP?

There are three obvious guesses:

1. Normalized to +/-1.0.
2. Direct match to the ADC/DAC ranges.
3. Normalized to a nominal ADC/DAC range.

The first is right out since the values coming back are typically much,
much larger than that.

The second would result in the RX range (which uses a 12-bit ADC) being
either 0 to 4095 or -2048 to +2047 while the TX range (which uses a
14-bit DAC) would be either 0 to 16383 or -8192 to +8191. However, while
I see both positive and negative values in the RX data stream, I also
see values that are well above even the unsigned range.

This leads me to suspect that the data is being normalized to signed
16-bit values in both directions yielding a range of -32,768 to +32,767
by the simple expedient of left shifting the ADC output by four places
and right shifting the DAC output by two places (with sign extension, of
course). This seems reasonable as it would make migrating to higher (or
lower) resolution ADCs and DACs transparent, at least until devices with
greater than 16-bits of resolution are used.

Is that correct, at least where the useful range of values for complex
IQ data is concerned?

Thanks.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The maximum (at 16 bits complex samples) data rate across USB on the
USRP is 16 MHz; hence the minimum decimation rate of 4. My understanding
is that this decimation gives more bits – since you’re combining 4
samples together, you can now extrapolate between 12-bit ADC samples for
a higher resolution. So the min/max data range for complex data from the
USRP is -32768/+32767, the full range of the 16-bit short coefficients.

• -Dan

Bahn William L Civ USAFA/DFCS wrote:

The second would result in the RX range (which uses a 12-bit ADC) being either 0 to 4095 or -2048 to +2047 while the TX range (which uses a 14-bit DAC) would be either 0 to 16383 or -8192 to +8191. However, while I see both positive and negative values in the RX data stream, I also see values that are well above even the unsigned range.