mirror of https://github.com/PentHertz/srsLTE.git
Initial implementation of the 5G NR PDCCH DMRS encoding
This commit is contained in:
parent
29ad2427d9
commit
44ae70dcc6
|
@ -161,3 +161,40 @@ dmrs_pdcch_put_symbol_noninterleaved(const srslte_nr_pdcch_cfg_t* cfg, uint32_t
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
int srslte_dmrs_pdcch_put(const srslte_nr_pdcch_cfg_t* cfg, const srslte_dl_sf_cfg_t* dl_sf, cf_t* sf_symbols)
|
||||
{
|
||||
int ncce = srslte_pdcch_get_ncce(cfg, dl_sf);
|
||||
if (ncce < SRSLTE_SUCCESS) {
|
||||
return SRSLTE_ERROR;
|
||||
}
|
||||
|
||||
if (cfg->coreset.mapping_type == srslte_coreset_mapping_type_interleaved) {
|
||||
ERROR("Error interleaved CORESET mapping is not currently implemented\n");
|
||||
return SRSLTE_ERROR;
|
||||
}
|
||||
|
||||
if (cfg->coreset.duration < SRSLTE_CORESET_DURATION_MIN || cfg->coreset.duration > SRSLTE_CORESET_DURATION_MAX) {
|
||||
ERROR("Error CORESET duration %d is out-of-bounds (%d,%d)\n",
|
||||
cfg->coreset.duration,
|
||||
SRSLTE_CORESET_DURATION_MIN,
|
||||
SRSLTE_CORESET_DURATION_MAX);
|
||||
return SRSLTE_ERROR;
|
||||
}
|
||||
|
||||
// Use cell id if the DMR scrambling id is not provided by higher layers
|
||||
uint32_t n_id = cfg->carrier.id;
|
||||
if (cfg->coreset.dmrs_scrambling_id_present) {
|
||||
n_id = cfg->coreset.dmrs_scrambling_id;
|
||||
}
|
||||
|
||||
for (uint32_t l = 0; l < cfg->coreset.duration; l++) {
|
||||
// Get Cin
|
||||
uint32_t cinit = dmrs_pdcch_get_cinit(dl_sf->tti % SRSLTE_NR_NSLOTS_PER_FRAME(cfg->carrier.numerology), l, n_id);
|
||||
|
||||
// Put data
|
||||
dmrs_pdcch_put_symbol_noninterleaved(cfg, cinit, ncce, &sf_symbols[cfg->carrier.nof_prb * SRSLTE_NRE * l]);
|
||||
}
|
||||
|
||||
return SRSLTE_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue