fixed signal level computation for PUCCH2 and threshold in pucchsim.
Threshold allows detection with -9 dB SNR with 8 RX antennas
This commit is contained in:
@@ -154,7 +154,7 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_sy
|
|||||||
signal_energy = signal_energy_nodc(ul_ch, 12);
|
signal_energy = signal_energy_nodc(ul_ch, 12);
|
||||||
}
|
}
|
||||||
n0_subband_power[aarx][rb] += signal_energy;
|
n0_subband_power[aarx][rb] += signal_energy;
|
||||||
LOG_D(PHY,"slot %d symbol %d RB %d aarx %d n0_subband_power %d\n", slot, s, rb, aarx, signal_energy);
|
LOG_D(NR_PHY,"slot %d symbol %d RB %d aarx %d n0_subband_power %d\n", slot, s, rb, aarx, signal_energy);
|
||||||
} //antenna
|
} //antenna
|
||||||
}
|
}
|
||||||
} //rb
|
} //rb
|
||||||
@@ -177,7 +177,7 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_sy
|
|||||||
n0_subband_tot_perPRB/=frame_parms->nb_antennas_rx;
|
n0_subband_tot_perPRB/=frame_parms->nb_antennas_rx;
|
||||||
measurements->n0_subband_power_tot_dB[rb] = dB_fixed(n0_subband_tot_perPRB);
|
measurements->n0_subband_power_tot_dB[rb] = dB_fixed(n0_subband_tot_perPRB);
|
||||||
measurements->n0_subband_power_tot_dBm[rb] = measurements->n0_subband_power_tot_dB[rb] - gNB->rx_total_gain_dB - dB_fixed(frame_parms->N_RB_UL);
|
measurements->n0_subband_power_tot_dBm[rb] = measurements->n0_subband_power_tot_dB[rb] - gNB->rx_total_gain_dB - dB_fixed(frame_parms->N_RB_UL);
|
||||||
LOG_D(PHY,"n0_subband_power_tot_dB[%d] => %d, over %d symbols\n",rb,measurements->n0_subband_power_tot_dB[rb],nb_symb[rb]);
|
LOG_D(NR_PHY,"n0_subband_power_tot_dB[%d] => %d, over %d symbols\n",rb,measurements->n0_subband_power_tot_dB[rb],nb_symb[rb]);
|
||||||
n0_subband_tot += n0_subband_tot_perPRB;
|
n0_subband_tot += n0_subband_tot_perPRB;
|
||||||
nb_rb++;
|
nb_rb++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1088,7 +1088,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pucch2_lev /= Prx * Prx * pucch_pdu->nr_of_symbols;
|
pucch2_lev /= Prx * pucch_pdu->nr_of_symbols;
|
||||||
int pucch2_levdB = dB_fixed(pucch2_lev);
|
int pucch2_levdB = dB_fixed(pucch2_lev);
|
||||||
int scaling = 0;
|
int scaling = 0;
|
||||||
if (pucch2_levdB > 72)
|
if (pucch2_levdB > 72)
|
||||||
@@ -1100,7 +1100,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
|||||||
else if (pucch2_levdB > 54)
|
else if (pucch2_levdB > 54)
|
||||||
scaling = 1;
|
scaling = 1;
|
||||||
|
|
||||||
LOG_D(PHY,
|
LOG_D(NR_PHY,
|
||||||
"%d.%d Decoding pucch2 for %d symbols, %d PRB, nb_harq %d, nb_sr %d, nb_csi %d/%d, pucch2_lev %d dB (scaling %d)\n",
|
"%d.%d Decoding pucch2 for %d symbols, %d PRB, nb_harq %d, nb_sr %d, nb_csi %d/%d, pucch2_lev %d dB (scaling %d)\n",
|
||||||
frame,
|
frame,
|
||||||
slot,
|
slot,
|
||||||
@@ -1369,7 +1369,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
|||||||
int decoderState = 2;
|
int decoderState = 2;
|
||||||
if (pucch2_levdB < gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10))
|
if (pucch2_levdB < gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10))
|
||||||
decoderState = 1; // assuming missed detection, only attempt to decode for polar case (with CRC)
|
decoderState = 1; // assuming missed detection, only attempt to decode for polar case (with CRC)
|
||||||
LOG_D(PHY, "n0+thres %d decoderState %d\n", gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10), decoderState);
|
LOG_D(NR_PHY, "n0+thres %d decoderState %d\n", gNB->measurements.n0_subband_power_avg_dB + (gNB->pucch0_thres / 10), decoderState);
|
||||||
if (nb_bit < 12 && decoderState == 2) { // short blocklength case
|
if (nb_bit < 12 && decoderState == 2) { // short blocklength case
|
||||||
simde__m256i *rp_re[Prx2][2];
|
simde__m256i *rp_re[Prx2][2];
|
||||||
simde__m256i *rp2_re[Prx2][2];
|
simde__m256i *rp2_re[Prx2][2];
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ int main(int argc, char **argv)
|
|||||||
//unsigned char frame_type = 0;
|
//unsigned char frame_type = 0;
|
||||||
int loglvl=OAILOG_WARNING;
|
int loglvl=OAILOG_WARNING;
|
||||||
int sr_flag = 0;
|
int sr_flag = 0;
|
||||||
int pucch_DTX_thres = 50;
|
int pucch_DTX_thres = 0;
|
||||||
cpuf = get_cpu_freq_GHz();
|
cpuf = get_cpu_freq_GHz();
|
||||||
|
|
||||||
if ((uniqCfg = load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY)) == 0) {
|
if ((uniqCfg = load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY)) == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user