Fix TX scaling bug that was costing 10dB of output power at max gain. Improve performance on Windows to reduce overruns at high sample rates. Add underrun stats. Display temperature. Improve error handling. Move setting device settings off GUI thread. For #1522
USRP MIMO plugin
Introduction
This MIMO plugin sends and receives multiple streams of I/Q samples to and from a USRP device that has more than one Rx or Tx channel, such as the B210, X310 or N320.
Up to two Rx and two Tx channels are supported. On devices with more channels (E.g. N310), the first two channels are used.
The Rx channels are received using a single UHD stream and the Tx channels are transmitted using a single UHD stream, so that samples for each channel are time aligned, which is required for applications such as direction finding and beamforming.
The Rx and Tx sides can be started and stopped independently.
The center frequency is common to both channels on each side (Rx and Tx), as is required for coherent operation. On devices where the two channels share an LO (E.g. B210), this is also a hardware requirement. The sample rate is common to Rx and Tx.
Settings are applied to the device in a separate thread, so that settings that take a long time to apply (E.g. sample rate, clock source and bandwidth) do not block the GUI.
Interface
The top and bottom bars of the device window are described here
1: Stream selection
Selects which side (Rx or Tx) and which channel (0 or 1) the settings below apply to. Settings common to both channels of a side (E.g. center frequency, LO offset, bandwidth, decimation or interpolation) are shown for the selected side. Settings that are per channel (gain, gain mode and antenna) are shown for the selected channel.
2: Spectrum source
Selects which side (Rx or Tx) and which channel is displayed in the main spectrum.
3: Rx and Tx start/stop
Starts or stops the Rx or Tx side. The button color indicates the state:
- Grey: device is not running
- Blue: device is idle
- Green: device is running
- Red: device is in error
4: Baseband sample rate
This is the baseband sample rate of the selected side, after software decimation or interpolation.
5: Center frequency
This is the center frequency in kHz of the selected side. It is common to both channels.
6: LO offset
The LO of the selected side is offset from the center frequency by this amount (in kHz), and the digital NCOs in the device are used to compensate. This can be used to move the DC spike and LO leakage away from the center of the band. It should be less than half of the sample rate.
7: Clock source
Selects the reference clock source for the device (E.g. internal, external or gpsdo). If the selected clock is not detected, the device falls back to the internal clock, and this is shown here.
8: DC offset and IQ imbalance correction
Enables automatic DC offset and IQ imbalance correction in the device, for both Rx channels. These are not available for Tx.
9: Analog low pass filter bandwidth
Sets the bandwidth of the analog low pass filter, in kHz, for both channels of the selected side.
10: Transverter mode
Opens the transverter dialog for the selected side. See the transverter dialog documentation for details.
11: Sample rate
This is the device to host (SR) or baseband (BB) sample rate in samples per second. The button on the left switches between the two modes. The device to host sample rate is common to the Rx and Tx sides.
12: Master clock rate
This is the sample rate between the FPGA and RFIC, as calculated by UHD from the requested sample rate. It is common to Rx and Tx.
13: Software decimation or interpolation factor
This is the software decimation (Rx) or interpolation (Tx) factor applied to the samples of the selected side, to obtain the baseband sample rate.
14: Gain
The gain lock button, when engaged, applies gain settings to both channels of the selected side.
The gain mode (Rx only) selects between automatic gain control and manual gain. The slider sets the gain in dB, when manual gain is selected.
15: Antenna
Selects the antenna for the selected channel.
16: Board temperature
This is the temperature of the board in degrees C, for devices that have a temperature sensor (E.g. the AD9361 on the B210).
17: Stream status indicators
These show the status of the stream for the selected side:
- Stream: turns green when the stream is running
- O/U: turns red if the Rx stream experiences overruns or the Tx stream experiences underruns
- T/D: turns red if the Rx stream experiences timeouts or the Tx stream drops packets
The indicators are reset when the side is restarted.
Hovering over an indicator shows statistics for the current (or last) run: the total number of events, the average number per minute, the number in the last minute and the time of the last event.
