Improved LDPC decoded performance and other NR aesthetical changes

master
Xavier Arteaga 4 years ago committed by Xavier Arteaga
parent 506adca930
commit ecd2c1cdcc

@ -1030,7 +1030,14 @@ int srsran_ldpc_decoder_decode_s(srsran_ldpc_decoder_t* q,
int srsran_ldpc_decoder_decode_c(srsran_ldpc_decoder_t* q, const int8_t* llrs, uint8_t* message)
{
return q->decode_c(q, llrs, message, q->liftN - 2 * q->ls);
uint32_t cdwd_rm_length = q->liftN - 2 * q->ls;
// Trim input LLR to find last zero
while (llrs[cdwd_rm_length - 1] == 0 && cdwd_rm_length > 0) {
cdwd_rm_length--;
}
return q->decode_c(q, llrs, message, cdwd_rm_length);
}
int srsran_ldpc_decoder_decode_rm_c(srsran_ldpc_decoder_t* q,

@ -315,4 +315,4 @@ uint32_t srsran_csi_str(const srsran_csi_report_cfg_t* report_cfg,
}
}
return len;
}
}

@ -767,7 +767,7 @@ uint32_t srsran_pucch_nr_tx_info(const srsran_pucch_nr_resource_t* resource,
len += pucch_nr_resource_info(resource, &str[len], str_len - len);
len = srsran_print_check(str, str_len, len, ", ");
len = srsran_print_check(str, str_len, len, "rnti=0x%x ", uci_data->cfg.pucch.rnti);
len += srsran_uci_nr_info(uci_data, &str[len], str_len - len);

@ -53,6 +53,8 @@ int pusch_nr_init_common(srsran_pusch_nr_t* q, const srsran_pusch_nr_args_t* arg
return SRSRAN_ERROR;
}
q->meas_time_en = args->measure_time;
return SRSRAN_SUCCESS;
}
@ -97,8 +99,6 @@ int srsran_pusch_nr_init_gnb(srsran_pusch_nr_t* q, const srsran_pusch_nr_args_t*
}
}
q->meas_time_en = args->measure_time;
return SRSRAN_SUCCESS;
}

@ -985,8 +985,6 @@ uint32_t srsran_uci_nr_info(const srsran_uci_data_nr_t* uci_data, char* str, uin
{
uint32_t len = 0;
len = srsran_print_check(str, str_len, len, "rnti=0x%x", uci_data->cfg.pucch.rnti);
if (uci_data->cfg.o_ack > 0) {
char str2[10];
srsran_vec_sprint_bin(str2, 10, uci_data->value.ack, uci_data->cfg.o_ack);
@ -1256,4 +1254,4 @@ int srsran_uci_nr_decode_pusch_csi1(srsran_uci_nr_t* q,
}
return SRSRAN_SUCCESS;
}
}

@ -32,6 +32,7 @@ static uint32_t n_prb = 0; // Set to 0 for steering
static uint32_t mcs = 30; // Set to 30 for steering
static srsran_sch_cfg_nr_t pdsch_cfg = {};
static uint32_t nof_slots = 10;
static uint32_t rv_idx = 0;
static void usage(char* prog)
{
@ -40,6 +41,7 @@ static void usage(char* prog)
printf("\t-p Number of grant PRB, set to 0 for steering [Default %d]\n", n_prb);
printf("\t-n Number of slots to simulate [Default %d]\n", nof_slots);
printf("\t-m MCS PRB, set to >28 for steering [Default %d]\n", mcs);
printf("\t-r Redundancy version, set to >28 for steering [Default %d]\n", mcs);
printf("\t-T Provide MCS table (64qam, 256qam, 64qamLowSE) [Default %s]\n",
srsran_mcs_table_to_str(pdsch_cfg.sch_cfg.mcs_table));
printf("\t-R Reserve RE: [rb_begin] [rb_end] [rb_stride] [sc_mask] [symbol_mask]\n");
@ -50,7 +52,7 @@ static void usage(char* prog)
static int parse_args(int argc, char** argv)
{
int opt;
while ((opt = getopt(argc, argv, "RPpmnTLv")) != -1) {
while ((opt = getopt(argc, argv, "rRPpmnTLv")) != -1) {
switch (opt) {
case 'P':
carrier.nof_prb = (uint32_t)strtol(argv[optind], NULL, 10);
@ -64,6 +66,9 @@ static int parse_args(int argc, char** argv)
case 'm':
mcs = (uint32_t)strtol(argv[optind], NULL, 10);
break;
case 'r':
rv_idx = (uint32_t)strtol(argv[optind], NULL, 10);
break;
case 'T':
pdsch_cfg.sch_cfg.mcs_table = srsran_mcs_table_from_str(argv[optind]);
break;
@ -298,6 +303,7 @@ int main(int argc, char** argv)
pdsch_cfg.grant.nof_dmrs_cdm_groups_without_data = 1;
pdsch_cfg.grant.rnti_type = srsran_rnti_type_c;
pdsch_cfg.grant.rnti = 0x4601;
pdsch_cfg.grant.tb[0].rv = rv_idx;
uint32_t n_prb_start = 1;
uint32_t n_prb_end = carrier.nof_prb + 1;

Loading…
Cancel
Save