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) 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, int srsran_ldpc_decoder_decode_rm_c(srsran_ldpc_decoder_t* q,

@ -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 += 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); 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; return SRSRAN_ERROR;
} }
q->meas_time_en = args->measure_time;
return SRSRAN_SUCCESS; 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; 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; 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) { if (uci_data->cfg.o_ack > 0) {
char str2[10]; char str2[10];
srsran_vec_sprint_bin(str2, 10, uci_data->value.ack, uci_data->cfg.o_ack); srsran_vec_sprint_bin(str2, 10, uci_data->value.ack, uci_data->cfg.o_ack);

@ -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 uint32_t mcs = 30; // Set to 30 for steering
static srsran_sch_cfg_nr_t pdsch_cfg = {}; static srsran_sch_cfg_nr_t pdsch_cfg = {};
static uint32_t nof_slots = 10; static uint32_t nof_slots = 10;
static uint32_t rv_idx = 0;
static void usage(char* prog) 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-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-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-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", printf("\t-T Provide MCS table (64qam, 256qam, 64qamLowSE) [Default %s]\n",
srsran_mcs_table_to_str(pdsch_cfg.sch_cfg.mcs_table)); 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"); 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) static int parse_args(int argc, char** argv)
{ {
int opt; int opt;
while ((opt = getopt(argc, argv, "RPpmnTLv")) != -1) { while ((opt = getopt(argc, argv, "rRPpmnTLv")) != -1) {
switch (opt) { switch (opt) {
case 'P': case 'P':
carrier.nof_prb = (uint32_t)strtol(argv[optind], NULL, 10); carrier.nof_prb = (uint32_t)strtol(argv[optind], NULL, 10);
@ -64,6 +66,9 @@ static int parse_args(int argc, char** argv)
case 'm': case 'm':
mcs = (uint32_t)strtol(argv[optind], NULL, 10); mcs = (uint32_t)strtol(argv[optind], NULL, 10);
break; break;
case 'r':
rv_idx = (uint32_t)strtol(argv[optind], NULL, 10);
break;
case 'T': case 'T':
pdsch_cfg.sch_cfg.mcs_table = srsran_mcs_table_from_str(argv[optind]); pdsch_cfg.sch_cfg.mcs_table = srsran_mcs_table_from_str(argv[optind]);
break; break;
@ -298,6 +303,7 @@ int main(int argc, char** argv)
pdsch_cfg.grant.nof_dmrs_cdm_groups_without_data = 1; pdsch_cfg.grant.nof_dmrs_cdm_groups_without_data = 1;
pdsch_cfg.grant.rnti_type = srsran_rnti_type_c; pdsch_cfg.grant.rnti_type = srsran_rnti_type_c;
pdsch_cfg.grant.rnti = 0x4601; pdsch_cfg.grant.rnti = 0x4601;
pdsch_cfg.grant.tb[0].rv = rv_idx;
uint32_t n_prb_start = 1; uint32_t n_prb_start = 1;
uint32_t n_prb_end = carrier.nof_prb + 1; uint32_t n_prb_end = carrier.nof_prb + 1;

Loading…
Cancel
Save