Hello,
We are students
from UPC, we are working with ALOE++-0.2 and trying to improve it by
using a higher bit/symbol modulation like QAM16 and QAM64 and also by
using larger FFT sizes.
Now, our goal is to achieve a QAM16 modulation. We saw that
PDCCH already implements the transmision of the used MCS so Rx knows how
to demodulate the signal, but we got BLER=1. That being said, we
investigated what was not implemented for this modulation in each block.
We think the problem can be in the scrambling or the ratematching.
However, we checked how the CRC module works and we find out something
strange.
When working with the default configuration of
osld.app (version provided at
http://flexnets.github.io/aloe/)
and changing a bit the code of gen_crc.c for printing the input and
output of the CRC, we found out that when some bits are send
(1001010101110) we receive only zeros (000000000) so the CRC return a
n=0 meaning that there are no error, which is the problem, because all
the bits are receive wrong.
Thanks for reading.
Best regards,
Raúl Suárez
We attach the configuration of the
osld.app for a quick view of your part if it's possible.
ctrl:
{
binary="modrep_osld/liblte_
ctrl.so";
mopts=100;
variables=(
{name="nof_output_data_itf";value=0},
{name="mode";value=2}, /* 0 tx, 1 rx, 2 both */
{name="mcs_tx";value=20},{name="nof_rbg_tx";value=6},{name="rbg_mask_tx";value=0x3f},
{name="nof_prb_tx";value=6},
{name="cfi_tx";value=1},
{name="divide";value=0},
{name="cfi_rx";value=-1},
{name="subframe_rx";value=-1},
{name="mcs_rx";value=-1},
{name="nof_rbg_rx";value=-1},
{name="nof_prb_rx";value=-1},
{name="sfn_rx";value=-1},
{name="rbg_mask_rx";value=0},
{name="nof_ports";value=1},
{name="cell_id";value=0},{name="nof_osymb_x_subf";value=14},
{name="delay_synchro_pss";value=0},
{name="delay_synchro_sss";value=0},
{name="delay_equalizer";value=0},
{name="delay_resdemapp_pbch";value=0},
{name="delay_pbch_rx_descrambling";value=0},
{name="delay_resdemapp_pcfich";value=0},
{name="delay_resdemapp_pdsch";value=0},
{name="delay_pcfich_rx_descrambling";value=0},
{name="delay_resdemapp_pdcch";value=0},
{name="delay_pdcch_rx_descrambling";value=0},
{name="delay_pdsch_rx_demodulator";value=0},
{name="delay_pdsch_rx_descrambling";value=0},
{name="delay_pdsch_rx_unratematching";value=0},
{name="delay_resdemapp_pdsch";value=0}
);
};
We also attach what the selfmade debug code shows us
('n' in Rx is 0, but not because everything is OK but because all bits
are 0):
Tx
111101111111000011010101001100
111000111000010010111101000000011111110011110101110010010010011111
000011101111010011011110110101001010100000101010110001101111010111001011000101000001111000001000
100001010000100101000101101001011100001001110100010101001100111001001111100111100010110001010000
100101011101011010001111011011011001000110010111100011010110011111111111010010100111010101100011
101000101000011010111101011010101011001001000101111001101000101000110011111110101010100011101001
010011101110100001000101011111010101011100111001101110011101010000100000110010110100111000111011
011011101100101110101101100000101010001111101110110001111011001100100011011101010010101000100110
111010111111010011010110111100111011110001000000001010001111001110001101001111111010010011110001
111001000111100001110111100111000100000000110111000101011100000011011001010110010000111001101100
000000111000000000111011001101001000001101001001010001100110010011011111011111011011111100100001
101010111000101001100010110111001101110011001010100111100111011011100111010011001010100001101100
0101110110101111101110111010100011100101
ESTADO2:0,
Rx
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
ESTADO2:1, n=0
We also attach the code we used to print this. Note that we used an extra param that we get from the
pdsch.app file.
param_get_int_name("debug", &soyyo);
if (soyyo == 1) {
if(mode==0)printf("Tx\n");
if(mode==1)printf("Rx\n");
for(i=1; i<(rcv_samples+1);i++){
if(i%96 != 0)printf("%d", *(input+i-1));
else printf("%d\n", *(input+i-1));
}
printf("\n");
}
n = icrc(0, input, rcv_samples, long_crc, poly, mode == MODE_ADD);
if (soyyo == 1) printf("ESTADO2:%d, n=%d\n", mode, n);
if (mode==MODE_CHECK) {
{default code here}