formatting improvements
This commit is contained in:
@@ -145,7 +145,7 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
const freq_alloc_bitmap_t *freq_alloc,
|
const freq_alloc_bitmap_t *freq_alloc,
|
||||||
uint8_t n_dmrs_cdm_groups,
|
uint8_t n_dmrs_cdm_groups,
|
||||||
uint8_t Nl,
|
uint8_t Nl,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *fp,
|
||||||
uint16_t dlDmrsSymbPos,
|
uint16_t dlDmrsSymbPos,
|
||||||
uint32_t csi_res_bitmap,
|
uint32_t csi_res_bitmap,
|
||||||
int chest_time_type);
|
int chest_time_type);
|
||||||
@@ -315,12 +315,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
uint32_t nvar,
|
uint32_t nvar,
|
||||||
pdsch_scope_req_t *scope_req)
|
pdsch_scope_req_t *scope_req)
|
||||||
{
|
{
|
||||||
|
NR_DL_FRAME_PARMS *fp = &ue->frame_parms;
|
||||||
const int nl = dlsch[0].Nl;
|
const int nl = dlsch[0].Nl;
|
||||||
const int matrixSz = ue->frame_parms.nb_antennas_rx * nl;
|
const int n_rx = fp->nb_antennas_rx;
|
||||||
|
const int matrixSz = n_rx * nl;
|
||||||
__attribute__((aligned(32))) int32_t dl_ch_estimates_ext[matrixSz][rx_size_symbol];
|
__attribute__((aligned(32))) int32_t dl_ch_estimates_ext[matrixSz][rx_size_symbol];
|
||||||
memset(dl_ch_estimates_ext, 0, sizeof(dl_ch_estimates_ext));
|
memset(dl_ch_estimates_ext, 0, sizeof(dl_ch_estimates_ext));
|
||||||
|
|
||||||
__attribute__((aligned(32))) c16_t dl_ch_mag[nl][ue->frame_parms.nb_antennas_rx][rx_size_symbol];
|
__attribute__((aligned(32))) c16_t dl_ch_mag[nl][n_rx][rx_size_symbol];
|
||||||
memset(dl_ch_mag, 0, sizeof(dl_ch_mag));
|
memset(dl_ch_mag, 0, sizeof(dl_ch_mag));
|
||||||
|
|
||||||
__attribute__((aligned(32))) c16_t dl_ch_magb[nl][nbRx][rx_size_symbol];
|
__attribute__((aligned(32))) c16_t dl_ch_magb[nl][nbRx][rx_size_symbol];
|
||||||
@@ -329,7 +331,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
__attribute__((aligned(32))) c16_t dl_ch_magr[nl][nbRx][rx_size_symbol];
|
__attribute__((aligned(32))) c16_t dl_ch_magr[nl][nbRx][rx_size_symbol];
|
||||||
memset(dl_ch_magr, 0, sizeof(dl_ch_magr));
|
memset(dl_ch_magr, 0, sizeof(dl_ch_magr));
|
||||||
NR_UE_COMMON *common_vars = &ue->common_vars;
|
NR_UE_COMMON *common_vars = &ue->common_vars;
|
||||||
NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
|
||||||
PHY_NR_MEASUREMENTS *measurements = &ue->measurements;
|
PHY_NR_MEASUREMENTS *measurements = &ue->measurements;
|
||||||
const int frame = proc->frame_rx;
|
const int frame = proc->frame_rx;
|
||||||
const int nr_slot_rx = proc->nr_slot_rx;
|
const int nr_slot_rx = proc->nr_slot_rx;
|
||||||
@@ -348,7 +349,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
if (dlsch0_harq && dlsch1_harq){
|
if (dlsch0_harq && dlsch1_harq){
|
||||||
|
|
||||||
LOG_D(PHY,"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n", frame, nr_slot_rx, symbol, harq_pid, dlsch0_harq->status, dlsch1_harq->status);
|
LOG_D(PHY,
|
||||||
|
"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n",
|
||||||
|
frame,
|
||||||
|
nr_slot_rx,
|
||||||
|
symbol,
|
||||||
|
harq_pid,
|
||||||
|
dlsch0_harq->status,
|
||||||
|
dlsch1_harq->status);
|
||||||
|
|
||||||
if ((dlsch0_harq->status == ACTIVE) && (dlsch1_harq->status == ACTIVE)){
|
if ((dlsch0_harq->status == ACTIVE) && (dlsch1_harq->status == ACTIVE)){
|
||||||
codeword_TB0 = dlsch0_harq->codeword; // SV: where is this set? revisit for DL MIMO.
|
codeword_TB0 = dlsch0_harq->codeword; // SV: where is this set? revisit for DL MIMO.
|
||||||
@@ -406,12 +414,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!frame_parms) {
|
if(symbol > fp->symbols_per_slot >> 1)
|
||||||
LOG_E(PHY, "dlsch_demodulation.c: Null frame_parms\n");
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(symbol > ue->frame_parms.symbols_per_slot >> 1)
|
|
||||||
slot = 1;
|
slot = 1;
|
||||||
|
|
||||||
uint8_t pilots = (dlsch_config->dlDmrsSymbPos >> symbol) & 1;
|
uint8_t pilots = (dlsch_config->dlDmrsSymbPos >> symbol) & 1;
|
||||||
@@ -419,7 +422,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
//--------------------- RBs extraction ---------------------
|
//--------------------- RBs extraction ---------------------
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
const int n_rx = frame_parms->nb_antennas_rx;
|
|
||||||
const bool meas_enabled = cpumeas(CPUMEAS_GETSTATE);
|
const bool meas_enabled = cpumeas(CPUMEAS_GETSTATE);
|
||||||
int nb_rb_pdsch = freq_alloc->num_rbs;
|
int nb_rb_pdsch = freq_alloc->num_rbs;
|
||||||
{
|
{
|
||||||
@@ -431,7 +433,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
LOG_D(PHY, "%d.%d symbol %d csi overlap bitmap %d\n", frame, nr_slot_rx, symbol, csi_res_bitmap);
|
LOG_D(PHY, "%d.%d symbol %d csi overlap bitmap %d\n", frame, nr_slot_rx, symbol, csi_res_bitmap);
|
||||||
|
|
||||||
nr_dlsch_extract_rbs(ue->frame_parms.samples_per_slot_wCP,
|
nr_dlsch_extract_rbs(fp->samples_per_slot_wCP,
|
||||||
rxdataF,
|
rxdataF,
|
||||||
rx_size_symbol,
|
rx_size_symbol,
|
||||||
pdsch_est_size,
|
pdsch_est_size,
|
||||||
@@ -445,7 +447,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
freq_alloc,
|
freq_alloc,
|
||||||
dlsch_config->n_dmrs_cdm_groups,
|
dlsch_config->n_dmrs_cdm_groups,
|
||||||
nl,
|
nl,
|
||||||
frame_parms,
|
fp,
|
||||||
dlsch_config->dlDmrsSymbPos,
|
dlsch_config->dlDmrsSymbPos,
|
||||||
csi_res_bitmap,
|
csi_res_bitmap,
|
||||||
ue->chest_time);
|
ue->chest_time);
|
||||||
@@ -506,7 +508,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
//--------------------- Channel Scaling --------------------
|
//--------------------- Channel Scaling --------------------
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
start_meas_nr_ue_phy(ue, DLSCH_CHANNEL_SCALE_STATS);
|
start_meas_nr_ue_phy(ue, DLSCH_CHANNEL_SCALE_STATS);
|
||||||
nr_dlsch_scale_channel(rx_size_symbol, dl_ch_estimates_ext, frame_parms, nl, n_rx, symbol, pilots, nb_re_pdsch, nb_rb_pdsch);
|
nr_dlsch_scale_channel(rx_size_symbol, dl_ch_estimates_ext, fp, nl, n_rx, symbol, pilots, nb_re_pdsch, nb_rb_pdsch);
|
||||||
stop_meas_nr_ue_phy(ue, DLSCH_CHANNEL_SCALE_STATS);
|
stop_meas_nr_ue_phy(ue, DLSCH_CHANNEL_SCALE_STATS);
|
||||||
if (meas_enabled) {
|
if (meas_enabled) {
|
||||||
LOG_D(PHY,
|
LOG_D(PHY,
|
||||||
@@ -577,7 +579,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
dl_ch_magr,
|
dl_ch_magr,
|
||||||
rxdataF_comp,
|
rxdataF_comp,
|
||||||
NULL,
|
NULL,
|
||||||
frame_parms,
|
fp,
|
||||||
nl,
|
nl,
|
||||||
symbol,
|
symbol,
|
||||||
nb_re_pdsch,
|
nb_re_pdsch,
|
||||||
@@ -602,10 +604,10 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
char filename[50];
|
char filename[50];
|
||||||
|
|
||||||
snprintf(filename, 50, "rxdataF0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
snprintf(filename, 50, "rxdataF0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
||||||
write_output(filename, "rxdataF0", &rxdataF[0][symbol * frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
|
write_output(filename, "rxdataF0", &rxdataF[0][symbol * fp->ofdm_symbol_size], fp->ofdm_symbol_size, 1, 1);
|
||||||
|
|
||||||
snprintf(filename, 50, "dl_ch_estimates0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
snprintf(filename, 50, "dl_ch_estimates0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
||||||
write_output(filename, "dl_ch_estimates0", &dl_ch_estimates[0][symbol * frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
|
write_output(filename, "dl_ch_estimates0", &dl_ch_estimates[0][symbol * fp->ofdm_symbol_size], fp->ofdm_symbol_size, 1, 1);
|
||||||
|
|
||||||
snprintf(filename, 50, "rxdataF_ext0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
snprintf(filename, 50, "rxdataF_ext0_symb_%d_nr_slot_rx_%d.m", symbol, nr_slot_rx);
|
||||||
write_output(filename, "rxdataF_ext0", &rxdataF_ext[0][0], rx_size_symbol, 1, 1);
|
write_output(filename, "rxdataF_ext0", &rxdataF_ext[0][0], rx_size_symbol, 1, 1);
|
||||||
@@ -681,7 +683,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
ptrs_re_per_slot,
|
ptrs_re_per_slot,
|
||||||
rx_size_symbol,
|
rx_size_symbol,
|
||||||
rxdataF_comp,
|
rxdataF_comp,
|
||||||
frame_parms,
|
fp,
|
||||||
dlsch0_harq,
|
dlsch0_harq,
|
||||||
dlsch1_harq,
|
dlsch1_harq,
|
||||||
gNB_id,
|
gNB_id,
|
||||||
@@ -758,9 +760,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
T_INT(frame % 1024),
|
T_INT(frame % 1024),
|
||||||
T_INT(nr_slot_rx),
|
T_INT(nr_slot_rx),
|
||||||
T_INT(nb_rb_pdsch),
|
T_INT(nb_rb_pdsch),
|
||||||
T_INT(frame_parms->N_RB_UL),
|
T_INT(fp->N_RB_UL),
|
||||||
T_INT(frame_parms->symbols_per_slot),
|
T_INT(fp->symbols_per_slot),
|
||||||
T_BUFFER(&rxdataF_comp[gNB_id][0], 2 * /* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */ frame_parms->N_RB_UL * 12 * 2));
|
T_BUFFER(&rxdataF_comp[gNB_id][0], 2 * /* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */ fp->N_RB_UL * 12 * 2));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ue->phy_sim_pdsch_rxdataF_comp)
|
if (ue->phy_sim_pdsch_rxdataF_comp)
|
||||||
@@ -922,7 +924,7 @@ static void nr_dlsch_channel_compensation(uint32_t rx_size_symbol,
|
|||||||
|
|
||||||
void nr_dlsch_scale_channel(uint32_t rx_size_symbol,
|
void nr_dlsch_scale_channel(uint32_t rx_size_symbol,
|
||||||
int32_t dl_ch_estimates_ext[][rx_size_symbol],
|
int32_t dl_ch_estimates_ext[][rx_size_symbol],
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *fp,
|
||||||
uint8_t n_tx,
|
uint8_t n_tx,
|
||||||
uint8_t n_rx,
|
uint8_t n_rx,
|
||||||
uint8_t symbol,
|
uint8_t symbol,
|
||||||
@@ -931,30 +933,28 @@ void nr_dlsch_scale_channel(uint32_t rx_size_symbol,
|
|||||||
unsigned short nb_rb)
|
unsigned short nb_rb)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
short rb, ch_amp;
|
short rb, ch_amp;
|
||||||
unsigned char aatx,aarx;
|
unsigned char aatx,aarx;
|
||||||
simde__m128i *dl_ch128, ch_amp128;
|
simde__m128i *dl_ch128, ch_amp128;
|
||||||
|
|
||||||
uint32_t nb_rb_0 = len/12 + ((len%12)?1:0);
|
uint32_t nb_rb_0 = len/12 + ((len%12)?1:0);
|
||||||
|
|
||||||
// Determine scaling amplitude based the symbol
|
// Determine scaling amplitude based the symbol
|
||||||
|
ch_amp = 1024 * 8; //((pilots) ? (dlsch_ue[0]->sqrt_rho_b) : (dlsch_ue[0]->sqrt_rho_a));
|
||||||
ch_amp = 1024*8; //((pilots) ? (dlsch_ue[0]->sqrt_rho_b) : (dlsch_ue[0]->sqrt_rho_a));
|
LOG_D(PHY,
|
||||||
|
"Scaling PDSCH Chest in OFDM symbol %d by %d, pilots %d nb_rb %d NCP %d symbol %d\n",
|
||||||
LOG_D(PHY,"Scaling PDSCH Chest in OFDM symbol %d by %d, pilots %d nb_rb %d NCP %d symbol %d\n",symbol,ch_amp,pilots,nb_rb,frame_parms->Ncp,symbol);
|
symbol,
|
||||||
|
ch_amp,
|
||||||
|
pilots,
|
||||||
|
nb_rb,
|
||||||
|
fp->Ncp,
|
||||||
|
symbol);
|
||||||
// printf("Scaling PDSCH Chest in OFDM symbol %d by %d\n",symbol_mod,ch_amp);
|
// printf("Scaling PDSCH Chest in OFDM symbol %d by %d\n",symbol_mod,ch_amp);
|
||||||
|
|
||||||
ch_amp128 = simde_mm_set1_epi16(ch_amp); // Q3.13
|
ch_amp128 = simde_mm_set1_epi16(ch_amp); // Q3.13
|
||||||
|
|
||||||
for (aatx=0; aatx<n_tx; aatx++) {
|
for (aatx=0; aatx<n_tx; aatx++) {
|
||||||
for (aarx=0; aarx<n_rx; aarx++) {
|
for (aarx=0; aarx<n_rx; aarx++) {
|
||||||
|
|
||||||
dl_ch128=(simde__m128i *)dl_ch_estimates_ext[(aatx*n_rx)+aarx];
|
dl_ch128=(simde__m128i *)dl_ch_estimates_ext[(aatx*n_rx)+aarx];
|
||||||
|
|
||||||
for (rb=0;rb<nb_rb_0;rb++) {
|
for (rb=0;rb<nb_rb_0;rb++) {
|
||||||
|
|
||||||
dl_ch128[0] = simde_mm_mulhi_epi16(dl_ch128[0], ch_amp128);
|
dl_ch128[0] = simde_mm_mulhi_epi16(dl_ch128[0], ch_amp128);
|
||||||
dl_ch128[0] = simde_mm_slli_epi16(dl_ch128[0], 3);
|
dl_ch128[0] = simde_mm_slli_epi16(dl_ch128[0], 3);
|
||||||
|
|
||||||
@@ -964,7 +964,6 @@ void nr_dlsch_scale_channel(uint32_t rx_size_symbol,
|
|||||||
dl_ch128[2] = simde_mm_mulhi_epi16(dl_ch128[2], ch_amp128);
|
dl_ch128[2] = simde_mm_mulhi_epi16(dl_ch128[2], ch_amp128);
|
||||||
dl_ch128[2] = simde_mm_slli_epi16(dl_ch128[2], 3);
|
dl_ch128[2] = simde_mm_slli_epi16(dl_ch128[2], 3);
|
||||||
dl_ch128+=3;
|
dl_ch128+=3;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1022,7 +1021,7 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
const freq_alloc_bitmap_t *freq_alloc,
|
const freq_alloc_bitmap_t *freq_alloc,
|
||||||
uint8_t n_dmrs_cdm_groups,
|
uint8_t n_dmrs_cdm_groups,
|
||||||
uint8_t Nl,
|
uint8_t Nl,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *fp,
|
||||||
uint16_t dlDmrsSymbPos,
|
uint16_t dlDmrsSymbPos,
|
||||||
uint32_t csi_res_bitmap,
|
uint32_t csi_res_bitmap,
|
||||||
int chest_time_type)
|
int chest_time_type)
|
||||||
@@ -1060,19 +1059,19 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
for (int b = 0; b < freq_alloc->num_blocks; b++) {
|
for (int b = 0; b < freq_alloc->num_blocks; b++) {
|
||||||
int start_rb = freq_alloc->start[b] + startBWP;
|
int start_rb = freq_alloc->start[b] + startBWP;
|
||||||
int nb_rb = freq_alloc->end[b] - freq_alloc->start[b] + 1;
|
int nb_rb = freq_alloc->end[b] - freq_alloc->start[b] + 1;
|
||||||
const int start_re = (frame_parms->first_carrier_offset + start_rb * NR_NB_SC_PER_RB) % frame_parms->ofdm_symbol_size;
|
const int start_re = (fp->first_carrier_offset + start_rb * NR_NB_SC_PER_RB) % fp->ofdm_symbol_size;
|
||||||
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
for (int aarx = 0; aarx < fp->nb_antennas_rx; aarx++) {
|
||||||
c16_t *rxF_ext = rxdataF_ext[aarx];
|
c16_t *rxF_ext = rxdataF_ext[aarx];
|
||||||
c16_t *rxF = &rxdataF[aarx][symbol * frame_parms->ofdm_symbol_size];
|
c16_t *rxF = &rxdataF[aarx][symbol * fp->ofdm_symbol_size];
|
||||||
for (int l = 0; l < Nl; l++) {
|
for (int l = 0; l < Nl; l++) {
|
||||||
int32_t *dl_ch0 = &dl_ch_estimates[(l * frame_parms->nb_antennas_rx) + aarx][validDmrsEst * frame_parms->ofdm_symbol_size];
|
int32_t *dl_ch0 = &dl_ch_estimates[(l * fp->nb_antennas_rx) + aarx][validDmrsEst * fp->ofdm_symbol_size];
|
||||||
int32_t *dl_ch0_ext = dl_ch_estimates_ext[(l * frame_parms->nb_antennas_rx) + aarx];
|
int32_t *dl_ch0_ext = dl_ch_estimates_ext[(l * fp->nb_antennas_rx) + aarx];
|
||||||
if (pilots == 0 && csi_res_bitmap == 0) { // data symbol only
|
if (pilots == 0 && csi_res_bitmap == 0) { // data symbol only
|
||||||
if (l == 0) {
|
if (l == 0) {
|
||||||
if (start_re + nb_rb * NR_NB_SC_PER_RB <= frame_parms->ofdm_symbol_size) {
|
if (start_re + nb_rb * NR_NB_SC_PER_RB <= fp->ofdm_symbol_size) {
|
||||||
memcpy(rxF_ext, &rxF[start_re], nb_rb * NR_NB_SC_PER_RB * sizeof(int32_t));
|
memcpy(rxF_ext, &rxF[start_re], nb_rb * NR_NB_SC_PER_RB * sizeof(int32_t));
|
||||||
} else {
|
} else {
|
||||||
int neg_length = frame_parms->ofdm_symbol_size - start_re;
|
int neg_length = fp->ofdm_symbol_size - start_re;
|
||||||
int pos_length = nb_rb * NR_NB_SC_PER_RB - neg_length;
|
int pos_length = nb_rb * NR_NB_SC_PER_RB - neg_length;
|
||||||
memcpy(rxF_ext, &rxF[start_re], neg_length * sizeof(int32_t));
|
memcpy(rxF_ext, &rxF[start_re], neg_length * sizeof(int32_t));
|
||||||
memcpy(&rxF_ext[neg_length], rxF, pos_length * sizeof(int32_t));
|
memcpy(&rxF_ext[neg_length], rxF, pos_length * sizeof(int32_t));
|
||||||
@@ -1093,8 +1092,8 @@ static void nr_dlsch_extract_rbs(uint32_t rxdataF_sz,
|
|||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
k++;
|
k++;
|
||||||
if (k >= frame_parms->ofdm_symbol_size)
|
if (k >= fp->ofdm_symbol_size)
|
||||||
k -= frame_parms->ofdm_symbol_size;
|
k -= fp->ofdm_symbol_size;
|
||||||
}
|
}
|
||||||
dl_ch0 += 12;
|
dl_ch0 += 12;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user