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.