N310 Digital Radio Controller (drc_n310)
OpenCPI Digital Radio Controller (DRC) for n310 platform.
Design
drc_n310 architecture consists of the following primary layers:
DRC_N310: Implementation Layer of the OpenCPI DRC Finite-State Machine (FSM) Operations
DAUGHTERBOARD (DB): Configuration Layer for each N310 daughterboard, which utilizes the API controllers for each hardware chip.
PROXY/SLAVE: Communication Layer between the API controllers and the device workers
Figure 22: N310 Digital Radio Controller Architecture
Interface
<ComponentSpec>
<Property Name="configurations" Type="struct" Writable="true" SequenceLength='MAX_CONFIGURATIONS_p'
Description="Each structure configures the radio for requested settings.">
<Member Name='description' type='string' stringlength='MAX_STRING_LENGTH_p'
Description='A brief description of the configuration, useful for property dumps'/>
<Member Name='recoverable' type='bool'
Description='If recoverable, the configuration will not cause a fatal program error if
it fails when enabled. The error (if it occurs) will be queryable in the
status property.'/>
<Member Name='channels' type='struct' sequencelength='MAX_CHANNELS_p'
Description='The channels that will be simultaneously enabled when this configuration
is enabled.'>
<Member Name='description' type='string' stringlength='MAX_STRING_LENGTH_P'
Description='A brief description of the channel configuration, useful for property
dumps. E.g. what is this channel being used for?'/>
<Member Name="rx" Type="bool"
Description='Indicates a receive channel if true, otherwise a transmit (TX) channel'/>
<Member Name="tuning_freq_MHz" Type="double"/>
<Member Name="bandwidth_3dB_MHz" Type="double"/>
<Member Name="sampling_rate_Msps" Type="double"/>
<Member Name="samples_are_complex" Type="bool"/>
<Member Name="gain_mode" Type="String"
StringLength="MAX_STRING_LENGTH_p"
Description='Set to empty-string, "auto", "manual", or
possibly something worker-specific.'/>
<Member Name="gain_dB" Type="double"/>
<Member Name="tolerance_tuning_freq_MHz" Type="double"
Description="Tolerance which will determine lock success."/>
<Member Name="tolerance_bandwidth_3dB_MHz" Type="double"
Description="Tolerance which will determine lock success."/>
<Member Name="tolerance_sampling_rate_Msps" Type="double"
Description="Tolerance which will determine lock success."/>
<Member Name="tolerance_gain_dB" Type="double"
Description="Tolerance which will determine lock success."/>
<Member Name='rf_port_name' Type='string' stringlength='MAX_STRING_LENGTH_p'
Description='Optional RF port name for this channel, defaults to using the
RF ports of the radio in order of their definition in this configuration,
within RX-capable and TX-capable ports.
If an RX channel has the rf-port name of "loopback" then it receives
from the tx channel with the same TX ordinal in the configuration'/>
<Member Name='rf_port_num' Type='uchar'
Description='Optional RF port number for this channel, defaults to using the
RF ports in the radio in order of their definition, within RX and TX.
Ignored if rf_port_mame is specified.'/>
<Member Name='app_port_num' Type='uchar'
Description='Optional app port number for this channel, defaults to using the
app ports in numerical order, within RX and TX'/>
</Member>
</Property>
</ComponentSpec>
Properties
MAX_STRING_LENGTH_p: Length of all string struct members.Type:
ushortAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
256
MAX_CONFIGURATIONS_p: Number of configurations supported.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
MAX_CHANNELS_p: Total number of channels supported at one time. Maximum number of channels in a radio configuration.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
2
MAX_RX_CHANNELS_p: Total number of RX channels supported at one time. Maximum number of RX channels connected to application.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
MAX_TX_CHANNELS_p: Total number of TX channels supported at one time. Maximum number of TX channels connected to application.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
MAX_RX_RF_PORTS_p: Number of RF Ports that can receive.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
MAX_TX_RF_PORTS_p: Number of RF Ports that can transmit.Type:
ucharAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
1
rf_ports_rx: Names of all RF Ports that can receive.Type:
stringSequence length:
MAX_RX_RF_PORTS_p
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
rf_ports_tx: Names of all RF Ports that can transmit.Type:
stringSequence length:
MAX_TX_RF_PORTS_p
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_rx_tuning_freq_mhz: Minimum achievable tuning frequency in MHz for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_rx_tuning_freq_mhz: Maximum achievable tuning frequency in MHz for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_rx_bandwidth_3db_mhz: Minimum achievable bandwidth 3dB for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_rx_bandwidth_3db_mhz: Maximum achievable bandwidth 3dB for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_rx_sampling_rate_msps: Minimum achievable sampling rate for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_rx_sampling_rate_msps: Maximum achievable sampling rate for all RX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_rx_samples_complex: True if complex (IQ) samples are supported by any RX channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_rx_samples_real: True if real samples are supported by any RX channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_rx_gain_mode_auto: True if auto gain mode is supported by any RX data channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_rx_gain_mode_manual: True if manual gain mode is supported by any RX data channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_achievable_tx_tuning_freq_mhz: Minimum achievable tuning frequency in MHz for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_achievable_tx_tuning_freq_mhz: Maximum achievable tuning frequency in MHz for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_achievable_tx_bandwidth_3db_mhz: Minimum achievable bandwidth 3dB for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_achievable_tx_bandwidth_3db_mhz: Maximum achievable bandwidth 3dB for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
min_achievable_tx_sampling_rate_msps: Minimum achievable sampling rate for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
max_achievable_tx_sampling_rate_msps: Maximum achievable sampling rate for all TX channels.Type:
doubleAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_tx_samples_complex: True if complex (IQ) samples are supported by any TX channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
is_supported_tx_samples_real: True if real samples are supported by any TX channel.Type:
boolAccess:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
enable_rx_resampling: True if resampling on RX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
enable_rx_digital_tuning: True if digital tuning on RX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
enable_rx_timestamping: True if timestamping on RX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
enable_tx_resampling: True if resampling on TX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
enable_tx_digital_tuning: True if digital tuning on TX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
enable_tx_timegating: True if timegating on TX channels are enabled.Type:
boolAccess:
Parameter:
TrueWritable:
FalseInitial:
FalseVolatile:
False
Default value:
false
configurations: Each structure configures the radio for requested settings.Type:
structSequence length:
MAX_CONFIGURATIONS_pMembers:
description:
data_type:
stringstringlength:
MAX_STRING_LENGTH_p
recoverable:
data_type:
bool
channels:
description:
data_type:
stringstringlength:
MAX_STRING_LENGTH_P
rx:
data_type:
bool
tuning_freq_MHz:
data_type:
double
bandwidth_3dB_MHz:
data_type:
double
sampling_rate_Msps:
data_type:
double
samples_are_complex:
data_type:
bool
gain_mode:
data_type:
stringstringlength:
MAX_STRING_LENGTH_p
gain_dB:
data_type:
double
tolerance_tuning_freq_MHz:
data_type:
double
tolerance_bandwidth_3dB_MHz:
data_type:
double
tolerance_sampling_rate_Msps:
data_type:
double
tolerance_gain_dB:
data_type:
double
rf_port_name:
data_type:
stringstringlength:
MAX_STRING_LENGTH_p
rf_port_num:
data_type:
uchar
app_port_num:
data_type:
uchar
Access:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
prepare: Writing a configuration ordinal to this property prepares it. Errors are fatal unless configuration is recoverable.Type:
ushortAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
start: Writing a configuration ordinal to this property enables it, putting it into an operational state, with samples flowing. If not already prepared, preparation is implied. Errors are fatal unless configuration is recoverable.Type:
ushortAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
stop: Writing a configuration ordinal to this property stops it. This returns a configuration to the prepared state.Type:
ushortAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
release: Writing a configuration ordinal to this property disables it. This returns a configuration to the initial state with no resources used for it.Type:
ushortAccess:
Parameter:
FalseWritable:
TrueInitial:
FalseVolatile:
False
Default value:
None
status: The status of all the defined configurations.Type:
structSequence length:
MAX_CONFIGURATIONS_pMembers:
state:
data_type:
enumenums:
['inactive', 'prepared', 'operating', 'error']
error:
data_type:
stringstringlength:
MAX_STRING_LENGTH_p
channels:
tuning_freq_MHz:
data_type:
double
bandwidth_3dB_MHz:
data_type:
double
sampling_rate_Msps:
data_type:
double
gain_dB:
data_type:
double
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
True
Default value:
None
constraintsType:
structSequence length:
MAX_RX_RF_PORTS_p+MAX_TX_RF_PORTS_pMembers:
rf_port:
data_type:
stringstringlength:
MAX_STRING_LENGTH_p
RX:
data_type:
bool
tuning_freq_MHz:
min:
data_type:
double
max:
data_type:
double
bandwidth_3dB_MHz:
min:
data_type:
double
max:
data_type:
double
sampling_rate_Msps:
min:
data_type:
double
max:
data_type:
double
sample_type:
real:
data_type:
bool
complex:
data_type:
bool
Access:
Parameter:
FalseWritable:
FalseInitial:
FalseVolatile:
False
Default value:
None
Implementations
drc_n310(RCC)
Example Application
<?xml version="1.0"?>
<application>
<Instance component='ocpi.platform.drc' name='drc_n310'>
<property name='dba_tx0_en' value='true'/>
<property name='dba_tx1_en' value='false'/>
<property name='dba_rx0_en' value='true'/>
<property name='dba_rx1_en' value='false'/>
<property name='dba_int0_up_sample_factor' value='24'/>
<property name='dba_int0_scale_output' value='5'/>
<property name='dba_dec0_down_sample_factor' value='24'/>
<property name='dba_dec0_scale_output' value='5'/>
<property name='dbb_en' value='true'/>
<property name='dbb_tx0_en' value='false'/>
<property name='dbb_tx1_en' value='true'/>
<property name='dbb_rx0_en' value='false'/>
<property name='dbb_rx1_en' value='true'/>
<property name='dbb_int1_up_sample_factor' value='24'/>
<property name='dbb_int1_scale_output' value='5'/>
<property name='dbb_dec1_down_sample_factor' value='24'/>
<property name='dbb_dec1_scale_output' value='5'/>
<property name='configurations'
Value="{description first,
channels {{rx false,
rf_port_num 0,
tuning_freq_MHz 2450,
bandwidth_3dB_MHz 70,
sampling_rate_Msps 96,
samples_are_complex true,
gain_dB 10,
tolerance_tuning_freq_MHz 0.01,
tolerance_sampling_rate_Msps 0.01,
tolerance_gain_dB 1,
tolerance_bandwidth_3dB_MHz 10},
{rx true,
rf_port_num 2,
tuning_freq_MHz 2450,
bandwidth_3dB_MHz 70,
sampling_rate_Msps 96,
samples_are_complex true,
gain_dB 0,
tolerance_tuning_freq_MHz 0.01,
tolerance_sampling_rate_Msps 0.01,
tolerance_gain_dB 1,
tolerance_bandwidth_3dB_MHz 10},
{rx false,
rf_port_num 5,
tuning_freq_MHz 2450,
bandwidth_3dB_MHz 70,
sampling_rate_Msps 96,
samples_are_complex true,
gain_dB 10,
tolerance_tuning_freq_MHz 0.01,
tolerance_sampling_rate_Msps 0.01,
tolerance_gain_dB 1,
tolerance_bandwidth_3dB_MHz 10 },
{rx true,
rf_port_num 7,
tuning_freq_MHz 2450,
bandwidth_3dB_MHz 70,
sampling_rate_Msps 96,
samples_are_complex true,
gain_dB 0,
tolerance_tuning_freq_MHz 0.01,
tolerance_sampling_rate_Msps 0.01,
tolerance_gain_dB 1,
tolerance_bandwidth_3dB_MHz 10}}}"/>
</Instance>
</application>
Dependencies
The dependencies to other elements in OpenCPI are:
ocpi.platform - DRC Specifications
Limitations
Limitations of drc_n310 are:
NONE