From 284b7af49c19cbfea3f7d5782b70ca7e2b89c81e Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Sun, 19 Jan 2025 17:43:50 +0100 Subject: [PATCH] more comprehensive modulation lut table generation --- openair1/PHY/NR_REFSIG/nr_gen_mod_table.c | 30 ++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c index 203ca08678..76a89f670b 100644 --- a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c +++ b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c @@ -52,8 +52,8 @@ void nr_generate_modulation_table() { table = (short*) nr_qpsk_byte_mod_table; for (i=0; i<256; i++) { for (j=0; j<4; j++) { - table[i*8+(j*2)] = (short)(1-2*((i>>(j*2))&1))*val*sqrt2*sqrt2; - table[i*8+(j*2)+1] = (short)(1-2*((i>>(j*2+1))&1))*val*sqrt2*sqrt2; + *table++ = (short)(1 - 2 * ((i >> (j * 2)) & 1)) * val * sqrt2 * sqrt2; + *table++ = (short)(1 - 2 * ((i >> (j * 2 + 1)) & 1)) * val * sqrt2 * sqrt2; //printf("%d j%d\n",nr_qpsk_byte_mod_table[i*8+(j*2)],nr_qpsk_byte_mod_table[i*8+(j*2)+1]); } } @@ -62,16 +62,16 @@ void nr_generate_modulation_table() { table = (short*) nr_16qam_byte_mod_table; for (i=0; i<256; i++) { for (j=0; j<2; j++) { - table[i*4+(j*2)] = (short)((1-2*((i>>(j*4))&1))*(2-(1-2*((i>>(j*4+2))&1))))*val*sqrt10*sqrt2; - table[i*4+(j*2)+1] = (short)((1-2*((i>>(j*4+1))&1))*(2-(1-2*((i>>(j*4+3))&1))))*val*sqrt10*sqrt2; - //printf("%d j%d\n",nr_16qam_byte_mod_table[i*4+(j*2)],nr_16qam_byte_mod_table[i*4+(j*2)+1]); + *table++ = (short)((1 - 2 * ((i >> (j * 4)) & 1)) * (2 - (1 - 2 * ((i >> (j * 4 + 2)) & 1)))) * val * sqrt10 * sqrt2; + *table++ = (short)((1 - 2 * ((i >> (j * 4 + 1)) & 1)) * (2 - (1 - 2 * ((i >> (j * 4 + 3)) & 1)))) * val * sqrt10 * sqrt2; + // printf("%d j%d\n",nr_16qam_byte_mod_table[i*4+(j*2)],nr_16qam_byte_mod_table[i*4+(j*2)+1]); } } table = (short*) nr_16qam_mod_table; for (i=0; i<16; i++) { - table[i*2] = (short)((1-2*(i&1))*(2-(1-2*((i>>2)&1))))*val*sqrt10*sqrt2; - table[i*2+1] = (short)((1-2*((i>>1)&1))*(2-(1-2*((i>>3)&1))))*val*sqrt10*sqrt2; + *table++ = (short)((1 - 2 * (i & 1)) * (2 - (1 - 2 * ((i >> 2) & 1)))) * val * sqrt10 * sqrt2; + *table++ = (short)((1 - 2 * ((i >> 1) & 1)) * (2 - (1 - 2 * ((i >> 3) & 1)))) * val * sqrt10 * sqrt2; //printf("%d j%d\n",table[i*2],table[i*2+1]); } @@ -79,8 +79,12 @@ void nr_generate_modulation_table() { table = (short*) nr_64qam_mod_table; for (i=0; i<4096; i++) { for (j=0; j<2; j++) { - table[i*4+(j*2)] = (short)((1-2*((i>>(j*6))&1))*(4-(1-2*((i>>(j*6+2))&1))*(2-(1-2*((i>>(j*6+4))&1)))))*val*sqrt42*sqrt2; - table[i*4+(j*2)+1] = (short)((1-2*((i>>(j*6+1))&1))*(4-(1-2*((i>>(j*6+3))&1))*(2-(1-2*((i>>(j*6+5))&1)))))*val*sqrt42*sqrt2; + *table++ = (short)((1 - 2 * ((i >> (j * 6)) & 1)) + * (4 - (1 - 2 * ((i >> (j * 6 + 2)) & 1)) * (2 - (1 - 2 * ((i >> (j * 6 + 4)) & 1))))) + * val * sqrt42 * sqrt2; + *table++ = (short)((1 - 2 * ((i >> (j * 6 + 1)) & 1)) + * (4 - (1 - 2 * ((i >> (j * 6 + 3)) & 1)) * (2 - (1 - 2 * ((i >> (j * 6 + 5)) & 1))))) + * val * sqrt42 * sqrt2; //printf("%d j%d\n",table[i*4+(j*2)],table[i*4+(j*2)+1]); } } @@ -88,8 +92,12 @@ void nr_generate_modulation_table() { //256QAM table = (short*) nr_256qam_mod_table; for (i=0; i<256; i++) { - table[i*2] = (short)((1-2*(i&1))*(8-(1-2*((i>>2)&1))*(4-(1-2*((i>>4)&1))*(2-(1-2*((i>>6)&1))))))*val*sqrt170*sqrt2; - table[i*2+1] = (short)((1-2*((i>>1)&1))*(8-(1-2*((i>>3)&1))*(4-(1-2*((i>>5)&1))*(2-(1-2*((i>>7)&1))))))*val*sqrt170*sqrt2; + *table++ = (short)((1 - 2 * (i & 1)) + * (8 - (1 - 2 * ((i >> 2) & 1)) * (4 - (1 - 2 * ((i >> 4) & 1)) * (2 - (1 - 2 * ((i >> 6) & 1)))))) + * val * sqrt170 * sqrt2; + *table++ = (short)((1 - 2 * ((i >> 1) & 1)) + * (8 - (1 - 2 * ((i >> 3) & 1)) * (4 - (1 - 2 * ((i >> 5) & 1)) * (2 - (1 - 2 * ((i >> 7) & 1)))))) + * val * sqrt170 * sqrt2; } }