Added NZP-CSI-RS signals in gNb

This commit is contained in:
Xavier Arteaga 2021-09-23 19:19:59 +02:00 committed by Andre Puschmann
parent ca6ea55cb6
commit 8b2514ded3
4 changed files with 40 additions and 2 deletions

View File

@ -13,6 +13,7 @@
#ifndef SRSRAN_GNB_DL_H
#define SRSRAN_GNB_DL_H
#include "srsran/phy/ch_estimation/csi_rs.h"
#include "srsran/phy/common/phy_common_nr.h"
#include "srsran/phy/dft/ofdm.h"
#include "srsran/phy/phch/pdcch_cfg_nr.h"
@ -78,4 +79,8 @@ srsran_gnb_dl_pdcch_dl_info(const srsran_gnb_dl_t* q, const srsran_dci_dl_nr_t*
SRSRAN_API int
srsran_gnb_dl_pdcch_ul_info(const srsran_gnb_dl_t* q, const srsran_dci_ul_nr_t* dci, char* str, uint32_t str_len);
SRSRAN_API int srsran_gnb_dl_nzp_csi_rs_put(srsran_gnb_dl_t* q,
const srsran_slot_cfg_t* slot_cfg,
const srsran_csi_rs_nzp_resource_t* resource);
#endif // SRSRAN_GNB_DL_H

View File

@ -309,3 +309,19 @@ int srsran_gnb_dl_pdcch_ul_info(const srsran_gnb_dl_t* q, const srsran_dci_ul_nr
return len;
}
int srsran_gnb_dl_nzp_csi_rs_put(srsran_gnb_dl_t* q,
const srsran_slot_cfg_t* slot_cfg,
const srsran_csi_rs_nzp_resource_t* resource)
{
if (q == NULL) {
return SRSRAN_ERROR_INVALID_INPUTS;
}
if (srsran_csi_rs_nzp_put_resource(&q->carrier, slot_cfg, resource, q->sf_symbols[0]) < SRSRAN_SUCCESS) {
ERROR("Error putting NZP-CSI-RS resource");
return SRSRAN_ERROR;
}
return SRSRAN_SUCCESS;
}

View File

@ -330,8 +330,11 @@ bool slot_worker::work_dl()
}
// Put NZP-CSI-RS
for (srsran_csi_rs_nzp_resource_t& pdsch : dl_sched.nzp_csi_rs) {
// ...
for (srsran_csi_rs_nzp_resource_t& nzp_csi_rs : dl_sched.nzp_csi_rs) {
if (srsran_gnb_dl_nzp_csi_rs_put(&gnb_dl, &dl_slot_cfg, &nzp_csi_rs) < SRSRAN_SUCCESS) {
logger.error("NZP-CSI-RS: Error putting signal");
return false;
}
}
// Generate baseband signal

View File

@ -484,6 +484,20 @@ public:
return SRSRAN_ERROR;
}
// Schedule NZP-CSI-RS, iterate all NZP-CSI-RS sets
for (const srsran_csi_rs_nzp_set_t& set : phy_cfg.pdsch.nzp_csi_rs_sets) {
// For each NZP-CSI-RS resource available in the set
for (uint32_t i = 0; i < set.count; i++) {
// Select resource
const srsran_csi_rs_nzp_resource_t& nzp_csi_resource = set.data[i];
// Check if the resource is scheduled for this slot
if (srsran_csi_rs_send(&nzp_csi_resource.periodicity, &slot_cfg)) {
dl_sched.nzp_csi_rs.push_back(nzp_csi_resource);
}
}
}
return SRSRAN_SUCCESS;
}