diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index 289ac1df5f..e0a4254563 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -29,20 +29,36 @@ void nr_modulation(uint32_t *in, int16_t *out) { uint16_t offset; - uint8_t idx, b_idx; + uint16_t mask = ((1<>(i*mod_order)) & mask); + if (mod_order==6) { + uint16_t u = 1; + uint8_t shift_lut[3] = {0, 2, 4}; + 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]<>((i*mod_order)&0x1f)) & mask); + + out[i<<1] = nr_mod_table[(offset+idx)<<1]; + out[(i<<1)+1] = nr_mod_table[((offset+idx)<<1)+1]; + } } }