Fix prach K,kbar for mu 0
This commit is contained in:
@@ -165,6 +165,7 @@ void rx_nr_prach_ru(RU_t *ru,
|
||||
int16_t *prach[ru->nb_rx];
|
||||
int prach_sequence_length = ru->config.prach_config.prach_sequence_length.value;
|
||||
int msg1_frequencystart = ru->config.prach_config.num_prach_fd_occasions_list[numRA].k1.value;
|
||||
const uint8_t prach_mu = ru->config.prach_config.prach_sub_c_spacing.value;
|
||||
|
||||
int sample_offset_slot;
|
||||
if (prachStartSymbol == 0) {
|
||||
@@ -391,18 +392,9 @@ void rx_nr_prach_ru(RU_t *ru,
|
||||
LOG_D(PHY, "rx_prach: Doing PRACH FFT for nb_rx:%d Ncp:%d dftlen:%d\n", ru->nb_rx, Ncp, dftlen);
|
||||
}
|
||||
|
||||
// Note: Assumes PUSCH SCS @ 30 kHz, take values for formats 0-2 and adjust for others below
|
||||
int kbar = 1;
|
||||
int K = 24;
|
||||
if (prach_sequence_length == 0 && prachFormat == 3) {
|
||||
K=4;
|
||||
kbar=10;
|
||||
}
|
||||
else if (prach_sequence_length == 1) {
|
||||
// Note: Assumes that PRACH SCS is same as PUSCH SCS
|
||||
K=1;
|
||||
kbar=2;
|
||||
}
|
||||
const unsigned int K = get_prach_K(prach_sequence_length, prachFormat, fp->numerology_index, prach_mu);
|
||||
const uint8_t kbar = get_PRACH_k_bar(prach_mu, fp->numerology_index);
|
||||
|
||||
int n_ra_prb = msg1_frequencystart;
|
||||
int k = (12*n_ra_prb) - 6*fp->N_RB_UL;
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t
|
||||
c16_t prachF_tmp[(4688 + 4 * 24576) * 4] __attribute__((aligned(32))) = {0};
|
||||
|
||||
int Ncp = 0;
|
||||
int prach_start, prach_sequence_length, prach_len, dftlen, mu, kbar, K, n_ra_prb, k, prachStartSymbol, sample_offset_slot;
|
||||
int prach_start, prach_sequence_length, prach_len, dftlen, mu, n_ra_prb, k, prachStartSymbol, sample_offset_slot;
|
||||
|
||||
fd_occasion = 0;
|
||||
prach_len = 0;
|
||||
@@ -83,9 +83,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t
|
||||
n_ra_prb = nrUE_config->prach_config.num_prach_fd_occasions_list[fd_occasion].k1,//prach_pdu->freq_msg1;
|
||||
NCS = prach_pdu->num_cs;
|
||||
prach_fmt_id = prach_pdu->prach_format;
|
||||
preamble_index = prach_pdu->ra_PreambleIndex;
|
||||
kbar = 1;
|
||||
K = 24;
|
||||
preamble_index = prach_pdu->ra_PreambleIndex;
|
||||
k = 12*n_ra_prb - 6*fp->N_RB_UL;
|
||||
prachStartSymbol = prach_pdu->prach_start_symbol;
|
||||
|
||||
@@ -214,15 +212,10 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t
|
||||
// nsymb = (frame_parms->Ncp==0) ? 14:12;
|
||||
// subframe_offset = (unsigned int)frame_parms->ofdm_symbol_size*slot*nsymb;
|
||||
|
||||
if (prach_sequence_length == 0 && prach_fmt_id == 3) {
|
||||
K = 4;
|
||||
kbar = 10;
|
||||
} else if (prach_sequence_length == 1) {
|
||||
K = 1;
|
||||
kbar = 2;
|
||||
}
|
||||
const unsigned int K = get_prach_K(prach_sequence_length, prach_fmt_id, fp->numerology_index, mu);
|
||||
const uint8_t kbar = get_PRACH_k_bar(mu, fp->numerology_index);
|
||||
|
||||
if (k<0)
|
||||
if (k < 0)
|
||||
k += fp->ofdm_symbol_size;
|
||||
|
||||
k *= K;
|
||||
@@ -265,7 +258,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t
|
||||
break;
|
||||
|
||||
default:
|
||||
AssertFatal(1==0, "Illegal PRACH format %d for sequence length 839\n", prach_fmt_id);
|
||||
AssertFatal(1 == 0, "Illegal PRACH format %d for sequence length 839\n", prach_fmt_id);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -562,6 +562,7 @@ int main(int argc, char **argv){
|
||||
prach_config->num_prach_fd_occasions_list[fd_occasion].k1.value = msg1_frequencystart;
|
||||
prach_config->restricted_set_config.value = restrictedSetConfig;
|
||||
prach_config->prach_sequence_length.value = prach_sequence_length;
|
||||
prach_config->prach_sub_c_spacing.value = mu;
|
||||
prach_pdu->num_cs = get_NCS(NCS_config, format0, restrictedSetConfig);
|
||||
prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value = 1+(64/(N_ZC/prach_pdu->num_cs));
|
||||
prach_pdu->prach_format = prach_format;
|
||||
|
||||
Reference in New Issue
Block a user