fixing adc inpput shift and gain table for N310. adding pps sync.
This commit is contained in:
committed by
Florian Kaltenberger
parent
e31349256f
commit
627da47786
@@ -90,6 +90,8 @@ typedef enum {
|
|||||||
USRP_B200_DEV,
|
USRP_B200_DEV,
|
||||||
/*!\brief device is USRP X300/X310*/
|
/*!\brief device is USRP X300/X310*/
|
||||||
USRP_X300_DEV,
|
USRP_X300_DEV,
|
||||||
|
/*!\brief device is USRP N300/N310*/
|
||||||
|
USRP_N300_DEV,
|
||||||
/*!\brief device is BLADE RF*/
|
/*!\brief device is BLADE RF*/
|
||||||
BLADERF_DEV,
|
BLADERF_DEV,
|
||||||
/*!\brief device is LMSSDR (SoDeRa)*/
|
/*!\brief device is LMSSDR (SoDeRa)*/
|
||||||
@@ -104,7 +106,7 @@ typedef enum {
|
|||||||
UEDv2_DEV,
|
UEDv2_DEV,
|
||||||
MAX_RF_DEV_TYPE
|
MAX_RF_DEV_TYPE
|
||||||
} dev_type_t;
|
} dev_type_t;
|
||||||
#define DEVTYPE_NAMES {"","EXMIMO","USRP B200","USRP X300","BLADERF","LMSSDR","IRIS","No HW","ADRV9371_ZC706","UEDv2"}
|
#define DEVTYPE_NAMES {"","EXMIMO","USRP B200","USRP X300","USRP N300","BLADERF","LMSSDR","IRIS","No HW","ADRV9371_ZC706","UEDv2"}
|
||||||
/*!\brief transport protocol types
|
/*!\brief transport protocol types
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ typedef struct {
|
|||||||
int64_t rx_count;
|
int64_t rx_count;
|
||||||
int wait_for_first_pps;
|
int wait_for_first_pps;
|
||||||
int use_gps;
|
int use_gps;
|
||||||
int first_tx;
|
//int first_tx;
|
||||||
|
//int first_rx;
|
||||||
//! timestamp of RX packet
|
//! timestamp of RX packet
|
||||||
openair0_timestamp rx_timestamp;
|
openair0_timestamp rx_timestamp;
|
||||||
} usrp_state_t;
|
} usrp_state_t;
|
||||||
@@ -282,31 +283,28 @@ static int trx_usrp_start(openair0_device *device) {
|
|||||||
// set pin 5 (Shutdown LNA) to 1 when the radio is transmitting and receiveing (ATR_XX)
|
// set pin 5 (Shutdown LNA) to 1 when the radio is transmitting and receiveing (ATR_XX)
|
||||||
// (we use full duplex here, because our RX is on all the time - this might need to change later)
|
// (we use full duplex here, because our RX is on all the time - this might need to change later)
|
||||||
s->usrp->set_gpio_attr("FP0", "ATR_XX", (1<<5), 0x7f);
|
s->usrp->set_gpio_attr("FP0", "ATR_XX", (1<<5), 0x7f);
|
||||||
// set the output pins to 0
|
// set the output pins to 1
|
||||||
s->usrp->set_gpio_attr("FP0", "OUT", 7<<7, 0xf80);
|
s->usrp->set_gpio_attr("FP0", "OUT", 7<<7, 0xf80);
|
||||||
|
|
||||||
// init recv and send streaming
|
s->wait_for_first_pps = 1;
|
||||||
uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
|
|
||||||
LOG_I(HW,"Time in secs now: %llu \n", s->usrp->get_time_now().to_ticks(s->sample_rate));
|
|
||||||
LOG_I(HW,"Time in secs last pps: %llu \n", s->usrp->get_time_last_pps().to_ticks(s->sample_rate));
|
|
||||||
|
|
||||||
if (s->use_gps == 1 || device->openair0_cfg[0].time_source == external) {
|
|
||||||
s->wait_for_first_pps = 1;
|
|
||||||
cmd.time_spec = s->usrp->get_time_last_pps() + uhd::time_spec_t(1.0);
|
|
||||||
} else {
|
|
||||||
s->wait_for_first_pps = 0;
|
|
||||||
cmd.time_spec = s->usrp->get_time_now() + uhd::time_spec_t(0.005);
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd.stream_now = false; // start at constant delay
|
|
||||||
s->rx_stream->issue_stream_cmd(cmd);
|
|
||||||
/*s->tx_md.time_spec = cmd.time_spec + uhd::time_spec_t(1-(double)s->tx_forward_nsamps/s->sample_rate);
|
|
||||||
s->tx_md.has_time_spec = true;
|
|
||||||
s->tx_md.start_of_burst = true;
|
|
||||||
s->tx_md.end_of_burst = false;*/
|
|
||||||
s->rx_count = 0;
|
s->rx_count = 0;
|
||||||
s->tx_count = 0;
|
s->tx_count = 0;
|
||||||
|
//s->first_tx = 1;
|
||||||
|
//s->first_rx = 1;
|
||||||
s->rx_timestamp = 0;
|
s->rx_timestamp = 0;
|
||||||
|
|
||||||
|
s->usrp->set_time_next_pps(uhd::time_spec_t(0.0));
|
||||||
|
// wait for the pps to change
|
||||||
|
uhd::time_spec_t time_last_pps = s->usrp->get_time_last_pps();
|
||||||
|
while (time_last_pps == s->usrp->get_time_last_pps()) {
|
||||||
|
boost::this_thread::sleep(boost::posix_time::milliseconds(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
|
||||||
|
cmd.time_spec = uhd::time_spec_t(1.0);
|
||||||
|
cmd.stream_now = false; // start at constant delay
|
||||||
|
s->rx_stream->issue_stream_cmd(cmd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*! \brief Terminate operation of the USRP transceiver -- free all associated resources
|
/*! \brief Terminate operation of the USRP transceiver -- free all associated resources
|
||||||
@@ -635,7 +633,6 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
|
|||||||
int16x8_t buff_tmp[2][nsamps2];
|
int16x8_t buff_tmp[2][nsamps2];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (device->type == USRP_B200_DEV) {
|
|
||||||
if (cc>1) {
|
if (cc>1) {
|
||||||
// receive multiple channels (e.g. RF A and RF B)
|
// receive multiple channels (e.g. RF A and RF B)
|
||||||
std::vector<void *> buff_ptrs;
|
std::vector<void *> buff_ptrs;
|
||||||
@@ -648,7 +645,7 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
|
|||||||
samples_received=0;
|
samples_received=0;
|
||||||
|
|
||||||
while (samples_received != nsamps) {
|
while (samples_received != nsamps) {
|
||||||
samples_received += s->rx_stream->recv(buff_tmp[0]+samples_received,
|
samples_received += s->rx_stream->recv((void*)((int32_t*)buff_tmp[0]+samples_received),
|
||||||
nsamps-samples_received, s->rx_md);
|
nsamps-samples_received, s->rx_md);
|
||||||
|
|
||||||
if ((s->wait_for_first_pps == 0) && (s->rx_md.error_code!=uhd::rx_metadata_t::ERROR_CODE_NONE))
|
if ((s->wait_for_first_pps == 0) && (s->rx_md.error_code!=uhd::rx_metadata_t::ERROR_CODE_NONE))
|
||||||
@@ -658,7 +655,6 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
|
|||||||
printf("sleep...\n"); //usleep(100);
|
printf("sleep...\n"); //usleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (samples_received == nsamps) s->wait_for_first_pps=0;
|
if (samples_received == nsamps) s->wait_for_first_pps=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -684,22 +680,10 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (device->type == USRP_X300_DEV) {
|
|
||||||
if (cc>1) {
|
|
||||||
// receive multiple channels (e.g. RF A and RF B)
|
|
||||||
std::vector<void *> buff_ptrs;
|
|
||||||
|
|
||||||
for (int i=0; i<cc; i++) buff_ptrs.push_back(buff[i]);
|
if (samples_received < nsamps) {
|
||||||
|
LOG_E(HW,"[recv] received %d samples out of %d\n",samples_received,nsamps);
|
||||||
samples_received = s->rx_stream->recv(buff_ptrs, nsamps, s->rx_md,1.0);
|
|
||||||
} else {
|
|
||||||
// receive a single channel (e.g. from connector RF A)
|
|
||||||
samples_received = s->rx_stream->recv(buff[0], nsamps, s->rx_md,1.0);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (samples_received < nsamps)
|
|
||||||
LOG_E(HW,"[recv] received %d samples out of %d\n",samples_received,nsamps);
|
|
||||||
|
|
||||||
if ( s->rx_md.error_code != uhd::rx_metadata_t::ERROR_CODE_NONE)
|
if ( s->rx_md.error_code != uhd::rx_metadata_t::ERROR_CODE_NONE)
|
||||||
LOG_E(HW, "%s\n", s->rx_md.to_pp_string(true).c_str());
|
LOG_E(HW, "%s\n", s->rx_md.to_pp_string(true).c_str());
|
||||||
@@ -835,6 +819,17 @@ rx_gain_calib_table_t calib_table_x310[] = {
|
|||||||
{-1,0}
|
{-1,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! \brief USRPB210 RX calibration table */
|
||||||
|
rx_gain_calib_table_t calib_table_n310[] = {
|
||||||
|
{3500000000.0,0.0},
|
||||||
|
{2660000000.0,0.0},
|
||||||
|
{2300000000.0,0.0},
|
||||||
|
{1880000000.0,0.0},
|
||||||
|
{816000000.0, 0.0},
|
||||||
|
{-1,0}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Set RX gain offset
|
/*! \brief Set RX gain offset
|
||||||
* \param openair0_cfg RF frontend parameters set by application
|
* \param openair0_cfg RF frontend parameters set by application
|
||||||
* \param chain_index RF chain to apply settings to
|
* \param chain_index RF chain to apply settings to
|
||||||
@@ -984,7 +979,7 @@ extern "C" {
|
|||||||
|
|
||||||
if (device_adds[0].get("type") == "n3xx") {
|
if (device_adds[0].get("type") == "n3xx") {
|
||||||
printf("Found USRP n300\n");
|
printf("Found USRP n300\n");
|
||||||
device->type=USRP_X300_DEV; //treat it as X300 for now
|
device->type=USRP_N300_DEV;
|
||||||
usrp_master_clock = 122.88e6;
|
usrp_master_clock = 122.88e6;
|
||||||
args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock);
|
args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock);
|
||||||
//args += ", send_buff_size=33554432";
|
//args += ", send_buff_size=33554432";
|
||||||
@@ -1070,9 +1065,18 @@ extern "C" {
|
|||||||
|
|
||||||
if (device->type==USRP_X300_DEV) {
|
if (device->type==USRP_X300_DEV) {
|
||||||
openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
|
openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
|
||||||
std::cerr << "-- Using calibration table: calib_table_x310" << std::endl; // Bell Labs info
|
std::cerr << "-- Using calibration table: calib_table_x310" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (device->type==USRP_N300_DEV) {
|
||||||
|
openair0_cfg[0].rx_gain_calib_table = calib_table_n310;
|
||||||
|
std::cerr << "-- Using calibration table: calib_table_n310" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (device->type==USRP_N300_DEV || device->type==USRP_X300_DEV) {
|
||||||
LOG_I(HW,"%s() sample_rate:%u\n", __FUNCTION__, (int)openair0_cfg[0].sample_rate);
|
LOG_I(HW,"%s() sample_rate:%u\n", __FUNCTION__, (int)openair0_cfg[0].sample_rate);
|
||||||
|
|
||||||
switch ((int)openair0_cfg[0].sample_rate) {
|
switch ((int)openair0_cfg[0].sample_rate) {
|
||||||
case 122880000:
|
case 122880000:
|
||||||
// from usrp_time_offset
|
// from usrp_time_offset
|
||||||
|
|||||||
@@ -21,183 +21,166 @@ gNBs =
|
|||||||
|
|
||||||
////////// Physical parameters:
|
////////// Physical parameters:
|
||||||
|
|
||||||
component_carriers = (
|
ssb_SubcarrierOffset = 0;
|
||||||
{
|
pdsch_AntennaPorts = 1;
|
||||||
node_function = "3GPP_gNODEB";
|
|
||||||
node_timing = "synch_to_ext_device";
|
servingCellConfigCommon = (
|
||||||
node_synch_ref = 0;
|
|
||||||
frame_type = "TDD";
|
|
||||||
DL_prefix_type = "NORMAL";
|
|
||||||
UL_prefix_type = "NORMAL";
|
|
||||||
eutra_band = 78;
|
|
||||||
downlink_frequency = 3510000000L;
|
|
||||||
uplink_frequency_offset = -120000000;
|
|
||||||
Nid_cell = 0;
|
|
||||||
N_RB_DL = 106;
|
|
||||||
nb_antenna_ports = 1;
|
|
||||||
nb_antennas_tx = 1;
|
|
||||||
nb_antennas_rx = 1;
|
|
||||||
tx_gain = 90;
|
|
||||||
rx_gain = 125;
|
|
||||||
MIB_subCarrierSpacingCommon = 30;
|
|
||||||
MIB_ssb_SubcarrierOffset = 0;
|
|
||||||
MIB_dmrs_TypeA_Position = 2;
|
|
||||||
pdcch_ConfigSIB1 = 0;
|
|
||||||
SIB1_frequencyOffsetSSB = "khz5";
|
|
||||||
SIB1_ssb_PeriodicityServingCell = 5;
|
|
||||||
SIB1_ss_PBCH_BlockPower = -60;
|
|
||||||
absoluteFrequencySSB = 0;
|
|
||||||
DL_FreqBandIndicatorNR = 15;
|
|
||||||
DL_absoluteFrequencyPointA = 15;
|
|
||||||
DL_offsetToCarrier = 15;
|
|
||||||
DL_SCS_SubcarrierSpacing = "kHz30";
|
|
||||||
DL_SCS_SpecificCarrier_k0 = 0;
|
|
||||||
DL_carrierBandwidth = 15;
|
|
||||||
DL_locationAndBandwidth = 15;
|
|
||||||
DL_BWP_SubcarrierSpacing = "kHz30";
|
|
||||||
DL_BWP_prefix_type = "NORMAL";
|
|
||||||
UL_FreqBandIndicatorNR = 15;
|
|
||||||
UL_absoluteFrequencyPointA = 13;
|
|
||||||
UL_additionalSpectrumEmission = 3;
|
|
||||||
UL_p_Max = -1;
|
|
||||||
UL_frequencyShift7p5khz = "TRUE";
|
|
||||||
UL_offsetToCarrier = 10;
|
|
||||||
UL_SCS_SubcarrierSpacing = "kHz30";
|
|
||||||
UL_SCS_SpecificCarrier_k0 = 0;
|
|
||||||
UL_carrierBandwidth = 15;
|
|
||||||
UL_locationAndBandwidth = 15;
|
|
||||||
UL_BWP_SubcarrierSpacing = "kHz30";
|
|
||||||
UL_BWP_prefix_type = "NORMAL";
|
|
||||||
UL_timeAlignmentTimerCommon = "infinity";
|
|
||||||
ServingCellConfigCommon_n_TimingAdvanceOffset = "n0"
|
|
||||||
ServingCellConfigCommon_ssb_PositionsInBurst_PR = 0x01;
|
|
||||||
ServingCellConfigCommon_ssb_periodicityServingCell = 10;
|
|
||||||
ServingCellConfigCommon_dmrs_TypeA_Position = 2;
|
|
||||||
NIA_SubcarrierSpacing = "kHz15";
|
|
||||||
ServingCellConfigCommon_ss_PBCH_BlockPower = -60;
|
|
||||||
referenceSubcarrierSpacing = "kHz15";
|
|
||||||
dl_UL_TransmissionPeriodicity = "ms0p5";
|
|
||||||
nrofDownlinkSlots = 10;
|
|
||||||
nrofDownlinkSymbols = 10;
|
|
||||||
nrofUplinkSlots = 10;
|
|
||||||
nrofUplinkSymbols = 10;
|
|
||||||
rach_totalNumberOfRA_Preambles = 63;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice = "oneEighth";
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth = 4;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth = 8;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf = 16;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one = 24;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two = 32;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four = 8;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight = 4;
|
|
||||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen = 2;
|
|
||||||
rach_groupBconfigured = "ENABLE";
|
|
||||||
rach_ra_Msg3SizeGroupA = 56;
|
|
||||||
rach_messagePowerOffsetGroupB = "dB0";
|
|
||||||
rach_numberOfRA_PreamblesGroupA = 32;
|
|
||||||
rach_ra_ContentionResolutionTimer = 8;
|
|
||||||
rsrp_ThresholdSSB = 64;
|
|
||||||
rsrp_ThresholdSSB_SUL = 64;
|
|
||||||
prach_RootSequenceIndex_choice = "l839";
|
|
||||||
prach_RootSequenceIndex_l839 = 0;
|
|
||||||
prach_RootSequenceIndex_l139 = 0;
|
|
||||||
prach_msg1_SubcarrierSpacing = "kHz30";
|
|
||||||
restrictedSetConfig = "unrestrictedSet";
|
|
||||||
msg3_transformPrecoding = "ENABLE";
|
|
||||||
prach_ConfigurationIndex = 10;
|
|
||||||
prach_msg1_FDM = "one";
|
|
||||||
prach_msg1_FrequencyStart = 10;
|
|
||||||
zeroCorrelationZoneConfig = 10;
|
|
||||||
preambleReceivedTargetPower = -150;
|
|
||||||
preambleTransMax = 6;
|
|
||||||
powerRampingStep = "dB0";
|
|
||||||
ra_ResponseWindow = 8;
|
|
||||||
groupHoppingEnabledTransformPrecoding = "ENABLE";
|
|
||||||
msg3_DeltaPreamble = 0;
|
|
||||||
p0_NominalWithGrant = 0;
|
|
||||||
PUSCH_TimeDomainResourceAllocation_k2 = 0;
|
|
||||||
PUSCH_TimeDomainResourceAllocation_mappingType = "typeA";
|
|
||||||
PUSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0;
|
|
||||||
pucch_ResourceCommon = 0;
|
|
||||||
pucch_GroupHopping = "neither";
|
|
||||||
hoppingId = 0;
|
|
||||||
p0_nominal = -30;
|
|
||||||
PDSCH_TimeDomainResourceAllocation_k0 = 2;
|
|
||||||
PDSCH_TimeDomainResourceAllocation_mappingType = "typeA";
|
|
||||||
PDSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0;
|
|
||||||
rateMatchPatternId = 0;
|
|
||||||
RateMatchPattern_patternType = "bitmaps";
|
|
||||||
symbolsInResourceBlock = "oneSlot";
|
|
||||||
periodicityAndPattern = 2;
|
|
||||||
RateMatchPattern_controlResourceSet = 5;
|
|
||||||
RateMatchPattern_subcarrierSpacing = "kHz30";
|
|
||||||
RateMatchPattern_mode = "dynamic";
|
|
||||||
controlResourceSetZero = 0;
|
|
||||||
searchSpaceZero = 0;
|
|
||||||
searchSpaceSIB1 = 10;
|
|
||||||
searchSpaceOtherSystemInformation = 10;
|
|
||||||
pagingSearchSpace = 10;
|
|
||||||
ra_SearchSpace = 10;
|
|
||||||
PDCCH_common_controlResourceSetId = 5;
|
|
||||||
PDCCH_common_ControlResourceSet_duration = 2;
|
|
||||||
PDCCH_cce_REG_MappingType = "nonInterleaved";
|
|
||||||
PDCCH_reg_BundleSize = 3;
|
|
||||||
PDCCH_interleaverSize = 3;
|
|
||||||
PDCCH_shiftIndex = 10;
|
|
||||||
PDCCH_precoderGranularity = "sameAsREG-bundle";
|
|
||||||
PDCCH_TCI_StateId = 32;
|
|
||||||
tci_PresentInDCI = "ENABLE";
|
|
||||||
PDCCH_DMRS_ScramblingID = 0;
|
|
||||||
SearchSpaceId = 10;
|
|
||||||
commonSearchSpaces_controlResourceSetId = 5;
|
|
||||||
SearchSpace_monitoringSlotPeriodicityAndOffset_choice = "sl1";
|
|
||||||
SearchSpace_monitoringSlotPeriodicityAndOffset_value = 0;
|
|
||||||
SearchSpace_duration = 2;
|
|
||||||
SearchSpace_nrofCandidates_aggregationLevel1 = 0;
|
|
||||||
SearchSpace_nrofCandidates_aggregationLevel2 = 0;
|
|
||||||
SearchSpace_nrofCandidates_aggregationLevel4 = 0;
|
|
||||||
SearchSpace_nrofCandidates_aggregationLevel8 = 0;
|
|
||||||
SearchSpace_nrofCandidates_aggregationLevel16 = 0;
|
|
||||||
SearchSpace_searchSpaceType = "common";
|
|
||||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 = 1;
|
|
||||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 = 1;
|
|
||||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 = 1;
|
|
||||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 = 1;
|
|
||||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 = 1;
|
|
||||||
Common_dci_Format2_3_monitoringPeriodicity = 1;
|
|
||||||
Common_dci_Format2_3_nrofPDCCH_Candidates = 1;
|
|
||||||
ue_Specific__dci_Formats = "formats0-0-And-1-0";
|
|
||||||
RateMatchPatternLTE_CRS_carrierFreqDL = 6;
|
|
||||||
RateMatchPatternLTE_CRS_carrierBandwidthDL = 6;
|
|
||||||
RateMatchPatternLTE_CRS_nrofCRS_Ports = 1;
|
|
||||||
RateMatchPatternLTE_CRS_v_Shift = 0;
|
|
||||||
RateMatchPatternLTE_CRS_radioframeAllocationPeriod = 1;
|
|
||||||
RateMatchPatternLTE_CRS_radioframeAllocationOffset = 0;
|
|
||||||
RateMatchPatternLTE_CRS_subframeAllocation_choice = "oneFrame";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
srb1_parameters :
|
|
||||||
{
|
{
|
||||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
#spCellConfigCommon
|
||||||
timer_poll_retransmit = 80;
|
|
||||||
|
|
||||||
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
physCellId = 0;
|
||||||
timer_reordering = 35;
|
|
||||||
|
|
||||||
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
# downlinkConfigCommon
|
||||||
timer_status_prohibit = 0;
|
#frequencyInfoDL
|
||||||
|
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||||
|
absoluteFrequencySSB = 641032;
|
||||||
|
dl_frequencyBand = 78;
|
||||||
|
# this is 3600 MHz
|
||||||
|
dl_absoluteFrequencyPointA = 640000;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
dl_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
dl_subcarrierSpacing = 1;
|
||||||
|
dl_carrierBandwidth = 106;
|
||||||
|
#initialDownlinkBWP
|
||||||
|
#genericParameters
|
||||||
|
# this is RBstart=0,L=50 (275*(L-1))+RBstart
|
||||||
|
initialDLBWPlocationAndBandwidth = 13475;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
initialDLBWPsubcarrierSpacing = 1;
|
||||||
|
#pdcch-ConfigCommon
|
||||||
|
initialDLBWPcontrolResourceSetZero = 12;
|
||||||
|
initialDLBWPsearchSpaceZero = 0;
|
||||||
|
#pdsch-ConfigCommon
|
||||||
|
#pdschTimeDomainAllocationList (up to 16 entries)
|
||||||
|
initialDLBWPk0_0 = 0;
|
||||||
|
#initialULBWPmappingType
|
||||||
|
#0=typeA,1=typeB
|
||||||
|
initialDLBWPmappingType_0 = 0;
|
||||||
|
#this is SS=2,L=3
|
||||||
|
initialDLBWPstartSymbolAndLength_0 = 40;
|
||||||
|
|
||||||
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
initialDLBWPk0_1 = 0;
|
||||||
poll_pdu = 4;
|
initialDLBWPmappingType_1 = 0;
|
||||||
|
#this is SS=2,L=12
|
||||||
|
initialDLBWPstartSymbolAndLength_1 = 53;
|
||||||
|
|
||||||
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
initialDLBWPk0_2 = 0;
|
||||||
poll_byte = 99999;
|
initialDLBWPmappingType_2 = 0;
|
||||||
|
#this is SS=1,L=12
|
||||||
|
initialDLBWPstartSymbolAndLength_2 = 54;
|
||||||
|
#uplinkConfigCommon
|
||||||
|
#frequencyInfoUL
|
||||||
|
ul_frequencyBand = 78;
|
||||||
|
#scs-SpecificCarrierList
|
||||||
|
ul_offstToCarrier = 0;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
ul_subcarrierSpacing = 1;
|
||||||
|
ul_carrierBandwidth = 106;
|
||||||
|
pMax = 20;
|
||||||
|
#initialUplinkBWP
|
||||||
|
#genericParameters
|
||||||
|
initialULBWPlocationAndBandwidth = 13475;
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
initialULBWPsubcarrierSpacing = 1;
|
||||||
|
#rach-ConfigCommon
|
||||||
|
#rach-ConfigGeneric
|
||||||
|
prach_ConfigurationIndex = 98;
|
||||||
|
#prach_msg1_FDM
|
||||||
|
#0 = one, 1=two, 2=four, 3=eight
|
||||||
|
prach_msg1_FDM = 0;
|
||||||
|
prach_msg1_FrequencyStart = 0;
|
||||||
|
zeroCorrelationZoneConfig = 13;
|
||||||
|
preambleReceivedTargetPower = -118;
|
||||||
|
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||||
|
preambleTransMax = 6;
|
||||||
|
#powerRampingStep
|
||||||
|
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||||
|
powerRampingStep = 1;
|
||||||
|
#ra_ReponseWindow
|
||||||
|
#1,2,4,8,10,20,40,80
|
||||||
|
ra_ResponseWindow = 4;
|
||||||
|
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||||
|
#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen
|
||||||
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||||
|
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||||
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||||
|
#ra_ContentionResolutionTimer
|
||||||
|
#(0..7) 8,16,24,32,40,48,56,64
|
||||||
|
ra_ContentionResolutionTimer = 7;
|
||||||
|
rsrp_ThresholdSSB = 19;
|
||||||
|
#prach-RootSequenceIndex_PR
|
||||||
|
#0 = 839, 1 = 139
|
||||||
|
prach_RootSequenceIndex_PR = 1;
|
||||||
|
prach_RootSequenceIndex = 1;
|
||||||
|
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||||
|
#
|
||||||
|
msg1_SubcarrierSpacing = 1,
|
||||||
|
|
||||||
|
# restrictedSetConfig
|
||||||
|
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||||
|
restrictedSetConfig = 0,
|
||||||
|
# pusch-ConfigCommon (up to 16 elements)
|
||||||
|
initialULBWPk2_0 = 2;
|
||||||
|
initialULBWPmappingType_0 = 1
|
||||||
|
# this is SS=0 L=11
|
||||||
|
initialULBWPstartSymbolAndLength_0 = 55;
|
||||||
|
|
||||||
|
initialULBWPk2_1 = 2;
|
||||||
|
initialULBWPmappingType_1 = 1;
|
||||||
|
# this is SS=0 L=12
|
||||||
|
initialULBWPstartSymbolAndLength_1 = 69;
|
||||||
|
|
||||||
|
|
||||||
|
msg3_DeltaPreamble = 1;
|
||||||
|
p0_NominalWithGrant =-90;
|
||||||
|
|
||||||
|
# pucch-ConfigCommon setup :
|
||||||
|
# pucchGroupHopping
|
||||||
|
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||||
|
pucchGroupHopping = 0;
|
||||||
|
hoppingId = 40;
|
||||||
|
p0_nominal = -90;
|
||||||
|
# ssb_PositionsInBurs_BitmapPR
|
||||||
|
# 1=short, 2=medium, 3=long
|
||||||
|
ssb_PositionsInBurst_PR = 2;
|
||||||
|
ssb_PositionsInBurst_Bitmap = 1;
|
||||||
|
|
||||||
|
# ssb_periodicityServingCell
|
||||||
|
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||||
|
ssb_periodicityServingCell = 2;
|
||||||
|
|
||||||
|
# dmrs_TypeA_position
|
||||||
|
# 0 = pos2, 1 = pos3
|
||||||
|
dmrs_TypeA_Position = 0;
|
||||||
|
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
subcarrierSpacing = 1;
|
||||||
|
|
||||||
|
|
||||||
|
#tdd-UL-DL-ConfigurationCommon
|
||||||
|
# subcarrierSpacing
|
||||||
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
|
referenceSubcarrierSpacing = 1;
|
||||||
|
# pattern1
|
||||||
|
# dl_UL_TransmissionPeriodicity
|
||||||
|
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||||
|
dl_UL_TransmissionPeriodicity = 6;
|
||||||
|
nrofDownlinkSlots = 7;
|
||||||
|
nrofDownlinkSymbols = 6;
|
||||||
|
nrofUplinkSlots = 2;
|
||||||
|
nrofUplinkSymbols = 4;
|
||||||
|
|
||||||
|
ssPBCH_BlockPower = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
|
||||||
max_retx_threshold = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ------- SCTP definitions
|
# ------- SCTP definitions
|
||||||
SCTP :
|
SCTP :
|
||||||
@@ -255,7 +238,7 @@ RUs = (
|
|||||||
max_rxgain = 114;
|
max_rxgain = 114;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
sdr_addrs = "type=b200";
|
sdr_addrs = "type=b200";
|
||||||
|
#clock_src = "external";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -264,20 +247,10 @@ THREAD_STRUCT = (
|
|||||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||||
worker_config = "WORKER_DISABLE";
|
worker_config = "WORKER_ENABLE";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
NETWORK_CONTROLLER :
|
|
||||||
{
|
|
||||||
FLEXRAN_ENABLED = "no";
|
|
||||||
FLEXRAN_INTERFACE_NAME = "lo";
|
|
||||||
FLEXRAN_IPV4_ADDRESS = "127.0.0.1";
|
|
||||||
FLEXRAN_PORT = 2210;
|
|
||||||
FLEXRAN_CACHE = "/mnt/oai_agent_cache";
|
|
||||||
FLEXRAN_AWAIT_RECONF = "no";
|
|
||||||
};
|
|
||||||
|
|
||||||
log_config :
|
log_config :
|
||||||
{
|
{
|
||||||
global_log_level ="info";
|
global_log_level ="info";
|
||||||
|
|||||||
Reference in New Issue
Block a user