crc ones added also ar UE side
This commit is contained in:
@@ -278,7 +278,7 @@ if (logFlag){
|
||||
start_meas(&timeDecoder);
|
||||
|
||||
if (decoder_int16==1) {
|
||||
decoderState = polar_decoder_int16(channelOutput_int16, (uint64_t *)estimatedOutput, currentPtr);
|
||||
decoderState = polar_decoder_int16(channelOutput_int16, (uint64_t *)estimatedOutput, 0, currentPtr);
|
||||
} else { //0 --> PBCH, 1 --> DCI, -1 --> UCI
|
||||
if (polarMessageType == 0) {
|
||||
decoderState = polar_decoder(channelOutput,
|
||||
|
||||
@@ -601,6 +601,7 @@ void init_polar_deinterleaver_table(t_nrPolar_params *polarParams) {
|
||||
|
||||
uint32_t polar_decoder_int16(int16_t *input,
|
||||
uint64_t *out,
|
||||
uint8_t ones_flag,
|
||||
const t_nrPolar_params *polarParams)
|
||||
{
|
||||
int16_t d_tilde[polarParams->N];// = malloc(sizeof(double) * polarParams->N);
|
||||
@@ -650,28 +651,42 @@ uint32_t polar_decoder_int16(int16_t *input,
|
||||
uint64_t Ar = 0;
|
||||
AssertFatal(len<65,"A must be less than 65 bits\n");
|
||||
|
||||
// appending 24 ones before a0 for DCI as stated in 38.212 7.3.2
|
||||
uint8_t offset = 0;
|
||||
if (ones_flag) offset = 3;
|
||||
|
||||
if (len<=32) {
|
||||
Ar = (uint32_t)(B[0]>>crclen);
|
||||
uint8_t A32_flip[4];
|
||||
uint8_t A32_flip[4+offset];
|
||||
if (ones_flag) {
|
||||
A32_flip[0] = 0xff;
|
||||
A32_flip[1] = 0xff;
|
||||
A32_flip[2] = 0xff;
|
||||
}
|
||||
uint32_t Aprime= (uint32_t)(Ar<<(32-len));
|
||||
A32_flip[0]=((uint8_t *)&Aprime)[3];
|
||||
A32_flip[1]=((uint8_t *)&Aprime)[2];
|
||||
A32_flip[2]=((uint8_t *)&Aprime)[1];
|
||||
A32_flip[3]=((uint8_t *)&Aprime)[0];
|
||||
crc = (uint64_t)(crc24c(A32_flip,len)>>8);
|
||||
A32_flip[0+offset]=((uint8_t *)&Aprime)[3];
|
||||
A32_flip[1+offset]=((uint8_t *)&Aprime)[2];
|
||||
A32_flip[2+offset]=((uint8_t *)&Aprime)[1];
|
||||
A32_flip[3+offset]=((uint8_t *)&Aprime)[0];
|
||||
crc = (uint64_t)(crc24c(A32_flip,8*offset+len)>>8);
|
||||
} else if (len<=64) {
|
||||
Ar = (B[0]>>crclen) | (B[1]<<(64-crclen));;
|
||||
uint8_t A64_flip[8];
|
||||
uint64_t Aprime= (uint32_t)(Ar<<(64-len));
|
||||
A64_flip[0]=((uint8_t *)&Aprime)[7];
|
||||
A64_flip[1]=((uint8_t *)&Aprime)[6];
|
||||
A64_flip[2]=((uint8_t *)&Aprime)[5];
|
||||
A64_flip[3]=((uint8_t *)&Aprime)[4];
|
||||
A64_flip[4]=((uint8_t *)&Aprime)[3];
|
||||
A64_flip[5]=((uint8_t *)&Aprime)[2];
|
||||
A64_flip[6]=((uint8_t *)&Aprime)[1];
|
||||
A64_flip[7]=((uint8_t *)&Aprime)[0];
|
||||
crc = (uint64_t)(crc24c(A64_flip,len)>>8);
|
||||
uint8_t A64_flip[8+offset];
|
||||
if (ones_flag) {
|
||||
A64_flip[0] = 0xff;
|
||||
A64_flip[1] = 0xff;
|
||||
A64_flip[2] = 0xff;
|
||||
}
|
||||
uint64_t Aprime= (uint64_t)(Ar<<(64-len));
|
||||
A64_flip[0+offset]=((uint8_t *)&Aprime)[7];
|
||||
A64_flip[1+offset]=((uint8_t *)&Aprime)[6];
|
||||
A64_flip[2+offset]=((uint8_t *)&Aprime)[5];
|
||||
A64_flip[3+offset]=((uint8_t *)&Aprime)[4];
|
||||
A64_flip[4+offset]=((uint8_t *)&Aprime)[3];
|
||||
A64_flip[5+offset]=((uint8_t *)&Aprime)[2];
|
||||
A64_flip[6+offset]=((uint8_t *)&Aprime)[1];
|
||||
A64_flip[7+offset]=((uint8_t *)&Aprime)[0];
|
||||
crc = (uint64_t)(crc24c(A64_flip,8*offset+len)>>8);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
@@ -158,6 +158,7 @@ int8_t polar_decoder(double *input,
|
||||
|
||||
uint32_t polar_decoder_int16(int16_t *input,
|
||||
uint64_t *out,
|
||||
uint8_t ones_flag,
|
||||
const t_nrPolar_params *polarParams);
|
||||
|
||||
int8_t polar_decoder_dci(double *input,
|
||||
|
||||
@@ -1338,6 +1338,7 @@ void nr_dci_decoding_procedure0(int s,
|
||||
const t_nrPolar_params *currentPtrDCI=nr_polar_params(1, sizeof_bits, L2);
|
||||
decoderState = polar_decoder_int16(&pdcch_vars[eNB_id]->e_rx[CCEind*9*6*2],
|
||||
dci_estimation,
|
||||
1,
|
||||
currentPtrDCI);
|
||||
crc = decoderState;
|
||||
//crc = (crc16(&dci_decoded_output[current_thread_id][0], sizeof_bits) >> 16) ^ extract_crc(&dci_decoded_output[current_thread_id][0], sizeof_bits);
|
||||
|
||||
@@ -538,7 +538,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
|
||||
nr_pbch_unscrambling(nr_ue_pbch_vars,frame_parms->Nid_cell,nushift,M,NR_POLAR_PBCH_E,0,0);
|
||||
//polar decoding de-rate matching
|
||||
const t_nrPolar_params *currentPtr = nr_polar_params( NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL);
|
||||
decoderState = polar_decoder_int16(pbch_e_rx,(uint64_t *)&nr_ue_pbch_vars->pbch_a_prime,currentPtr);
|
||||
decoderState = polar_decoder_int16(pbch_e_rx,(uint64_t *)&nr_ue_pbch_vars->pbch_a_prime,0,currentPtr);
|
||||
|
||||
if(decoderState) return(decoderState);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user