From 17f5a8038793fb5d7e9f749d82c5fd4e95902695 Mon Sep 17 00:00:00 2001 From: Hongzhi Wang Date: Thu, 14 Nov 2019 15:16:21 +0100 Subject: [PATCH 1/3] ldpc encoder bg2 bug fix --- .../PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c | 30 +++++++++++-------- .../ldpc_generate_coefficient.c | 9 +++--- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c index 2b6d1b07a3..0e5a40d081 100644 --- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c +++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c @@ -202,7 +202,7 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,in { short nrows=0,ncols=0; - int i,i1; + int i,i1,rate=3; int no_punctured_columns,removed_bit; int simd_size; @@ -214,6 +214,7 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,in //BG=1; nrows=46; //parity check bits ncols=22; //info bits + rate=3; } //else if (block_length<=3840) else if (BG==2) @@ -221,6 +222,7 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,in //BG=2; nrows=42; //parity check bits ncols=10; // info bits + rate=5; } @@ -239,8 +241,8 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,in unsigned char c_extension[2*22*Zc*simd_size] __attribute__((aligned(32))); //double size matrix of c // calculate number of punctured bits - no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc; - removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*3); + no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; + removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*rate); // printf("%d\n",no_punctured_columns); // printf("%d\n",removed_bit); // unpack input @@ -297,7 +299,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i { short nrows=0,ncols=0; - int i,i1,j; + int i,i1,j,rate=3; int no_punctured_columns,removed_bit; char temp; int simd_size; @@ -326,6 +328,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i { nrows=46; //parity check bits ncols=22; //info bits + rate=3; } //else if (block_length<=3840) else if (BG==2) @@ -333,7 +336,8 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i //BG=2; nrows=42; //parity check bits ncols=10; // info bits - + rate=5; + } #ifdef DEBUG_LDPC @@ -352,8 +356,8 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i unsigned char c_extension[2*22*Zc*simd_size] __attribute__((aligned(32))); //double size matrix of c // calculate number of punctured bits - no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc; - removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*3); + no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; + removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*rate); // printf("%d\n",no_punctured_columns); // printf("%d\n",removed_bit); // unpack input @@ -473,7 +477,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha { short nrows=0,ncols=0; - int i,i1,j; + int i,i1,j,rate=3; int no_punctured_columns,removed_bit; //Table of possible lifting sizes char temp; @@ -509,11 +513,13 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha { nrows=46; //parity check bits ncols=22; //info bits + rate=3; } else if (BG==2) { nrows=42; //parity check bits ncols=10; // info bits + rate=5; } #ifdef DEBUG_LDPC @@ -532,10 +538,10 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha unsigned char c_extension[2*22*Zc*simd_size] __attribute__((aligned(32))); //double size matrix of c // calculate number of punctured bits - no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc; - removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*3); - // printf("%d\n",no_punctured_columns); - // printf("%d\n",removed_bit); + no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; + removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*rate); + printf("%d\n",no_punctured_columns); + printf("%d\n",removed_bit); // unpack input memset(c,0,sizeof(unsigned char) * ncols * Zc); memset(d,0,sizeof(unsigned char) * nrows * Zc); diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_generate_coefficient.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_generate_coefficient.c index 235badc2e0..5da223dc64 100644 --- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_generate_coefficient.c +++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_generate_coefficient.c @@ -373,7 +373,7 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,int int i,i1,i2,i3,i4,i5,temp_prime,var; - int no_punctured_columns,removed_bit; + int no_punctured_columns,removed_bit,rate=3; int nind=0; int indlist[1000]; int indlist2[1000]; @@ -384,6 +384,7 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,int { nrows=46; //parity check bits ncols=22; //info bits + rate=3; } //else if (block_length<=3840) else if (BG==2) @@ -391,7 +392,7 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,int //BG=2; nrows=42; //parity check bits ncols=10; // info bits - + rate=5; } Gen_shift_values=choose_generator_matrix(BG,Zc); @@ -417,8 +418,8 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,int AssertFatal(0,"BG %d is not supported yet\n",BG); } - no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc; - removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(block_length*3); + no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; + removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(block_length*rate); //printf("%d\n",no_punctured_columns); //printf("%d\n",removed_bit); // unpack input From feb461bafb55896c24aff51de45f91763e2cb058 Mon Sep 17 00:00:00 2001 From: Hongzhi Wang Date: Thu, 14 Nov 2019 16:25:23 +0100 Subject: [PATCH 2/3] add missing fix for bg2 --- openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c index a225730845..6ded22d8ca 100644 --- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c +++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c @@ -46,7 +46,7 @@ int encode_parity_check_part_orig(unsigned char *c,unsigned char *d, short BG,sh short *Gen_shift_values=choose_generator_matrix(BG,Zc); short *no_shift_values, *pointer_shift_values; int no_punctured_columns; - short nrows,ncols; + short nrows,ncols,rate=3; int i1,i2,i3,i4,i5,temp_prime; unsigned char channel_temp,temp; @@ -56,6 +56,7 @@ int encode_parity_check_part_orig(unsigned char *c,unsigned char *d, short BG,sh pointer_shift_values=(short *) pointer_shift_values_BG1; nrows=46; //parity check bits ncols=22; //info bits + rate=3; } else if (BG==2) { @@ -63,6 +64,7 @@ int encode_parity_check_part_orig(unsigned char *c,unsigned char *d, short BG,sh pointer_shift_values=(short *) pointer_shift_values_BG2; nrows=42; //parity check bits ncols=10; //info bits + rate=5; } else { printf("problem with BG\n"); @@ -70,7 +72,7 @@ int encode_parity_check_part_orig(unsigned char *c,unsigned char *d, short BG,sh } - no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc; + no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; //printf("no_punctured_columns = %d\n",no_punctured_columns); From e2b77c3edb776e42704311269364b200d144e464 Mon Sep 17 00:00:00 2001 From: Francesco Mani Date: Fri, 15 Nov 2019 09:27:02 +0100 Subject: [PATCH 3/3] removing printf --- openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c index 0e5a40d081..fb516549ed 100644 --- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c +++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c @@ -540,8 +540,8 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha // calculate number of punctured bits no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*rate)/Zc; removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length*rate); - printf("%d\n",no_punctured_columns); - printf("%d\n",removed_bit); + //printf("%d\n",no_punctured_columns); + //printf("%d\n",removed_bit); // unpack input memset(c,0,sizeof(unsigned char) * ncols * Zc); memset(d,0,sizeof(unsigned char) * nrows * Zc);