From a81ec384663d96bd772f4f24ff369331c7594f07 Mon Sep 17 00:00:00 2001 From: Guy De Souza Date: Tue, 30 Oct 2018 12:00:18 +0100 Subject: [PATCH] Debug info --- openair1/PHY/NR_TRANSPORT/nr_dlsch.c | 62 ++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c index 92321f7744..c6b270bc4f 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c @@ -35,6 +35,7 @@ #include "nr_sch_dmrs.h" #define DEBUG_DLSCH +#define DEBUG_DLSCH_MAPPING uint8_t mod_order[5] = {1, 2, 4, 6, 8}; uint16_t mod_offset[5] = {1,3,7,23,87}; @@ -203,6 +204,20 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t dlsch, /// CRC, coding, interleaving and rate matching nr_dlsch_encoding(harq->pdu, subframe, &dlsch, &frame_parms); +#ifdef DEBUG_DLSCH +printf("PDSCH encoding:\nPayload:\n"); +for (int i=0; i>4; i++) { + for (int j=0; j<16; j++) + printf("0x%02x\t", harq->pdu[(i<<4)+j]); + printf("\n"); +} +printf("\nEncoded payload:\n"); +for (int i=0; i>4; i++) { + for (int j=0; j<16; j++) + printf("0x%02x\t", harq->f[(i<<4)+j]); + printf("\n"); +} +#endif /// scrambling uint16_t n_RNTI = (pdcch_params.search_space_type == NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC)? \ @@ -217,12 +232,13 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t dlsch, n_RNTI, scrambled_output[q]); #ifdef DEBUG_DLSCH -//printf("PDSCH Scrambling(TBS %d): before \t after \n", TBS); -//for (int i=0; if[i], scrambled_output[0][i]); -//} +printf("PDSCH scrambling:\n"); +for (int i=0; i>7; i++) { + for (int j=0; j<8; j++) + printf("0x%08x\t", scrambled_output[0][(i<<3)+j]); + printf("\n"); +} #endif - /// Modulation n_symbs = TBS/Qm; @@ -233,9 +249,9 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t dlsch, mod_symbs[q]); #ifdef DEBUG_DLSCH printf("PDSCH Modulation: Qm %d(%d)\n", Qm, n_symbs); -for (int i=0; i>3; i++) { + for (int j=0; j<8; j++) { + printf("%d %d\t", mod_symbs[0][((i<<3)+j)<<1], mod_symbs[0][(((i<<3)+j)<<1)+1]); } printf("\n"); } @@ -247,6 +263,16 @@ for (int i=0; inb_layers, n_symbs, tx_layers); +#ifdef DEBUG_DLSCH +printf("Layer mapping (%d layers):\n", rel15->nb_layers); +for (int l=0; lnb_layers; l++) + for (int i=0; i>3; i++) { + for (int j=0; j<8; j++) { + printf("%d %d\t", tx_layers[l][((i<<3)+j)<<1], tx_layers[l][(((i<<3)+j)<<1)+1]); + } + printf("\n"); + } +#endif /// Antenna port mapping //to be moved to init phase potentially, for now tx_layers 1-8 are mapped on antenna ports 1000-1007 @@ -257,6 +283,15 @@ for (int i=0; i>3; i++) { + for (int j=0; j<8; j++) { + printf("%d %d\t", mod_dmrs[((i<<3)+j)<<1], mod_dmrs[(((i<<3)+j)<<1)+1]); + } + printf("\n"); +} +#endif /// Resource mapping AssertFatal(rel15->nb_layers<=config.rf_config.tx_antenna_ports.value, "Not enough Tx antennas (%d) for %d layers\n",\ @@ -273,6 +308,9 @@ for (int i=0; i> 15; ((int16_t*)txdataF[ap])[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1] = (Wt[k_prime]*Wf[k_prime]*amp/2*mod_dmrs[(dmrs_idx<<1) + 1]) >> 15; +#ifdef DEBUG_DLSCH_MAPPING +printf("dmrs_idx %d\t l %d \t k %d \t k_prime %d \t n %d \t txdataF: %d %d", +dmrs_idx, l, k, k_prime, n, ((int16_t*)txdataF[ap])[(l*frame_parms.ofdm_symbol_size + k)<<1], ((int16_t*)txdataF[ap])[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1]); +#endif dmrs_idx++; n++; k_prime++; @@ -292,6 +334,10 @@ for (int i=0; i> 15; ((int16_t*)txdataF[ap])[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1] = (amp * tx_layers[ap][(m<<1) + 1]) >> 15; +#ifdef DEBUG_DLSCH_MAPPING +printf("m %d\t l %d \t k %d \t txdataF: %d %d", +m, l, k, ((int16_t*)txdataF[ap])[(l*frame_parms.ofdm_symbol_size + k)<<1], ((int16_t*)txdataF[ap])[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1]); +#endif m++; } }