fixing prach config for FR2
This commit is contained in:
@@ -936,14 +936,22 @@ int64_t table_6_3_3_2_4_prachConfig_Index [256][10] = {
|
|||||||
|
|
||||||
|
|
||||||
int get_format0(uint8_t index,
|
int get_format0(uint8_t index,
|
||||||
uint8_t unpaired){
|
uint8_t unpaired,
|
||||||
|
frequency_range_t frequency_range){
|
||||||
|
|
||||||
uint16_t format;
|
uint16_t format;
|
||||||
if (unpaired)
|
if (unpaired) {
|
||||||
format = table_6_3_3_2_3_prachConfig_Index[index][0];
|
if (frequency_range==FR1)
|
||||||
else
|
format = table_6_3_3_2_3_prachConfig_Index[index][0];
|
||||||
format = table_6_3_3_2_2_prachConfig_Index[index][0];
|
else
|
||||||
|
format = table_6_3_3_2_4_prachConfig_Index[index][0];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (frequency_range==FR1)
|
||||||
|
format = table_6_3_3_2_2_prachConfig_Index[index][0];
|
||||||
|
else
|
||||||
|
AssertFatal(0==1,"no paired spectrum for FR2\n");
|
||||||
|
}
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1401,11 +1409,12 @@ uint16_t table_63313[838] = {
|
|||||||
|
|
||||||
uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
|
uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
|
||||||
uint8_t nb_preambles,
|
uint8_t nb_preambles,
|
||||||
uint8_t unpaired) {
|
uint8_t unpaired,
|
||||||
|
frequency_range_t frequency_range) {
|
||||||
|
|
||||||
uint8_t config_index = rach_config->rach_ConfigGeneric.prach_ConfigurationIndex;
|
uint8_t config_index = rach_config->rach_ConfigGeneric.prach_ConfigurationIndex;
|
||||||
uint8_t ncs_index = rach_config->rach_ConfigGeneric.zeroCorrelationZoneConfig;
|
uint8_t ncs_index = rach_config->rach_ConfigGeneric.zeroCorrelationZoneConfig;
|
||||||
uint16_t format0 = get_format0(config_index, unpaired);
|
uint16_t format0 = get_format0(config_index, unpaired, frequency_range);
|
||||||
uint16_t NCS = get_NCS(ncs_index, format0, rach_config->restrictedSetConfig);
|
uint16_t NCS = get_NCS(ncs_index, format0, rach_config->restrictedSetConfig);
|
||||||
uint16_t L_ra = (rach_config->prach_RootSequenceIndex.present==NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139) ? 139 : 839;
|
uint16_t L_ra = (rach_config->prach_RootSequenceIndex.present==NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139) ? 139 : 839;
|
||||||
uint16_t r,u,index,q,d_u,n_shift_ra,n_shift_ra_bar,d_start;
|
uint16_t r,u,index,q,d_u,n_shift_ra,n_shift_ra_bar,d_start;
|
||||||
|
|||||||
@@ -44,6 +44,11 @@
|
|||||||
#define MAX_TDM (7) // Maximum nb of PRACH occasions TDMed in a slot
|
#define MAX_TDM (7) // Maximum nb of PRACH occasions TDMed in a slot
|
||||||
#define MAX_FDM (8) // Maximum nb of PRACH occasions FDMed in a slot
|
#define MAX_FDM (8) // Maximum nb of PRACH occasions FDMed in a slot
|
||||||
|
|
||||||
|
typedef enum frequency_range_e {
|
||||||
|
FR1 = 0,
|
||||||
|
FR2
|
||||||
|
} frequency_range_t;
|
||||||
|
|
||||||
// PRACH occasion details
|
// PRACH occasion details
|
||||||
typedef struct prach_occasion_info {
|
typedef struct prach_occasion_info {
|
||||||
uint8_t start_symbol; // 0 - 13 (14 symbols in a slot)
|
uint8_t start_symbol; // 0 - 13 (14 symbols in a slot)
|
||||||
@@ -157,11 +162,12 @@ uint8_t get_pusch_mcs_table(long *mcs_Table,
|
|||||||
|
|
||||||
uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
|
uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
|
||||||
uint8_t nb_preambles,
|
uint8_t nb_preambles,
|
||||||
uint8_t unpaired);
|
uint8_t unpaired,
|
||||||
|
frequency_range_t);
|
||||||
|
|
||||||
int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig,long transformPrecoder);
|
int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig,long transformPrecoder);
|
||||||
|
|
||||||
int get_format0(uint8_t index, uint8_t unpaired);
|
int get_format0(uint8_t index, uint8_t unpaired,frequency_range_t);
|
||||||
|
|
||||||
int64_t *get_prach_config_info(uint32_t pointa,
|
int64_t *get_prach_config_info(uint32_t pointa,
|
||||||
uint8_t index,
|
uint8_t index,
|
||||||
|
|||||||
@@ -292,10 +292,6 @@ typedef enum channel_bandwidth_e {
|
|||||||
bw_100MHz = 0x32
|
bw_100MHz = 0x32
|
||||||
} channel_bandwidth_t;
|
} channel_bandwidth_t;
|
||||||
|
|
||||||
typedef enum frequency_range_e {
|
|
||||||
FR1 = 0,
|
|
||||||
FR2
|
|
||||||
} frequency_range_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t identifier_dci_formats ; // 0 IDENTIFIER_DCI_FORMATS:
|
uint8_t identifier_dci_formats ; // 0 IDENTIFIER_DCI_FORMATS:
|
||||||
|
|||||||
@@ -127,11 +127,13 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm
|
|||||||
lte_frame_type_t frame_type;
|
lte_frame_type_t frame_type;
|
||||||
uint16_t band;
|
uint16_t band;
|
||||||
int32_t offset;
|
int32_t offset;
|
||||||
|
frequency_range_t frequency_range;
|
||||||
|
|
||||||
get_band(((uint64_t)cfg->carrier_config.dl_frequency.value)*1000,
|
get_band(((uint64_t)cfg->carrier_config.dl_frequency.value)*1000,
|
||||||
&band,
|
&band,
|
||||||
&offset,
|
&offset,
|
||||||
&frame_type);
|
&frame_type);
|
||||||
|
frequency_range = band<100?FR1:FR2;
|
||||||
|
|
||||||
RC.nrmac[Mod_idP]->common_channels[0].frame_type = frame_type;
|
RC.nrmac[Mod_idP]->common_channels[0].frame_type = frame_type;
|
||||||
|
|
||||||
@@ -220,7 +222,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm
|
|||||||
cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig;
|
cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig;
|
||||||
cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.tl.tag = NFAPI_NR_CONFIG_PRACH_ZERO_CORR_CONF_TAG;
|
cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.tl.tag = NFAPI_NR_CONFIG_PRACH_ZERO_CORR_CONF_TAG;
|
||||||
cfg->num_tlv++;
|
cfg->num_tlv++;
|
||||||
cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.value = compute_nr_root_seq(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup,nb_preambles, frame_type);
|
cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.value = compute_nr_root_seq(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup,nb_preambles, frame_type, frequency_range);
|
||||||
cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.tl.tag = NFAPI_NR_CONFIG_NUM_ROOT_SEQUENCES_TAG;
|
cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.tl.tag = NFAPI_NR_CONFIG_NUM_ROOT_SEQUENCES_TAG;
|
||||||
cfg->num_tlv++;
|
cfg->num_tlv++;
|
||||||
cfg->prach_config.num_prach_fd_occasions_list[i].num_unused_root_sequences.value = 1;
|
cfg->prach_config.num_prach_fd_occasions_list[i].num_unused_root_sequences.value = 1;
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ gNBs =
|
|||||||
dl_carrierBandwidth = 32;
|
dl_carrierBandwidth = 32;
|
||||||
#initialDownlinkBWP
|
#initialDownlinkBWP
|
||||||
#genericParameters
|
#genericParameters
|
||||||
# this is RBstart=0,L=50 (275*(L-1))+RBstart
|
# this is RBstart=0,L=32 (275*(L-1))+RBstart
|
||||||
initialDLBWPlocationAndBandwidth = 8525;
|
initialDLBWPlocationAndBandwidth = 8525;
|
||||||
# subcarrierSpacing
|
# subcarrierSpacing
|
||||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
@@ -121,8 +121,8 @@ gNBs =
|
|||||||
ra_ContentionResolutionTimer = 7;
|
ra_ContentionResolutionTimer = 7;
|
||||||
rsrp_ThresholdSSB = 19;
|
rsrp_ThresholdSSB = 19;
|
||||||
#prach-RootSequenceIndex_PR
|
#prach-RootSequenceIndex_PR
|
||||||
#0 = 839, 1 = 139
|
#1 = 839, 2 = 139
|
||||||
prach_RootSequenceIndex_PR = 1;
|
prach_RootSequenceIndex_PR = 2;
|
||||||
prach_RootSequenceIndex = 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
|
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||||
#
|
#
|
||||||
@@ -211,7 +211,7 @@ gNBs =
|
|||||||
);
|
);
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "yes";
|
enable_x2 = "no";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
|
|||||||
Reference in New Issue
Block a user