RSSI calculation

Hi, All,
I am a bit confused about RSSI calculation.
In the given verilog code at
http://code.ettus.com/redmine/ettus/projects/fpga/repository/revisions/8b377a9d6d0ad281474a8dbff49ea3b093178b28/entry/usrp2/sdr_lib/rssi.v

I can see RSSI is defined by 16 bits.

But in usrp_prims_common.cc, function usrp_read_aux_adc,
*value = ((v_hi << 2) | ((v_lo >> 6) & 0x3)) << 2; // format as 12-bit
the value is only assigned by 12 bits. I though the value is RSSI. But
then
it contradicts with format given in the verilog code. Or value is not
RSSI?

Any help is appreciated.
Fengyuan

On 03/25/2011 10:52 PM, Fengyuan Gong wrote:

then it contradicts with format given in the verilog code. Or value is
not RSSI?

Any help is appreciated.
Fengyuan


Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
I believe that the aux adcs are only 12-bit resolution.

Furthermore, only one or two daughtercards actually provide an analog
RSSI signal that the aux_adc can read.

A better RSSI estimate can be produced in software:

  source--->complex-to-mag-squared----->single-pole-iir-filter

On 03/25/2011 07:52 PM, Fengyuan Gong wrote:

not RSSI?
You are looking at 2 different calculations of RSSI. The first one
happens in the FPGA and uses ADC values. This is in the USRP1.

The second one happens on the host and it uses the analog signal
strength measurement on the RFX900/1200/1800/2200/2400.

Matt

Shouldn’t the second one also read ADC value on the
RFX900/1200/1800/2200/2400 and then calculate out the analog signal
strength?

On 30/03/2011 8:33 AM, Fengyuan Gong wrote:

Shouldn’t the second one also read ADC value on the
RFX900/1200/1800/2200/2400 and then calculate out the analog signal
strength?

That function just does a read of the AUX_ADC (apparently a 10-bit
aux_adc on USRP1), it has no notion that it’s an RSSI value–it’s
just an unstructured collection of bits as far as read_aux_adc is
concerned.

The “calculate out the analog-signal strength” part is essentially up to
whatever upper-layer software is using the resulting aux_adc
value, and interpreting it as an RSSI.

In the case of the RFX-series boards, the aux_adc input is connected to
the analog RSSI estimator that’s built into the demodulator
chip–in this case, the sum of two (I and Q) square-law detectors,
maybe with a little bit of gain. So the aux_adc values read are
directly proportional received signal strength. It’s up to your
software to scale appropriately.

On 30/03/2011 8:33 AM, Fengyuan Gong wrote:

Shouldn’t the second one also read ADC value on the
RFX900/1200/1800/2200/2400 and then calculate out the analog signal
strength?
You should also be aware that the analog RSSI input is the signal power
over the analog-detector bandwidth in the demodulator chip, which
is typically much wider than the bandwidth that you ultimately
process, so if you’re processing the I and Q signals for other reasons,
you
might as well also compute RSSI from those signals, which is cheap.

Also, analog square-law detectors (as used in the demod chip) typically
only produce reliable results over a narrow range of input powers,
whereas the reliability of the computed value is much better (it’s
limited in the main by the linearity of the signal-path ADCs).