From 82df0e51b92839888109688f5d4b2eae08a11d14 Mon Sep 17 00:00:00 2001 From: Sakthivel Velumani Date: Mon, 10 Aug 2020 15:19:53 +0200 Subject: [PATCH] updated tables and 64qam mod --- cmake_targets/CMakeLists.txt | 1 + openair1/PHY/INIT/nr_init.c | 1 + openair1/PHY/MODULATION/nr_modulation.c | 113 ++++++++++++++++++------ openair1/PHY/NR_REFSIG/nr_mod_table.h | 11 ++- openair1/PHY/NR_REFSIG/nr_refsig.h | 2 + openair1/PHY/NR_TRANSPORT/nr_dlsch.c | 2 +- openair1/SIMULATION/NR_PHY/dlsim.c | 33 +++---- 7 files changed, 116 insertions(+), 47 deletions(-) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 0b60172747..23490ce9f6 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1543,6 +1543,7 @@ set(PHY_SRC_UE ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c + ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 9e095d5ab5..136092f2d4 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -132,6 +132,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, } } + nr_generate_modulation_table(); nr_init_pdcch_dmrs(gNB, cfg->cell_config.phy_cell_id.value); nr_init_pbch_interleaver(gNB->nr_pbch_interleaver); //PDSCH DMRS init diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index ee880f8c2a..dc3934ffca 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -34,64 +34,123 @@ void nr_modulation(uint32_t *in, int32_t* nr_mod_table32; int32_t* out32 = (int32_t*) out; uint8_t* in_bytes = (uint8_t*) in; + uint64_t* in64 = (uint64_t*) in; + int64_t* out64 = (int64_t*) out; uint8_t idx; - uint16_t u = 1; - uint8_t shift_lut[3] = {0, 2, 4}; + uint32_t i,j; + uint32_t bit_cnt; + uint64_t x,x1,x2; -#if defined(__SSE2__) +#if defined(__AVX2__) + uint16_t *in_2bytes = (uint16_t*) in; + __m256i *nr_mod_table256; + __m256i *out256; +#elif defined(__SSE2__) __m128i *nr_mod_table128; __m128i *out128; - __m64 *nr_mod_table64; - __m64 *out64; #endif offset = (mod_order==2)? NR_MOD_TABLE_QPSK_OFFSET : (mod_order==4)? NR_MOD_TABLE_QAM16_OFFSET : \ (mod_order==6)? NR_MOD_TABLE_QAM64_OFFSET: (mod_order==8)? NR_MOD_TABLE_QAM256_OFFSET : 0; - LOG_D(PHY,"nr_modulation: length %d, mod_order %d\n",length,mod_order); + LOG_I(PHY,"nr_modulation: length %d, mod_order %d\n",length,mod_order); switch (mod_order) { case 6: - nr_mod_table32 = (int32_t*) nr_mod_table; - for (int i=0; i>((i*mod_order)&0x1f)) & mask); - if ((((i+1)*mod_order)>32*u) && (i!=0)) - idx |= (in[(i*mod_order/32)+1]<>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = (x>>60); + x = in64[i*3+1]; + x2 |= x<<4; + x1 = x2&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = ((x>>56)&0xf0) | (x2>>60); + x = in64[i*3+2]; + x2 |= x<<8; + x1 = x2&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = ((x>>52)&0xff0) | (x2>>60); + out64[j++] = nr_64qam_mod_table[x2]; + } + i *= 24; + bit_cnt = i * 8; + while (bit_cnt < length) { + x = *((uint32_t*)(in_bytes+i)); + x1 = x&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + i += 3; + bit_cnt += 24; } return; - + case 8: nr_mod_table32 = (int32_t*) nr_mod_table; - for (int i=0; i>((i*mod_order)&0x1f)) & mask); diff --git a/openair1/PHY/NR_REFSIG/nr_mod_table.h b/openair1/PHY/NR_REFSIG/nr_mod_table.h index f644e86359..d42f211e8e 100644 --- a/openair1/PHY/NR_REFSIG/nr_mod_table.h +++ b/openair1/PHY/NR_REFSIG/nr_mod_table.h @@ -28,10 +28,15 @@ #define NR_MOD_TABLE_QAM16_OFFSET 7 #define NR_MOD_TABLE_QAM64_OFFSET 23 #define NR_MOD_TABLE_QAM256_OFFSET 87 -short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT] = {0,0,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,7327,7327,-7327,7327,7327,-7327,-7327,-7327,21981,7327,-21981,7327,21981,-7327,-21981,-7327,7327,21981,-7327,21981,7327,-21981,-7327,-21981,21981,21981,-21981,21981,21981,-21981,-21981,-21981,10726,10726,-10726,10726,10726,-10726,-10726,-10726,17876,10726,-17876,10726,17876,-10726,-17876,-10726,10726,17876,-10726,17876,10726,-17876,-10726,-17876,17876,17876,-17876,17876,17876,-17876,-17876,-17876,3576,10726,-3576,10726,3576,-10726,-3576,-10726,25027,10726,-25027,10726,25027,-10726,-25027,-10726,3576,17876,-3576,17876,3576,-17876,-3576,-17876,25027,17876,-25027,17876,25027,-17876,-25027,-17876,10726,3576,-10726,3576,10726,-3576,-10726,-3576,17876,3576,-17876,3576,17876,-3576,-17876,-3576,10726,25027,-10726,25027,10726,-25027,-10726,-25027,17876,25027,-17876,25027,17876,-25027,-17876,-25027,3576,3576,-3576,3576,3576,-3576,-3576,-3576,25027,3576,-25027,3576,25027,-3576,-25027,-3576,3576,25027,-3576,25027,3576,-25027,-3576,-25027,25027,25027,-25027,25027,25027,-25027,-25027,-25027,8886,8886,-8886,8886,8886,-8886,-8886,-8886,19547,8886,-19547,8886,19547,-8886,-19547,-8886,8886,19547,-8886,19547,8886,-19547,-8886,-19547,19547,19547,-19547,19547,19547,-19547,-19547,-19547,5332,8886,-5332,8886,5332,-8886,-5332,-8886,23101,8886,-23101,8886,23101,-8886,-23101,-8886,5332,19547,-5332,19547,5332,-19547,-5332,-19547,23101,19547,-23101,19547,23101,-19547,-23101,-19547,8886,5332,-8886,5332,8886,-5332,-8886,-5332,19547,5332,-19547,5332,19547,-5332,-19547,-5332,8886,23101,-8886,23101,8886,-23101,-8886,-23101,19547,23101,-19547,23101,19547,-23101,-19547,-23101,5332,5332,-5332,5332,5332,-5332,-5332,-5332,23101,5332,-23101,5332,23101,-5332,-23101,-5332,5332,23101,-5332,23101,5332,-23101,-5332,-23101,23101,23101,-23101,23101,23101,-23101,-23101,-23101,12439,8886,-12439,8886,12439,-8886,-12439,-8886,15993,8886,-15993,8886,15993,-8886,-15993,-8886,12439,19547,-12439,19547,12439,-19547,-12439,-19547,15993,19547,-15993,19547,15993,-19547,-15993,-19547,1778,8886,-1778,8886,1778,-8886,-1778,-8886,26655,8886,-26655,8886,26655,-8886,-26655,-8886,1778,19547,-1778,19547,1778,-19547,-1778,-19547,26655,19547,-26655,19547,26655,-19547,-26655,-19547,12439,5332,-12439,5332,12439,-5332,-12439,-5332,15993,5332,-15993,5332,15993,-5332,-15993,-5332,12439,23101,-12439,23101,12439,-23101,-12439,-23101,15993,23101,-15993,23101,15993,-23101,-15993,-23101,1778,5332,-1778,5332,1778,-5332,-1778,-5332,26655,5332,-26655,5332,26655,-5332,-26655,-5332,1778,23101,-1778,23101,1778,-23101,-1778,-23101,26655,23101,-26655,23101,26655,-23101,-26655,-23101,8886,12439,-8886,12439,8886,-12439,-8886,-12439,19547,12439,-19547,12439,19547,-12439,-19547,-12439,8886,15993,-8886,15993,8886,-15993,-8886,-15993,19547,15993,-19547,15993,19547,-15993,-19547,-15993,5332,12439,-5332,12439,5332,-12439,-5332,-12439,23101,12439,-23101,12439,23101,-12439,-23101,-12439,5332,15993,-5332,15993,5332,-15993,-5332,-15993,23101,15993,-23101,15993,23101,-15993,-23101,-15993,8886,1778,-8886,1778,8886,-1778,-8886,-1778,19547,1778,-19547,1778,19547,-1778,-19547,-1778,8886,26655,-8886,26655,8886,-26655,-8886,-26655,19547,26655,-19547,26655,19547,-26655,-19547,-26655,5332,1778,-5332,1778,5332,-1778,-5332,-1778,23101,1778,-23101,1778,23101,-1778,-23101,-1778,5332,26655,-5332,26655,5332,-26655,-5332,-26655,23101,26655,-23101,26655,23101,-26655,-23101,-26655,12439,12439,-12439,12439,12439,-12439,-12439,-12439,15993,12439,-15993,12439,15993,-12439,-15993,-12439,12439,15993,-12439,15993,12439,-15993,-12439,-15993,15993,15993,-15993,15993,15993,-15993,-15993,-15993,1778,12439,-1778,12439,1778,-12439,-1778,-12439,26655,12439,-26655,12439,26655,-12439,-26655,-12439,1778,15993,-1778,15993,1778,-15993,-1778,-15993,26655,15993,-26655,15993,26655,-15993,-26655,-15993,12439,1778,-12439,1778,12439,-1778,-12439,-1778,15993,1778,-15993,1778,15993,-1778,-15993,-1778,12439,26655,-12439,26655,12439,-26655,-12439,-26655,15993,26655,-15993,26655,15993,-26655,-15993,-26655,1778,1778,-1778,1778,1778,-1778,-1778,-1778,26655,1778,-26655,1778,26655,-1778,-26655,-1778,1778,26655,-1778,26655,1778,-26655,-1778,-26655,26655,26655,-26655,26655,26655,-26655,-26655,-26655}; +short nr_qpsk_mod_table[8] = {16384,16384,-16384,16384,16384,-16384,-16384,-16384}; +#if defined(__AVX2__) +__m256i nr_qpsk_2byte_mod_table[65536]; +#elif defined(__SSE2__) +__m128i nr_qpsk_byte_mod_table[2048]; +#endif -short nr_qpsk_byte_mod_table[2048] = {16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,16384,16384,16384,-16384,-16384,16384,16384,16384,16384,16384,16384,-16384,16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384,-16384}; +int64_t nr_16qam_byte_mod_table[1024]; -short nr_qam16_byte_mod_table[1024] = {7327,7327,7327,7327,-7327,7327,7327,7327,7327,-7327,7327,7327,-7327,-7327,7327,7327,21981,7327,7327,7327,-21981,7327,7327,7327,21981,-7327,7327,7327,-21981,-7327,7327,7327,7327,21981,7327,7327,-7327,21981,7327,7327,7327,-21981,7327,7327,-7327,-21981,7327,7327,21981,21981,7327,7327,-21981,21981,7327,7327,21981,-21981,7327,7327,-21981,-21981,7327,7327,7327,7327,-7327,7327,-7327,7327,-7327,7327,7327,-7327,-7327,7327,-7327,-7327,-7327,7327,21981,7327,-7327,7327,-21981,7327,-7327,7327,21981,-7327,-7327,7327,-21981,-7327,-7327,7327,7327,21981,-7327,7327,-7327,21981,-7327,7327,7327,-21981,-7327,7327,-7327,-21981,-7327,7327,21981,21981,-7327,7327,-21981,21981,-7327,7327,21981,-21981,-7327,7327,-21981,-21981,-7327,7327,7327,7327,7327,-7327,-7327,7327,7327,-7327,7327,-7327,7327,-7327,-7327,-7327,7327,-7327,21981,7327,7327,-7327,-21981,7327,7327,-7327,21981,-7327,7327,-7327,-21981,-7327,7327,-7327,7327,21981,7327,-7327,-7327,21981,7327,-7327,7327,-21981,7327,-7327,-7327,-21981,7327,-7327,21981,21981,7327,-7327,-21981,21981,7327,-7327,21981,-21981,7327,-7327,-21981,-21981,7327,-7327,7327,7327,-7327,-7327,-7327,7327,-7327,-7327,7327,-7327,-7327,-7327,-7327,-7327,-7327,-7327,21981,7327,-7327,-7327,-21981,7327,-7327,-7327,21981,-7327,-7327,-7327,-21981,-7327,-7327,-7327,7327,21981,-7327,-7327,-7327,21981,-7327,-7327,7327,-21981,-7327,-7327,-7327,-21981,-7327,-7327,21981,21981,-7327,-7327,-21981,21981,-7327,-7327,21981,-21981,-7327,-7327,-21981,-21981,-7327,-7327,7327,7327,21981,7327,-7327,7327,21981,7327,7327,-7327,21981,7327,-7327,-7327,21981,7327,21981,7327,21981,7327,-21981,7327,21981,7327,21981,-7327,21981,7327,-21981,-7327,21981,7327,7327,21981,21981,7327,-7327,21981,21981,7327,7327,-21981,21981,7327,-7327,-21981,21981,7327,21981,21981,21981,7327,-21981,21981,21981,7327,21981,-21981,21981,7327,-21981,-21981,21981,7327,7327,7327,-21981,7327,-7327,7327,-21981,7327,7327,-7327,-21981,7327,-7327,-7327,-21981,7327,21981,7327,-21981,7327,-21981,7327,-21981,7327,21981,-7327,-21981,7327,-21981,-7327,-21981,7327,7327,21981,-21981,7327,-7327,21981,-21981,7327,7327,-21981,-21981,7327,-7327,-21981,-21981,7327,21981,21981,-21981,7327,-21981,21981,-21981,7327,21981,-21981,-21981,7327,-21981,-21981,-21981,7327,7327,7327,21981,-7327,-7327,7327,21981,-7327,7327,-7327,21981,-7327,-7327,-7327,21981,-7327,21981,7327,21981,-7327,-21981,7327,21981,-7327,21981,-7327,21981,-7327,-21981,-7327,21981,-7327,7327,21981,21981,-7327,-7327,21981,21981,-7327,7327,-21981,21981,-7327,-7327,-21981,21981,-7327,21981,21981,21981,-7327,-21981,21981,21981,-7327,21981,-21981,21981,-7327,-21981,-21981,21981,-7327,7327,7327,-21981,-7327,-7327,7327,-21981,-7327,7327,-7327,-21981,-7327,-7327,-7327,-21981,-7327,21981,7327,-21981,-7327,-21981,7327,-21981,-7327,21981,-7327,-21981,-7327,-21981,-7327,-21981,-7327,7327,21981,-21981,-7327,-7327,21981,-21981,-7327,7327,-21981,-21981,-7327,-7327,-21981,-21981,-7327,21981,21981,-21981,-7327,-21981,21981,-21981,-7327,21981,-21981,-21981,-7327,-21981,-21981,-21981,-7327,7327,7327,7327,21981,-7327,7327,7327,21981,7327,-7327,7327,21981,-7327,-7327,7327,21981,21981,7327,7327,21981,-21981,7327,7327,21981,21981,-7327,7327,21981,-21981,-7327,7327,21981,7327,21981,7327,21981,-7327,21981,7327,21981,7327,-21981,7327,21981,-7327,-21981,7327,21981,21981,21981,7327,21981,-21981,21981,7327,21981,21981,-21981,7327,21981,-21981,-21981,7327,21981,7327,7327,-7327,21981,-7327,7327,-7327,21981,7327,-7327,-7327,21981,-7327,-7327,-7327,21981,21981,7327,-7327,21981,-21981,7327,-7327,21981,21981,-7327,-7327,21981,-21981,-7327,-7327,21981,7327,21981,-7327,21981,-7327,21981,-7327,21981,7327,-21981,-7327,21981,-7327,-21981,-7327,21981,21981,21981,-7327,21981,-21981,21981,-7327,21981,21981,-21981,-7327,21981,-21981,-21981,-7327,21981,7327,7327,7327,-21981,-7327,7327,7327,-21981,7327,-7327,7327,-21981,-7327,-7327,7327,-21981,21981,7327,7327,-21981,-21981,7327,7327,-21981,21981,-7327,7327,-21981,-21981,-7327,7327,-21981,7327,21981,7327,-21981,-7327,21981,7327,-21981,7327,-21981,7327,-21981,-7327,-21981,7327,-21981,21981,21981,7327,-21981,-21981,21981,7327,-21981,21981,-21981,7327,-21981,-21981,-21981,7327,-21981,7327,7327,-7327,-21981,-7327,7327,-7327,-21981,7327,-7327,-7327,-21981,-7327,-7327,-7327,-21981,21981,7327,-7327,-21981,-21981,7327,-7327,-21981,21981,-7327,-7327,-21981,-21981,-7327,-7327,-21981,7327,21981,-7327,-21981,-7327,21981,-7327,-21981,7327,-21981,-7327,-21981,-7327,-21981,-7327,-21981,21981,21981,-7327,-21981,-21981,21981,-7327,-21981,21981,-21981,-7327,-21981,-21981,-21981,-7327,-21981,7327,7327,21981,21981,-7327,7327,21981,21981,7327,-7327,21981,21981,-7327,-7327,21981,21981,21981,7327,21981,21981,-21981,7327,21981,21981,21981,-7327,21981,21981,-21981,-7327,21981,21981,7327,21981,21981,21981,-7327,21981,21981,21981,7327,-21981,21981,21981,-7327,-21981,21981,21981,21981,21981,21981,21981,-21981,21981,21981,21981,21981,-21981,21981,21981,-21981,-21981,21981,21981,7327,7327,-21981,21981,-7327,7327,-21981,21981,7327,-7327,-21981,21981,-7327,-7327,-21981,21981,21981,7327,-21981,21981,-21981,7327,-21981,21981,21981,-7327,-21981,21981,-21981,-7327,-21981,21981,7327,21981,-21981,21981,-7327,21981,-21981,21981,7327,-21981,-21981,21981,-7327,-21981,-21981,21981,21981,21981,-21981,21981,-21981,21981,-21981,21981,21981,-21981,-21981,21981,-21981,-21981,-21981,21981,7327,7327,21981,-21981,-7327,7327,21981,-21981,7327,-7327,21981,-21981,-7327,-7327,21981,-21981,21981,7327,21981,-21981,-21981,7327,21981,-21981,21981,-7327,21981,-21981,-21981,-7327,21981,-21981,7327,21981,21981,-21981,-7327,21981,21981,-21981,7327,-21981,21981,-21981,-7327,-21981,21981,-21981,21981,21981,21981,-21981,-21981,21981,21981,-21981,21981,-21981,21981,-21981,-21981,-21981,21981,-21981,7327,7327,-21981,-21981,-7327,7327,-21981,-21981,7327,-7327,-21981,-21981,-7327,-7327,-21981,-21981,21981,7327,-21981,-21981,-21981,7327,-21981,-21981,21981,-7327,-21981,-21981,-21981,-7327,-21981,-21981,7327,21981,-21981,-21981,-7327,21981,-21981,-21981,7327,-21981,-21981,-21981,-7327,-21981,-21981,-21981,21981,21981,-21981,-21981,-21981,21981,-21981,-21981,21981,-21981,-21981,-21981,-21981,-21981,-21981,-21981}; +int64_t nr_64qam_mod_table[4096]; #endif diff --git a/openair1/PHY/NR_REFSIG/nr_refsig.h b/openair1/PHY/NR_REFSIG/nr_refsig.h index 1bf2ef4fb2..786fb2af35 100644 --- a/openair1/PHY/NR_REFSIG/nr_refsig.h +++ b/openair1/PHY/NR_REFSIG/nr_refsig.h @@ -53,6 +53,8 @@ int nr_pusch_dmrs_rx(PHY_VARS_gNB *gNB, void init_scrambling_luts(void); +void nr_generate_modulation_table(void); + extern __m64 byte2m64_re[256]; extern __m64 byte2m64_im[256]; diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c index 23466132d6..ac5a126276 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c @@ -150,7 +150,7 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch, nb_re = ((12*rel15->NrOfSymbols)-nb_re_dmrs-xOverhead)*rel15->rbSize*rel15->NrOfCodewords; uint8_t Qm = rel15->qamModOrder[0]; uint32_t encoded_length = nb_re*Qm; - int16_t mod_dmrs[n_dmrs<<1]; + int16_t mod_dmrs[n_dmrs<<1] __attribute__ ((aligned(256))); /// CRC, coding, interleaving and rate matching AssertFatal(harq->pdu!=NULL,"harq->pdu is null\n"); diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index 90aa3f6333..64ab482db8 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -926,22 +926,6 @@ int main(int argc, char **argv) printf("SNR %f : n_errors (negative CRC) = %d/%d, Avg round %.2f, Channel BER %e, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %d bits/slot\n", SNR, n_errors, n_trials,roundStats[snrRun],(double)errors_scrambling/available_bits/n_trials,effRate,effRate/TBS*100,TBS); printf("\n"); - if (n_trials == 1) { - - LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0], frame_length_complex_samples, 1, 1); - if (UE->frame_parms.nb_antennas_rx>1) - LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, 1, 1); - LOG_M("chestF0.m","chF0",UE->pdsch_vars[0][0]->dl_ch_estimates_ext,N_RB_DL*12*14,1,1); - write_output("rxF_comp.m","rxFc",&UE->pdsch_vars[0][0]->rxdataF_comp0[0][0],N_RB_DL*12*14,1,1); - break; - } - - //if ((float)n_errors/(float)n_trials <= target_error_rate) { - if (effRate >= (eff_tp_check*TBS)) { - printf("PDSCH test OK\n"); - break; - } - if (print_perf==1) { printf("\ngNB TX function statistics (per %d us slot, NPRB %d, mcs %d, TBS %d, Kr %d (Zc %d))\n", 1000>>*scc->ssbSubcarrierSpacing,dlsch_config.rbSize,dlsch_config.mcsIndex[0], @@ -992,6 +976,23 @@ int main(int argc, char **argv) printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC"); */ } + + if (n_trials == 1) { + + LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0], frame_length_complex_samples, 1, 1); + if (UE->frame_parms.nb_antennas_rx>1) + LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, 1, 1); + LOG_M("chestF0.m","chF0",UE->pdsch_vars[0][0]->dl_ch_estimates_ext,N_RB_DL*12*14,1,1); + write_output("rxF_comp.m","rxFc",&UE->pdsch_vars[0][0]->rxdataF_comp0[0][0],N_RB_DL*12*14,1,1); + break; + } + + //if ((float)n_errors/(float)n_trials <= target_error_rate) { + if (effRate >= (eff_tp_check*TBS)) { + printf("PDSCH test OK\n"); + break; + } + snrRun++; } // NSR