mirror of https://github.com/PentHertz/srsLTE.git
Added Initial NR-PRACH configuration for preamble format 0
This commit is contained in:
parent
b3200d9ef5
commit
54a864e021
|
@ -45,6 +45,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct SRSLTE_API {
|
typedef struct SRSLTE_API {
|
||||||
// Parameters from higher layers (extracted from SIB2)
|
// Parameters from higher layers (extracted from SIB2)
|
||||||
|
bool is_nr;
|
||||||
uint32_t config_idx;
|
uint32_t config_idx;
|
||||||
uint32_t f; // preamble format
|
uint32_t f; // preamble format
|
||||||
uint32_t rsi; // rootSequenceIndex
|
uint32_t rsi; // rootSequenceIndex
|
||||||
|
@ -115,6 +116,7 @@ typedef enum SRSLTE_API {
|
||||||
} srslte_prach_sfn_t;
|
} srslte_prach_sfn_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
bool is_nr; // Set to true if NR
|
||||||
uint32_t config_idx;
|
uint32_t config_idx;
|
||||||
uint32_t root_seq_idx;
|
uint32_t root_seq_idx;
|
||||||
uint32_t zero_corr_zone;
|
uint32_t zero_corr_zone;
|
||||||
|
@ -167,21 +169,6 @@ SRSLTE_API void srslte_prach_sf_config(uint32_t config_idx, srslte_prach_sf_conf
|
||||||
|
|
||||||
SRSLTE_API int srslte_prach_init(srslte_prach_t* p, uint32_t max_N_ifft_ul);
|
SRSLTE_API int srslte_prach_init(srslte_prach_t* p, uint32_t max_N_ifft_ul);
|
||||||
|
|
||||||
SRSLTE_API int srslte_prach_set_cell_fdd(srslte_prach_t* p,
|
|
||||||
uint32_t N_ifft_ul,
|
|
||||||
uint32_t config_idx,
|
|
||||||
uint32_t root_seq_index,
|
|
||||||
bool high_speed_flag,
|
|
||||||
uint32_t zero_corr_zone_config);
|
|
||||||
|
|
||||||
SRSLTE_API int srslte_prach_set_cell_tdd(srslte_prach_t* p,
|
|
||||||
uint32_t N_ifft_ul,
|
|
||||||
uint32_t config_idx,
|
|
||||||
uint32_t root_seq_index,
|
|
||||||
bool high_speed_flag,
|
|
||||||
uint32_t zero_corr_zone_config,
|
|
||||||
srslte_tdd_config_t* tdd_config);
|
|
||||||
|
|
||||||
SRSLTE_API int srslte_prach_set_cfg(srslte_prach_t* p, srslte_prach_cfg_t* cfg, uint32_t nof_prb);
|
SRSLTE_API int srslte_prach_set_cfg(srslte_prach_t* p, srslte_prach_cfg_t* cfg, uint32_t nof_prb);
|
||||||
|
|
||||||
SRSLTE_API int srslte_prach_gen(srslte_prach_t* p, uint32_t seq_index, uint32_t freq_offset, cf_t* signal);
|
SRSLTE_API int srslte_prach_gen(srslte_prach_t* p, uint32_t seq_index, uint32_t freq_offset, cf_t* signal);
|
||||||
|
|
|
@ -408,6 +408,7 @@ int srslte_prach_set_cell_(srslte_prach_t* p,
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t preamble_format = srslte_prach_get_preamble_format(cfg->config_idx);
|
uint32_t preamble_format = srslte_prach_get_preamble_format(cfg->config_idx);
|
||||||
|
p->is_nr = cfg->is_nr;
|
||||||
p->config_idx = cfg->config_idx;
|
p->config_idx = cfg->config_idx;
|
||||||
p->f = preamble_format;
|
p->f = preamble_format;
|
||||||
p->rsi = cfg->root_seq_idx;
|
p->rsi = cfg->root_seq_idx;
|
||||||
|
@ -513,7 +514,10 @@ int srslte_prach_set_cell_(srslte_prach_t* p,
|
||||||
}
|
}
|
||||||
ret = SRSLTE_SUCCESS;
|
ret = SRSLTE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
ERROR("Invalid parameters\n");
|
ERROR("Invalid parameters N_ifft_ul=%d; config_idx=%d; root_seq_idx=%d;\n",
|
||||||
|
N_ifft_ul,
|
||||||
|
cfg->config_idx,
|
||||||
|
cfg->root_seq_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -527,7 +531,7 @@ int srslte_prach_gen(srslte_prach_t* p, uint32_t seq_index, uint32_t freq_offset
|
||||||
uint32_t N_rb_ul = srslte_nof_prb(p->N_ifft_ul);
|
uint32_t N_rb_ul = srslte_nof_prb(p->N_ifft_ul);
|
||||||
uint32_t k_0 = freq_offset * N_RB_SC - N_rb_ul * N_RB_SC / 2 + p->N_ifft_ul / 2;
|
uint32_t k_0 = freq_offset * N_RB_SC - N_rb_ul * N_RB_SC / 2 + p->N_ifft_ul / 2;
|
||||||
uint32_t K = DELTA_F / DELTA_F_RA;
|
uint32_t K = DELTA_F / DELTA_F_RA;
|
||||||
uint32_t begin = PHI + (K * k_0) + (K / 2);
|
uint32_t begin = PHI + (K * k_0) + (p->is_nr ? 1 : (K / 2));
|
||||||
|
|
||||||
if (6 + freq_offset > N_rb_ul) {
|
if (6 + freq_offset > N_rb_ul) {
|
||||||
ERROR("Error no space for PRACH: frequency offset=%d, N_rb_ul=%d\n", freq_offset, N_rb_ul);
|
ERROR("Error no space for PRACH: frequency offset=%d, N_rb_ul=%d\n", freq_offset, N_rb_ul);
|
||||||
|
|
Loading…
Reference in New Issue