Generalization of the nr_generate_csi_rs function to be able to call it in gNB and UE
This commit is contained in:
@@ -1584,9 +1584,10 @@ set(PHY_SRC_UE
|
|||||||
|
|
||||||
set(PHY_NR_SRC_COMMON
|
set(PHY_NR_SRC_COMMON
|
||||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
|
||||||
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PHY_NR_SRC
|
set(PHY_NR_SRC
|
||||||
@@ -1610,7 +1611,6 @@ set(PHY_SRC_UE
|
|||||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
|
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
||||||
|
|||||||
@@ -27,8 +27,10 @@
|
|||||||
//#define NR_CSIRS_DEBUG
|
//#define NR_CSIRS_DEBUG
|
||||||
|
|
||||||
|
|
||||||
void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
|
void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
|
||||||
|
int32_t **dataF,
|
||||||
int16_t amp,
|
int16_t amp,
|
||||||
|
uint32_t **gold_csi_rs,
|
||||||
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params,
|
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params,
|
||||||
uint16_t cell_id,
|
uint16_t cell_id,
|
||||||
int slot){
|
int slot){
|
||||||
@@ -52,10 +54,7 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
|
|||||||
LOG_I(NR_PHY, "csi_params.power_control_offset_ss = %i\n", csi_params.power_control_offset_ss);
|
LOG_I(NR_PHY, "csi_params.power_control_offset_ss = %i\n", csi_params.power_control_offset_ss);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
NR_DL_FRAME_PARMS frame_parms=gNB->frame_parms;
|
int dataF_offset = slot*frame_parms.samples_per_slot_wCP;
|
||||||
int32_t **txdataF = gNB->common_vars.txdataF;
|
|
||||||
int txdataF_offset = slot*frame_parms.samples_per_slot_wCP;
|
|
||||||
uint32_t **gold_csi_rs = gNB->nr_gold_csi_rs[slot];
|
|
||||||
int16_t mod_csi[frame_parms.symbols_per_slot][NR_MAX_CSI_RS_LENGTH>>1] __attribute__((aligned(16)));;
|
int16_t mod_csi[frame_parms.symbols_per_slot][NR_MAX_CSI_RS_LENGTH>>1] __attribute__((aligned(16)));;
|
||||||
uint16_t b = csi_params.freq_domain;
|
uint16_t b = csi_params.freq_domain;
|
||||||
uint16_t n, csi_bw, csi_start, p, k, l, mprime, na, kpn, csi_length;
|
uint16_t n, csi_bw, csi_start, p, k, l, mprime, na, kpn, csi_length;
|
||||||
@@ -621,17 +620,17 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
|
|||||||
}
|
}
|
||||||
// ZP CSI RS
|
// ZP CSI RS
|
||||||
if (csi_params.csi_type == 2) {
|
if (csi_params.csi_type == 2) {
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*txdataF_offset)] = 0;
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*dataF_offset)] = 0;
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*txdataF_offset)] = 0;
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*dataF_offset)] = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*txdataF_offset)] = (beta*wt*wf*mod_csi[l][mprime<<1]) >> 15;
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*dataF_offset)] = (beta*wt*wf*mod_csi[l][mprime<<1]) >> 15;
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*txdataF_offset)] = (beta*wt*wf*mod_csi[l][(mprime<<1) + 1]) >> 15;
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*dataF_offset)] = (beta*wt*wf*mod_csi[l][(mprime<<1) + 1]) >> 15;
|
||||||
}
|
}
|
||||||
#ifdef NR_CSIRS_DEBUG
|
#ifdef NR_CSIRS_DEBUG
|
||||||
printf("l,k (%d %d) seq. index %d \t port %d \t (%d,%d)\n",l,k,mprime,p+3000,
|
printf("l,k (%d %d) seq. index %d \t port %d \t (%d,%d)\n",l,k,mprime,p+3000,
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*txdataF_offset)],
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+(2*dataF_offset)],
|
||||||
((int16_t*)txdataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*txdataF_offset)]);
|
((int16_t*)dataF[p])[((l*frame_parms.ofdm_symbol_size + k)<<1)+1+(2*dataF_offset)]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -335,8 +335,10 @@ void init_prach_ru_list(RU_t *ru);
|
|||||||
void free_nr_ru_prach_entry(RU_t *ru, int prach_id);
|
void free_nr_ru_prach_entry(RU_t *ru, int prach_id);
|
||||||
uint8_t get_nr_prach_duration(uint8_t prach_format);
|
uint8_t get_nr_prach_duration(uint8_t prach_format);
|
||||||
|
|
||||||
void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
|
void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
|
||||||
|
int32_t **dataF,
|
||||||
int16_t amp,
|
int16_t amp,
|
||||||
|
uint32_t **gold_csi_rs,
|
||||||
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params,
|
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params,
|
||||||
uint16_t cell_id,
|
uint16_t cell_id,
|
||||||
int slot);
|
int slot);
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
|
|||||||
if (csirs->active == 1) {
|
if (csirs->active == 1) {
|
||||||
LOG_D(PHY, "CSI-RS generation started in frame %d.%d\n",frame,slot);
|
LOG_D(PHY, "CSI-RS generation started in frame %d.%d\n",frame,slot);
|
||||||
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params = csirs->csirs_pdu.csi_rs_pdu_rel15;
|
nfapi_nr_dl_tti_csi_rs_pdu_rel15_t csi_params = csirs->csirs_pdu.csi_rs_pdu_rel15;
|
||||||
nr_generate_csi_rs(gNB, AMP, csi_params, gNB->gNB_config.cell_config.phy_cell_id.value, slot);
|
nr_generate_csi_rs(gNB->frame_parms, gNB->common_vars.txdataF, AMP, gNB->nr_gold_csi_rs[slot], csi_params, gNB->gNB_config.cell_config.phy_cell_id.value, slot);
|
||||||
csirs->active = 0;
|
csirs->active = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user