RSSI 测量问题
- Is RSSI measuring possible with the USRP motherboard and the RFX
transceiver board? I know we have the RSSI circuit onboard, but I don't know on
which frequencies it scans?
The RSSI on the motherboard will tell you the power within approx. +/- 15 MHz
from your carrier. You can also get a digital RSSI which will tell you the power
within your signal of interest. The way we have envisioned RSSI is as a 3-part
measurement:
1) Analog RSSI (we can read it using AUX ADC)
2) Digital RSSI in FPGA
(from output of ADCs)
3) Digital RSSI in host (computed however you like,
from the channel zed signal sent over the bus by the USRP)
If you want to use the measured analog RSSI, it will measure whatever passes
through the analog channel filter. You can only change that bandwidth by
changing inductors and capacitors. Note also that analog RSSI is only on the
RFX900, RFX1200, RFX1800, and RFX2400. The RFX400, TVRX, and DBSRX do not have
that capability.
- Is there an RSSI circuit on these boards? I'm using the Flex 2400.
The RFX900, 1200, 1800, and 2400 have an RSSI circuit on board. The RFX400
does not.
To read the RSSI value, use read_aux_adc(side,0). The RSSI measures the
analog signal level after the lowpass filters on the board. These filters are
about 15-20 MHz wide. Thus, anything falling in that band will cause a rise in
the RSSI value. It is connected to the low-speed adc AUX_ADC_A1, so you need to
read that with read_aux_adc(which_dboard,0) See usrp1.i
(and in usrp_basic.{cc,h):
int read_aux_adc (int which_dboard, int
which_adc);
The RSSI reads the power in the analog baseband signals (power (I) + power
(Q)). The analog baseband will contain signals from approximately +/- 15 MHz
from the LO frequency.
- I can read the analog RSSI indicator with the auxiliary ADCs, but it is
not connected to the gain control. Instead, an auxiliary DAC controls the gain
control, right?
Yes, that is correct. You can reconfigure the board by moving some resistors
around to make it automatic if you wanted.
- How do I set the mux register to look at the AUX_ADC inputs?
You don't use the mux register to read the AUX_ADCs. See
usrp/host/lib/usrp_{[basic,standard}.h
for docs on all of this stuff.
See especially usrp_basic_rx: :read_aux_adc and usrp_basic_tx: :read_aux_adc
/*!
*
\brief Read auxiliary analog to digital converter.
*
* \param
which_dboard [0,1] which daughterboard
* \param which_adc [0,1]
* \param
value return 12-bit value [0,4095]
* \returns true iff successful
*/
bool read_aux_adc
(int which_dboard, int which_adc, int *value);
/*!
* \brief Read auxiliary analog to digital converter.
*
* \param
which_dboard [0,1] which daughterboard
* \param which_adc [0,1]
*
\returns value in the range [0,4095] if successful, else READ_FAILED.
*/
int read_aux_adc
(int which_dboard, int which_adc);
The second version has a python binding:
v =
u.read_aux_adc(0, 0)
where u is an instance of a usrp.source_c or usrp.sink_c
The bad news is that these are read asynchronously using a slow path over the
USB. You probably can't read them fast enough to sample to your input signal,
and the sampling is asynchronous.
[ <<
C++ 接口 | ^
USRP FAQ 首页 ^ | 母板重定时 >> ]
注:RSSI Measurement Questions(原文出处,翻译整理仅供参考!)