Commit ae180291 authored by Raymond Knopp's avatar Raymond Knopp

optimized polar encoder in pbch_nr.c

parent 96481468
...@@ -1151,7 +1151,7 @@ uint32_t polar_decoder_int16(int16_t *input, ...@@ -1151,7 +1151,7 @@ uint32_t polar_decoder_int16(int16_t *input,
crc = (uint64_t)(crc24c(A64_flip,len)>>8); crc = (uint64_t)(crc24c(A64_flip,len)>>8);
} }
#if 1 #if 0
printf("A %llx B %llx|%llx Cprime %llx|%llx (crc %x,rxcrc %llx %d)\n", printf("A %llx B %llx|%llx Cprime %llx|%llx (crc %x,rxcrc %llx %d)\n",
Ar, Ar,
B[1],B[0],Cprime[1],Cprime[0],crc, B[1],B[0],Cprime[1],Cprime[0],crc,
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#include "PHY/sse_intrin.h" #include "PHY/sse_intrin.h"
//#define DEBUG_PBCH //#define DEBUG_PBCH
#define DEBUG_PBCH_ENCODING //#define DEBUG_PBCH_ENCODING
//#define DEBUG_PBCH_DMRS //#define DEBUG_PBCH_DMRS
#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/NR_REFSIG/nr_mod_table.h"
...@@ -250,7 +250,6 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch, ...@@ -250,7 +250,6 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
uint16_t M; uint16_t M;
uint8_t nushift; uint8_t nushift;
uint32_t unscrambling_mask; uint32_t unscrambling_mask;
uint64_t a_reversed=0;
LOG_I(PHY, "PBCH generation started\n"); LOG_I(PHY, "PBCH generation started\n");
...@@ -305,14 +304,8 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch, ...@@ -305,14 +304,8 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
printf("pbch_a_prime: 0x%08x\n", pbch->pbch_a_prime); printf("pbch_a_prime: 0x%08x\n", pbch->pbch_a_prime);
#endif #endif
// Encoder reversal
for (int i=0; i<NR_POLAR_PBCH_PAYLOAD_BITS; i++)
a_reversed |= (((uint64_t)pbch->pbch_a_prime>>i)&1)<<(31-i);
/// CRC, coding and rate matching /// CRC, coding and rate matching
polar_encoder_fast (&a_reversed, (uint32_t*)pbch->pbch_e, 0, polar_params); polar_encoder_fast (&pbch->pbch_a_prime, (uint32_t*)pbch->pbch_e, 0, polar_params);
#ifdef DEBUG_PBCH_ENCODING #ifdef DEBUG_PBCH_ENCODING
printf("Channel coding:\n"); printf("Channel coding:\n");
for (int i=0; i<NR_POLAR_PBCH_E_DWORD; i++) for (int i=0; i<NR_POLAR_PBCH_E_DWORD; i++)
......
...@@ -675,7 +675,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ...@@ -675,7 +675,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
if(decoderState > 0) return(decoderState); if(decoderState > 0) return(decoderState);
printf("polar decoder output 0x%08x\n",nr_ue_pbch_vars->pbch_a_prime); // printf("polar decoder output 0x%08x\n",nr_ue_pbch_vars->pbch_a_prime);
//payload un-scrambling //payload un-scrambling
memset(&nr_ue_pbch_vars->pbch_a_interleaved, 0, sizeof(uint32_t) ); memset(&nr_ue_pbch_vars->pbch_a_interleaved, 0, sizeof(uint32_t) );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment