clean-up: change type from int32_t to c16_t
Change rxdataF_comp buffer of PDSCH and PUSCH to c16_t and the functions that use the buffer.
This commit is contained in:
@@ -204,11 +204,11 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
|
|||||||
NR_gNB_PUSCH *pusch = &gNB->pusch_vars[ULSCH_id];
|
NR_gNB_PUSCH *pusch = &gNB->pusch_vars[ULSCH_id];
|
||||||
pusch->ul_ch_estimates = (int32_t **)malloc16(n_buf * sizeof(int32_t *));
|
pusch->ul_ch_estimates = (int32_t **)malloc16(n_buf * sizeof(int32_t *));
|
||||||
pusch->ptrs_phase_per_slot = (int32_t **)malloc16(n_buf * sizeof(int32_t *));
|
pusch->ptrs_phase_per_slot = (int32_t **)malloc16(n_buf * sizeof(int32_t *));
|
||||||
pusch->rxdataF_comp = (int32_t **)malloc16(n_buf * sizeof(int32_t *));
|
pusch->rxdataF_comp = (c16_t **)malloc16(n_buf * sizeof(*pusch->rxdataF_comp));
|
||||||
for (int i = 0; i < n_buf; i++) {
|
for (int i = 0; i < n_buf; i++) {
|
||||||
pusch->ul_ch_estimates[i] = (int32_t *)malloc16_clear(sizeof(int32_t) * fp->ofdm_symbol_size * fp->symbols_per_slot);
|
pusch->ul_ch_estimates[i] = (int32_t *)malloc16_clear(sizeof(int32_t) * fp->ofdm_symbol_size * fp->symbols_per_slot);
|
||||||
pusch->ptrs_phase_per_slot[i] = (int32_t *)malloc16_clear(sizeof(int32_t) * fp->symbols_per_slot); // symbols per slot
|
pusch->ptrs_phase_per_slot[i] = (int32_t *)malloc16_clear(sizeof(int32_t) * fp->symbols_per_slot); // symbols per slot
|
||||||
pusch->rxdataF_comp[i] = (int32_t *)malloc16_clear(sizeof(int32_t) * nb_re_pusch2 * fp->symbols_per_slot);
|
pusch->rxdataF_comp[i] = (c16_t *)malloc16_clear(sizeof(**pusch->rxdataF_comp) * nb_re_pusch2 * fp->symbols_per_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < max_ul_mimo_layers; i++) {
|
for (int i = 0; i < max_ul_mimo_layers; i++) {
|
||||||
|
|||||||
@@ -725,7 +725,7 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB,
|
|||||||
*nb_rb,
|
*nb_rb,
|
||||||
rel15_ul->rnti,
|
rel15_ul->rnti,
|
||||||
frame_parms->ofdm_symbol_size,
|
frame_parms->ofdm_symbol_size,
|
||||||
(int16_t *)&pusch_vars->rxdataF_comp[aarx][(symbol * nb_re_pusch)],
|
&pusch_vars->rxdataF_comp[aarx][(symbol * nb_re_pusch)],
|
||||||
gold,
|
gold,
|
||||||
(int16_t *)&phase_per_symbol[symbol],
|
(int16_t *)&phase_per_symbol[symbol],
|
||||||
ptrs_re_symbol);
|
ptrs_re_symbol);
|
||||||
@@ -754,9 +754,9 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB,
|
|||||||
#ifdef DEBUG_UL_PTRS
|
#ifdef DEBUG_UL_PTRS
|
||||||
printf("[PHY][UL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r, phase_per_symbol[i].i);
|
printf("[PHY][UL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r, phase_per_symbol[i].i);
|
||||||
#endif
|
#endif
|
||||||
rotate_cpx_vector((c16_t *)&pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch],
|
rotate_cpx_vector(&pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch],
|
||||||
&phase_per_symbol[i],
|
&phase_per_symbol[i],
|
||||||
(c16_t *)&pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch],
|
&pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch],
|
||||||
((*nb_rb) * NR_NB_SC_PER_RB),
|
((*nb_rb) * NR_NB_SC_PER_RB),
|
||||||
15);
|
15);
|
||||||
} // if not DMRS Symbol
|
} // if not DMRS Symbol
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
|||||||
uint16_t nb_rb,
|
uint16_t nb_rb,
|
||||||
uint16_t rnti,
|
uint16_t rnti,
|
||||||
uint16_t ofdm_symbol_size,
|
uint16_t ofdm_symbol_size,
|
||||||
int16_t *rxF_comp,
|
c16_t *rxF_comp,
|
||||||
const uint32_t *gold_seq,
|
const uint32_t *gold_seq,
|
||||||
int16_t *error_est,
|
int16_t *error_est,
|
||||||
int32_t *ptrs_sc)
|
int32_t *ptrs_sc)
|
||||||
@@ -223,15 +223,11 @@ void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
|||||||
0,// start_re is 0 here
|
0,// start_re is 0 here
|
||||||
ofdm_symbol_size);
|
ofdm_symbol_size);
|
||||||
if(is_ptrs_re) {
|
if(is_ptrs_re) {
|
||||||
dmrs_comp_p[re_cnt].r = rxF_comp[re *2];
|
dmrs_comp_p[re_cnt++] = rxF_comp[re];
|
||||||
dmrs_comp_p[re_cnt].i = rxF_comp[(re *2)+1];
|
|
||||||
re_cnt++;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Skip PTRS symbols and keep data in a continuous vector */
|
/* Skip PTRS symbols and keep data in a continuous vector */
|
||||||
rxF_comp[cnt *2]= rxF_comp[re *2];
|
rxF_comp[cnt++] = rxF_comp[re];
|
||||||
rxF_comp[(cnt *2)+1]= rxF_comp[(re *2)+1];
|
|
||||||
cnt++;
|
|
||||||
}
|
}
|
||||||
}/* RE loop */
|
}/* RE loop */
|
||||||
/* update the total ptrs RE in a symbol */
|
/* update the total ptrs RE in a symbol */
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
|||||||
uint16_t nb_rb,
|
uint16_t nb_rb,
|
||||||
uint16_t rnti,
|
uint16_t rnti,
|
||||||
uint16_t ofdm_symbol_size,
|
uint16_t ofdm_symbol_size,
|
||||||
int16_t *rxF_comp,
|
c16_t *rxF_comp,
|
||||||
const uint32_t *gold_seq,
|
const uint32_t *gold_seq,
|
||||||
int16_t *error_est,
|
int16_t *error_est,
|
||||||
int32_t *ptrs_sc);
|
int32_t *ptrs_sc);
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
|
|||||||
@param symbol OFDM symbol index in sub-frame
|
@param symbol OFDM symbol index in sub-frame
|
||||||
@param mod_order modulation order
|
@param mod_order modulation order
|
||||||
*/
|
*/
|
||||||
void nr_ulsch_compute_llr(int32_t *rxdataF_comp,
|
void nr_ulsch_compute_llr(c16_t *rxdataF_comp,
|
||||||
c16_t *ul_ch_mag,
|
c16_t *ul_ch_mag,
|
||||||
c16_t *ul_ch_magb,
|
c16_t *ul_ch_magb,
|
||||||
c16_t *ul_ch_magc,
|
c16_t *ul_ch_magc,
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ static void nr_ulsch_channel_compensation(uint32_t buffer_length,
|
|||||||
c16_t ul_ch_maga[][buffer_length],
|
c16_t ul_ch_maga[][buffer_length],
|
||||||
c16_t ul_ch_magb[][buffer_length],
|
c16_t ul_ch_magb[][buffer_length],
|
||||||
c16_t ul_ch_magc[][buffer_length],
|
c16_t ul_ch_magc[][buffer_length],
|
||||||
int32_t **rxComp,
|
c16_t **rxComp,
|
||||||
int nb_layers,
|
int nb_layers,
|
||||||
c16_t rho[][nb_layers][buffer_length],
|
c16_t rho[][nb_layers][buffer_length],
|
||||||
nfapi_nr_pusch_pdu_t *rel15_ul,
|
nfapi_nr_pusch_pdu_t *rel15_ul,
|
||||||
@@ -472,7 +472,7 @@ static void nr_ulsch_construct_HhH_elements(c16_t *conjch00_ch00,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MMSE Rx function: nr_ulsch_mmse_2layers()
|
// MMSE Rx function: nr_ulsch_mmse_2layers()
|
||||||
static uint8_t nr_ulsch_mmse_2layers(int **rxdataF_comp,
|
static uint8_t nr_ulsch_mmse_2layers(c16_t **rxdataF_comp,
|
||||||
uint32_t buffer_length,
|
uint32_t buffer_length,
|
||||||
int nb_rx_ant,
|
int nb_rx_ant,
|
||||||
c16_t ul_ch_mag[][buffer_length],
|
c16_t ul_ch_mag[][buffer_length],
|
||||||
@@ -948,13 +948,13 @@ static void inner_rx(PHY_VARS_gNB *gNB,
|
|||||||
if (nb_layer == 1 && rel15_ul->transform_precoding == transformPrecoder_enabled && rel15_ul->qam_mod_order <= 6) {
|
if (nb_layer == 1 && rel15_ul->transform_precoding == transformPrecoder_enabled && rel15_ul->qam_mod_order <= 6) {
|
||||||
if (rel15_ul->qam_mod_order > 2)
|
if (rel15_ul->qam_mod_order > 2)
|
||||||
nr_freq_equalization(frame_parms,
|
nr_freq_equalization(frame_parms,
|
||||||
(c16_t *)&pusch_vars->rxdataF_comp[0][symbol * buffer_length],
|
&pusch_vars->rxdataF_comp[0][symbol * buffer_length],
|
||||||
rxF_ch_maga[0],
|
rxF_ch_maga[0],
|
||||||
rxF_ch_magb[0],
|
rxF_ch_magb[0],
|
||||||
symbol,
|
symbol,
|
||||||
pusch_vars->ul_valid_re_per_slot[symbol],
|
pusch_vars->ul_valid_re_per_slot[symbol],
|
||||||
rel15_ul->qam_mod_order);
|
rel15_ul->qam_mod_order);
|
||||||
nr_idft(&pusch_vars->rxdataF_comp[0][symbol * buffer_length], pusch_vars->ul_valid_re_per_slot[symbol]);
|
nr_idft((int32_t *)&pusch_vars->rxdataF_comp[0][symbol * buffer_length], pusch_vars->ul_valid_re_per_slot[symbol]);
|
||||||
}
|
}
|
||||||
if (rel15_ul->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) {
|
if (rel15_ul->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) {
|
||||||
nr_pusch_ptrs_processing(gNB,
|
nr_pusch_ptrs_processing(gNB,
|
||||||
@@ -971,8 +971,8 @@ static void inner_rx(PHY_VARS_gNB *gNB,
|
|||||||
if (rel15_ul->qam_mod_order <= 6) {
|
if (rel15_ul->qam_mod_order <= 6) {
|
||||||
nr_ulsch_compute_ML_llr(pusch_vars,
|
nr_ulsch_compute_ML_llr(pusch_vars,
|
||||||
symbol,
|
symbol,
|
||||||
(c16_t *)&pusch_vars->rxdataF_comp[0][symbol * buffer_length],
|
&pusch_vars->rxdataF_comp[0][symbol * buffer_length],
|
||||||
(c16_t *)&pusch_vars->rxdataF_comp[nb_rx_ant][symbol * buffer_length],
|
&pusch_vars->rxdataF_comp[nb_rx_ant][symbol * buffer_length],
|
||||||
rxF_ch_maga[0],
|
rxF_ch_maga[0],
|
||||||
rxF_ch_maga[1],
|
rxF_ch_maga[1],
|
||||||
llr[0],
|
llr[0],
|
||||||
@@ -983,7 +983,7 @@ static void inner_rx(PHY_VARS_gNB *gNB,
|
|||||||
rel15_ul->qam_mod_order);
|
rel15_ul->qam_mod_order);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nr_ulsch_mmse_2layers((int32_t **)pusch_vars->rxdataF_comp,
|
nr_ulsch_mmse_2layers(pusch_vars->rxdataF_comp,
|
||||||
buffer_length,
|
buffer_length,
|
||||||
nb_rx_ant,
|
nb_rx_ant,
|
||||||
rxF_ch_maga,
|
rxF_ch_maga,
|
||||||
@@ -1000,7 +1000,7 @@ static void inner_rx(PHY_VARS_gNB *gNB,
|
|||||||
}
|
}
|
||||||
if (nb_layer != 2 || rel15_ul->qam_mod_order > 6)
|
if (nb_layer != 2 || rel15_ul->qam_mod_order > 6)
|
||||||
for (int aatx = 0; aatx < nb_layer; aatx++)
|
for (int aatx = 0; aatx < nb_layer; aatx++)
|
||||||
nr_ulsch_compute_llr((int32_t *)&pusch_vars->rxdataF_comp[aatx * nb_rx_ant][symbol * buffer_length],
|
nr_ulsch_compute_llr(&pusch_vars->rxdataF_comp[aatx * nb_rx_ant][symbol * buffer_length],
|
||||||
rxF_ch_maga[aatx],
|
rxF_ch_maga[aatx],
|
||||||
rxF_ch_magb[aatx],
|
rxF_ch_magb[aatx],
|
||||||
rxF_ch_magc[aatx],
|
rxF_ch_magc[aatx],
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
#define USE_128BIT
|
#define USE_128BIT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void nr_ulsch_compute_llr(int32_t *rxdataF_comp,
|
void nr_ulsch_compute_llr(c16_t *rxdataF_comp,
|
||||||
c16_t *ul_ch_mag,
|
c16_t *ul_ch_mag,
|
||||||
c16_t *ul_ch_magb,
|
c16_t *ul_ch_magb,
|
||||||
c16_t *ul_ch_magc,
|
c16_t *ul_ch_magc,
|
||||||
|
|||||||
@@ -1384,7 +1384,7 @@ void nr_pdsch_ptrs_processing(int nbRx,
|
|||||||
c16_t ptrs_phase_per_slot[][14],
|
c16_t ptrs_phase_per_slot[][14],
|
||||||
int32_t ptrs_re_per_slot[][14],
|
int32_t ptrs_re_per_slot[][14],
|
||||||
uint32_t rx_size_symbol,
|
uint32_t rx_size_symbol,
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||||
@@ -1477,7 +1477,7 @@ void nr_pdsch_ptrs_processing(int nbRx,
|
|||||||
*nb_rb,
|
*nb_rb,
|
||||||
rnti,
|
rnti,
|
||||||
frame_parms->ofdm_symbol_size,
|
frame_parms->ofdm_symbol_size,
|
||||||
(int16_t *)(rxdataF_comp[0][aarx] + symbol * rx_size_symbol),
|
rxdataF_comp[0][aarx] + symbol * rx_size_symbol,
|
||||||
gold,
|
gold,
|
||||||
(int16_t *)&phase_per_symbol[symbol],
|
(int16_t *)&phase_per_symbol[symbol],
|
||||||
&ptrs_re_symbol[symbol]);
|
&ptrs_re_symbol[symbol]);
|
||||||
@@ -1510,9 +1510,9 @@ void nr_pdsch_ptrs_processing(int nbRx,
|
|||||||
#ifdef DEBUG_DL_PTRS
|
#ifdef DEBUG_DL_PTRS
|
||||||
printf("[PHY][DL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r,phase_per_symbol[i].i);
|
printf("[PHY][DL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r,phase_per_symbol[i].i);
|
||||||
#endif
|
#endif
|
||||||
rotate_cpx_vector((c16_t *)&rxdataF_comp[0][aarx][i * rx_size_symbol],
|
rotate_cpx_vector(&rxdataF_comp[0][aarx][i * rx_size_symbol],
|
||||||
&phase_per_symbol[i],
|
&phase_per_symbol[i],
|
||||||
(c16_t *)&rxdataF_comp[0][aarx][i * rx_size_symbol],
|
&rxdataF_comp[0][aarx][i * rx_size_symbol],
|
||||||
((*nb_rb) * NR_NB_SC_PER_RB),
|
((*nb_rb) * NR_NB_SC_PER_RB),
|
||||||
15);
|
15);
|
||||||
}// if not DMRS Symbol
|
}// if not DMRS Symbol
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ void nr_pdsch_ptrs_processing(int nbRx,
|
|||||||
c16_t ptrs_phase_per_slot[][14],
|
c16_t ptrs_phase_per_slot[][14],
|
||||||
int32_t ptrs_re_per_slot[][14],
|
int32_t ptrs_re_per_slot[][14],
|
||||||
uint32_t rx_size_symbol,
|
uint32_t rx_size_symbol,
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ static void nr_dlsch_channel_compensation(uint32_t rx_size_symbol,
|
|||||||
c16_t dl_ch_mag[][nbRx][rx_size_symbol],
|
c16_t dl_ch_mag[][nbRx][rx_size_symbol],
|
||||||
c16_t dl_ch_magb[][nbRx][rx_size_symbol],
|
c16_t dl_ch_magb[][nbRx][rx_size_symbol],
|
||||||
c16_t dl_ch_magr[][nbRx][rx_size_symbol],
|
c16_t dl_ch_magr[][nbRx][rx_size_symbol],
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
int ***rho,
|
int ***rho,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
uint8_t n_layers,
|
uint8_t n_layers,
|
||||||
@@ -387,11 +387,10 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void nr_dlsch_detection_mrc(uint32_t rx_size_symbol,
|
static void nr_dlsch_detection_mrc(uint32_t rx_size_symbol,
|
||||||
short nl,
|
short nl,
|
||||||
short n_rx,
|
short n_rx,
|
||||||
int32_t rxdataF_comp[][n_rx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][n_rx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
int ***rho,
|
int ***rho,
|
||||||
c16_t dl_ch_mag[][n_rx][rx_size_symbol],
|
c16_t dl_ch_mag[][n_rx][rx_size_symbol],
|
||||||
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
||||||
@@ -720,7 +719,7 @@ void nr_conjch0_mult_ch1(c16_t *ch0, c16_t *ch1, c16_t *ch0conj_ch1, unsigned sh
|
|||||||
static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
||||||
unsigned char n_rx,
|
unsigned char n_rx,
|
||||||
unsigned char nl, // number of layer
|
unsigned char nl, // number of layer
|
||||||
int32_t rxdataF_comp[][n_rx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][n_rx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
c16_t dl_ch_mag[][n_rx][rx_size_symbol],
|
c16_t dl_ch_mag[][n_rx][rx_size_symbol],
|
||||||
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
||||||
c16_t dl_ch_magr[][n_rx][rx_size_symbol],
|
c16_t dl_ch_magr[][n_rx][rx_size_symbol],
|
||||||
@@ -803,7 +802,7 @@ static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
|||||||
// print_shorts(" H_h_H=",(int16_t*)&conjH_H_elements[ctx*nl+rtx][0][0]);
|
// print_shorts(" H_h_H=",(int16_t*)&conjH_H_elements[ctx*nl+rtx][0][0]);
|
||||||
// print_shorts(" Inv_H_h_H=",(int16_t*)&inv_H_h_H[ctx*nl+rtx][0]);
|
// print_shorts(" Inv_H_h_H=",(int16_t*)&inv_H_h_H[ctx*nl+rtx][0]);
|
||||||
mult_complex_vectors(inv_H_h_H[ctx][rtx],
|
mult_complex_vectors(inv_H_h_H[ctx][rtx],
|
||||||
(c16_t *)(rxdataF_comp[ctx][0] + symbol * rx_size_symbol),
|
rxdataF_comp[ctx][0] + symbol * rx_size_symbol,
|
||||||
outtemp,
|
outtemp,
|
||||||
sizeofArray(outtemp),
|
sizeofArray(outtemp),
|
||||||
shift - (fp_flag == 1 ? 1 : 0));
|
shift - (fp_flag == 1 ? 1 : 0));
|
||||||
@@ -819,7 +818,7 @@ static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
|||||||
|
|
||||||
//Copy zero_forcing out to output array
|
//Copy zero_forcing out to output array
|
||||||
for (int rtx = 0; rtx < nl; rtx++)
|
for (int rtx = 0; rtx < nl; rtx++)
|
||||||
nr_element_sign(rxdataF_zforcing[rtx], (c16_t *)(rxdataF_comp[rtx][0] + symbol * rx_size_symbol), nb_rb_0, + 1);
|
nr_element_sign(rxdataF_zforcing[rtx], rxdataF_comp[rtx][0] + symbol * rx_size_symbol, nb_rb_0, +1);
|
||||||
|
|
||||||
//Update LLR thresholds with the Matrix determinant
|
//Update LLR thresholds with the Matrix determinant
|
||||||
simde__m128i *dl_ch_mag128_0=NULL,*dl_ch_mag128b_0=NULL,*dl_ch_mag128r_0=NULL,*determ_fin_128;
|
simde__m128i *dl_ch_mag128_0=NULL,*dl_ch_mag128b_0=NULL,*dl_ch_mag128r_0=NULL,*determ_fin_128;
|
||||||
@@ -912,7 +911,7 @@ static void nr_dlsch_llr(uint32_t rx_size_symbol,
|
|||||||
int nbRx,
|
int nbRx,
|
||||||
uint sz,
|
uint sz,
|
||||||
int16_t layer_llr[][sz],
|
int16_t layer_llr[][sz],
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
c16_t dl_ch_mag[rx_size_symbol],
|
c16_t dl_ch_mag[rx_size_symbol],
|
||||||
c16_t dl_ch_magb[rx_size_symbol],
|
c16_t dl_ch_magb[rx_size_symbol],
|
||||||
c16_t dl_ch_magr[rx_size_symbol],
|
c16_t dl_ch_magr[rx_size_symbol],
|
||||||
@@ -994,7 +993,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
int32_t *log2_maxh,
|
int32_t *log2_maxh,
|
||||||
int rx_size_symbol,
|
int rx_size_symbol,
|
||||||
int nbRx,
|
int nbRx,
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
c16_t ptrs_phase_per_slot[][NR_SYMBOLS_PER_SLOT],
|
c16_t ptrs_phase_per_slot[][NR_SYMBOLS_PER_SLOT],
|
||||||
int32_t ptrs_re_per_slot[][NR_SYMBOLS_PER_SLOT],
|
int32_t ptrs_re_per_slot[][NR_SYMBOLS_PER_SLOT],
|
||||||
int G,
|
int G,
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
int32_t *log2_maxh,
|
int32_t *log2_maxh,
|
||||||
int rx_size_symbol,
|
int rx_size_symbol,
|
||||||
int nbRx,
|
int nbRx,
|
||||||
int32_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
c16_t rxdataF_comp[][nbRx][rx_size_symbol * NR_SYMBOLS_PER_SLOT],
|
||||||
c16_t ptrs_phase_per_slot[][NR_SYMBOLS_PER_SLOT],
|
c16_t ptrs_phase_per_slot[][NR_SYMBOLS_PER_SLOT],
|
||||||
int32_t ptrs_re_per_slot[][NR_SYMBOLS_PER_SLOT],
|
int32_t ptrs_re_per_slot[][NR_SYMBOLS_PER_SLOT],
|
||||||
int G,
|
int G,
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ typedef struct {
|
|||||||
/// \brief Holds the compensated signal.
|
/// \brief Holds the compensated signal.
|
||||||
/// - first index: rx antenna id [0..nb_antennas_rx[
|
/// - first index: rx antenna id [0..nb_antennas_rx[
|
||||||
/// - second index: ? [0..12*N_RB_UL*frame_parms->symbols_per_tti[
|
/// - second index: ? [0..12*N_RB_UL*frame_parms->symbols_per_tti[
|
||||||
int32_t **rxdataF_comp;
|
c16_t **rxdataF_comp;
|
||||||
/// \f$\log_2(\max|H_i|^2)\f$
|
/// \f$\log_2(\max|H_i|^2)\f$
|
||||||
int16_t log2_maxh;
|
int16_t log2_maxh;
|
||||||
/// measured RX power based on DRS
|
/// measured RX power based on DRS
|
||||||
|
|||||||
@@ -349,10 +349,10 @@ typedef struct {
|
|||||||
} csi_mapping_parms_t;
|
} csi_mapping_parms_t;
|
||||||
csi_mapping_parms_t get_csi_mapping_parms(int row, int b, int l0, int l1);
|
csi_mapping_parms_t get_csi_mapping_parms(int row, int b, int l0, int l1);
|
||||||
int get_cdm_group_size(int cdm_type);
|
int get_cdm_group_size(int cdm_type);
|
||||||
void nr_qpsk_llr(int32_t *rxdataF_comp, int16_t *llr, uint32_t nb_re);
|
void nr_qpsk_llr(c16_t *rxdataF_comp, int16_t *llr, uint32_t nb_re);
|
||||||
void nr_16qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag_in, int16_t *llr, uint32_t nb_re);
|
void nr_16qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag_in, int16_t *llr, uint32_t nb_re);
|
||||||
void nr_64qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, int16_t *llr, uint32_t nb_re);
|
void nr_64qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, int16_t *llr, uint32_t nb_re);
|
||||||
void nr_256qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, c16_t *ch_mag3, int16_t *llr, uint32_t nb_re);
|
void nr_256qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, c16_t *ch_mag3, int16_t *llr, uint32_t nb_re);
|
||||||
void freq2time(uint16_t ofdm_symbol_size, int16_t *freq_signal, int16_t *time_signal);
|
void freq2time(uint16_t ofdm_symbol_size, int16_t *freq_signal, int16_t *time_signal);
|
||||||
void nr_est_delay(int ofdm_symbol_size, const c16_t *ls_est, c16_t *ch_estimates_time, delay_t *delay);
|
void nr_est_delay(int ofdm_symbol_size, const c16_t *ls_est, c16_t *ch_estimates_time, delay_t *delay);
|
||||||
unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int total_nb_rb, int nb_rb);
|
unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int total_nb_rb, int nb_rb);
|
||||||
|
|||||||
@@ -66,9 +66,9 @@ static inline c16_t saturating_sub(c16_t a, c16_t b)
|
|||||||
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
||||||
// QPSK
|
// QPSK
|
||||||
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
||||||
void nr_qpsk_llr(int32_t *rxdataF_comp, int16_t *llr, uint32_t nb_re)
|
void nr_qpsk_llr(c16_t *rxdataF_comp, int16_t *llr, uint32_t nb_re)
|
||||||
{
|
{
|
||||||
c16_t *rxF = (c16_t *)rxdataF_comp;
|
c16_t *rxF = rxdataF_comp;
|
||||||
c16_t *llr32 = (c16_t *)llr;
|
c16_t *llr32 = (c16_t *)llr;
|
||||||
for (int i = 0; i < nb_re; i++) {
|
for (int i = 0; i < nb_re; i++) {
|
||||||
llr32[i].r = rxF[i].r >> 4;
|
llr32[i].r = rxF[i].r >> 4;
|
||||||
@@ -80,7 +80,7 @@ void nr_qpsk_llr(int32_t *rxdataF_comp, int16_t *llr, uint32_t nb_re)
|
|||||||
// 16-QAM
|
// 16-QAM
|
||||||
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void nr_16qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag_in, int16_t *llr, uint32_t nb_re)
|
void nr_16qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag_in, int16_t *llr, uint32_t nb_re)
|
||||||
{
|
{
|
||||||
simde__m256i *rxF_256 = (simde__m256i *)rxdataF_comp;
|
simde__m256i *rxF_256 = (simde__m256i *)rxdataF_comp;
|
||||||
simde__m256i *ch_mag256 = (simde__m256i *)ch_mag_in;
|
simde__m256i *ch_mag256 = (simde__m256i *)ch_mag_in;
|
||||||
@@ -148,7 +148,7 @@ void nr_16qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag_in, int16_t *llr, uint32_
|
|||||||
// 64-QAM
|
// 64-QAM
|
||||||
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void nr_64qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, int16_t *llr, uint32_t nb_re)
|
void nr_64qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, int16_t *llr, uint32_t nb_re)
|
||||||
{
|
{
|
||||||
simde__m256i *rxF = (simde__m256i *)rxdataF_comp;
|
simde__m256i *rxF = (simde__m256i *)rxdataF_comp;
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ void nr_64qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, int16_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void nr_256qam_llr(int32_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, c16_t *ch_mag3, int16_t *llr, uint32_t nb_re)
|
void nr_256qam_llr(c16_t *rxdataF_comp, c16_t *ch_mag, c16_t *ch_mag2, c16_t *ch_mag3, int16_t *llr, uint32_t nb_re)
|
||||||
{
|
{
|
||||||
simde__m256i *rxF_256 = (simde__m256i *)rxdataF_comp;
|
simde__m256i *rxF_256 = (simde__m256i *)rxdataF_comp;
|
||||||
simde__m256i *llr256 = (simde__m256i *)llr;
|
simde__m256i *llr256 = (simde__m256i *)llr;
|
||||||
|
|||||||
@@ -618,7 +618,7 @@ static int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
const uint32_t rx_size_symbol = (freq_alloc.num_rbs * NR_NB_SC_PER_RB + 15) & ~15;
|
const uint32_t rx_size_symbol = (freq_alloc.num_rbs * NR_NB_SC_PER_RB + 15) & ~15;
|
||||||
fourDimArray_t *toFree2 = NULL;
|
fourDimArray_t *toFree2 = NULL;
|
||||||
allocCast3D(rxdataF_comp,
|
allocCast3D(rxdataF_comp,
|
||||||
int32_t,
|
c16_t,
|
||||||
toFree2,
|
toFree2,
|
||||||
dlsch[0].Nl,
|
dlsch[0].Nl,
|
||||||
ue->frame_parms.nb_antennas_rx,
|
ue->frame_parms.nb_antennas_rx,
|
||||||
|
|||||||
Reference in New Issue
Block a user