X310 Digital Radio Controller (drc_x310)

Digital-Radio-Controller (DRC) for the Ettus x310

Design

This DRC component is used by an application to use the x310 radio hardware. The DRC is used to configure and control the radio hardware. The application connects its transmit and receive data streams to its ports. This DRC supports both single and dual daughter board configurations.

Interface

The interface of the drc_x310 is defined in ../specs/drc_x310-spec.xml

Opcode handling

Both the transmit and receive data stream ports of the DRC use protocol complex_short_timed_sample-prot.xml Transmit (DAC) data streams ignore all opcodes except sample. Receive (ADC) data streams can produce Discontinuity OpCode (dependent on the setting of DRC property report_data_loss)

Properties

The drc_x310 implements the properties defined for a digital-radio-controller. These can be found in drc-spec.xml A description of the use of these properties can be found in the OpenCPI Platform Development Guide.

Ports

The drc_x310 has two data stream ports

  • tx (an input port of the DRC, data from this port is transmitted by the radio hardware)

  • rx (an output port of the DRC, data received by the radio hardware is sent to this port)

Both the tx and rx ports are arrays (of size 2). Index=0 of the tx and rx arrays is used to transmit / receive using daughter board 0 Index=1 of the tx and rx arrays is used to transmit / receive using daughter board 1.

Both ports use the complex_short_timed_sample protocol

Implementations

  • drc_x310 (RCC)

    Digital-Radio-Controller (DRC) for the Ettus x310

Example Application

<!-- This file is protected by Copyright. Please refer to the COPYRIGHT file
     distributed with this source distribution.

     This file is part of OpenCPI <http://www.opencpi.org>

     OpenCPI is free software: you can redistribute it and/or modify it under
     the terms of the GNU Lesser General Public License as published by the Free
     Software Foundation, either version 3 of the License, or (at your option)
     any later version.

     OpenCPI is distributed in the hope that it will be useful, but WITHOUT ANY
     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
     more details.

     You should have received a copy of the GNU Lesser General Public License
     along with this program. If not, see <http://www.gnu.org/licenses/>. -->
<Application>

  <Instance Component="ocpi.core.dgrdma_config_proxy" />

  <Instance Component="ocpi.core.file_write" Name="file_write_0">
    <Property name="fileName" value="adc_output_0.dat" />
  </Instance>

  <Instance Component="ocpi.comp.sdr.generator.carrier_generator_xs" Name="carrier_generator">
    <property name="step_size" value="21474836"/> <!-- 1 MHz at 200 Msps -->
    <property name="carrier_amplitude" value="10000"/>
  </Instance>

  <Instance Component='ocpi.platform.drc' worker='drc_x310' Name="drc">
    <Property name='db0_is_present' value='true' />
    <Property name='db1_is_present' value='false' />

    <Property name='configurations' value='{description myconfig, recoverable false, channels {
        {
          description TX_0,
          rx false,
          tuning_freq_Mhz 2400.0,
          bandwidth_3db_Mhz 1.0,
          sampling_rate_Msps 200.0,
          samples_are_complex true,
          gain_mode auto,
          gain_dB 30.0,
          tolerance_tuning_freq_mhz 0.01,
          tolerance_bandwidth_3dB_Mhz 0.01,
          tolerance_sampling_rate_msps 0.01,
          tolerance_gain_db 1,
          rf_port_name TX/RX_A,
          app_port_num 0
        },
        {
          description RX_0,
          rx true,
          tuning_freq_Mhz 2400.0,
          bandwidth_3db_Mhz 1.0,
          sampling_rate_Msps 200.0,
          samples_are_complex true,
          gain_mode auto,
          gain_dB 10.0,
          tolerance_tuning_freq_mhz 0.01,
          tolerance_bandwidth_3dB_Mhz 0.01,
          tolerance_sampling_rate_msps 0.01,
          tolerance_gain_db 1,
          rf_port_name RX2_A,
          app_port_num 0
        }}}' />
    <Property name='prepare' value='0' />
    <Property name='start'   value='0' />
  </Instance>

  <Connection>
    <Port Instance="drc" Name="rx" index='0' />
    <Port Instance="file_write_0" Name="in" />
  </Connection>

  <Connection>
    <Port Instance="carrier_generator" Name="output" />
    <Port Instance="drc" Name="tx" index='0' />
  </Connection>

</Application>

Dependencies

The dependencies to other elements in OpenCPI are:

  • ocpi.platform.devices.data_sink_qdac_csts.hdl

  • ocpi.platform.devices.data_src_qadc_csts.hdl

The DRC makes use of the following OpenCPI (RCC) software

  • OcpiDrcProxyApi.hh

  • ocpi::drc::DrcProxyBase

There is also a dependency on:

  • ieee.std_logic_1164

  • ieee.numeric_std

Limitations

Limitations of drc_x310 are:

  • The DRC only supports the UBX160 daughter cards

  • Only sample rates 200MHz and 184.32MHz are supported

  • Transmit frequencies between 50MHz and 6000MHz are supported

  • Receive frequencies between 50MHz and 6000MHz are supported

  • The transmit and receive bandwidth is fixed at 160MHz

  • The default builds for the DRC support single UBX160 daughter card 0 or dual UBX160 daughter cards

  • The DRC supports a maximum of 2 configurations

  • The DRC supports a maximum of 4 channels (TX and RX for each of the two daughter boards)

Testing

Tested platforms: None

Component testing not completed.