More warning removals but nr_dlschsim still not working
This commit is contained in:
@@ -387,6 +387,8 @@ unsigned int crc12 (unsigned char * inptr, int bitlen);
|
|||||||
@param inPtr Pointer to input byte stream
|
@param inPtr Pointer to input byte stream
|
||||||
@param bitlen length of inputs in bits*/
|
@param bitlen length of inputs in bits*/
|
||||||
unsigned int crc8 (unsigned char * inptr, int bitlen);
|
unsigned int crc8 (unsigned char * inptr, int bitlen);
|
||||||
|
|
||||||
|
int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type);
|
||||||
|
|
||||||
/*!\fn void phy_viterbi_dot11_sse2(int8_t *y, uint8_t *decoded_bytes, uint16_t n,int offset,int traceback)
|
/*!\fn void phy_viterbi_dot11_sse2(int8_t *y, uint8_t *decoded_bytes, uint16_t n,int offset,int traceback)
|
||||||
\brief This routine performs a SIMD optmized Viterbi decoder for the 802.11 64-state convolutional code. It can be
|
\brief This routine performs a SIMD optmized Viterbi decoder for the 802.11 64-state convolutional code. It can be
|
||||||
@@ -441,8 +443,6 @@ int32_t rate_matching_lte(uint32_t N_coded,
|
|||||||
uint8_t *inPtr,
|
uint8_t *inPtr,
|
||||||
uint32_t off);
|
uint32_t off);
|
||||||
|
|
||||||
void crcTableInit (void);
|
|
||||||
|
|
||||||
unsigned int crcbit (unsigned char * inputptr, int octetlen, unsigned int poly);
|
unsigned int crcbit (unsigned char * inputptr, int octetlen, unsigned int poly);
|
||||||
|
|
||||||
int16_t reverseBits(int32_t ,int32_t);
|
int16_t reverseBits(int32_t ,int32_t);
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ void encode_parity_check_part_optim(uint8_t *c,uint8_t *d, short BG,short Zc,sho
|
|||||||
int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,short block_length,short BG,time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,short block_length,short BG,time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
||||||
{
|
{
|
||||||
|
|
||||||
short Zc,Kb,nrows,ncols;
|
short Zc,Kb=0,nrows=0,ncols=0;
|
||||||
int i,i1;
|
int i,i1;
|
||||||
int no_punctured_columns,removed_bit;
|
int no_punctured_columns,removed_bit;
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
|
|||||||
int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_input,short block_length,short BG,int n_segments,time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_input,short block_length,short BG,int n_segments,time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
||||||
{
|
{
|
||||||
|
|
||||||
short Zc,Kb,nrows,ncols;
|
short Zc,Kb=0,nrows=0,ncols=0;
|
||||||
int i,i1,j;
|
int i,i1,j;
|
||||||
int no_punctured_columns,removed_bit;
|
int no_punctured_columns,removed_bit;
|
||||||
//Table of possible lifting sizes
|
//Table of possible lifting sizes
|
||||||
@@ -520,7 +520,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
|
|||||||
int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **channel_input,short block_length, short BG, int n_segments,unsigned int macro_num, time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **channel_input,short block_length, short BG, int n_segments,unsigned int macro_num, time_stats_t *tinput,time_stats_t *tprep,time_stats_t *tparity,time_stats_t *toutput)
|
||||||
{
|
{
|
||||||
|
|
||||||
short Zc,Kb,nrows,ncols;
|
short Zc,Kb=0,nrows=0,ncols=0;
|
||||||
int i,i1,j;
|
int i,i1,j;
|
||||||
int no_punctured_columns,removed_bit;
|
int no_punctured_columns,removed_bit;
|
||||||
//Table of possible lifting sizes
|
//Table of possible lifting sizes
|
||||||
|
|||||||
@@ -444,6 +444,9 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,sho
|
|||||||
no_shift_values=(short *) no_shift_values_BG2;
|
no_shift_values=(short *) no_shift_values_BG2;
|
||||||
pointer_shift_values=(short *) pointer_shift_values_BG2;
|
pointer_shift_values=(short *) pointer_shift_values_BG2;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
AssertFatal(0,"BG %d is not supported yet\n",BG);
|
||||||
|
}
|
||||||
|
|
||||||
no_punctured_columns=(int)((nrows-2)*Zc+block_length-block_length*3)/Zc;
|
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);
|
removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(block_length*3);
|
||||||
|
|||||||
@@ -1119,7 +1119,7 @@ uint32_t polar_decoder_int16(int16_t *input,
|
|||||||
|
|
||||||
|
|
||||||
int len=polarParams->payloadBits;
|
int len=polarParams->payloadBits;
|
||||||
int len_mod64=len&63;
|
//int len_mod64=len&63;
|
||||||
int crclen = polarParams->crcParityBits;
|
int crclen = polarParams->crcParityBits;
|
||||||
uint64_t rxcrc=B[0]&((1<<crclen)-1);
|
uint64_t rxcrc=B[0]&((1<<crclen)-1);
|
||||||
uint32_t crc;
|
uint32_t crc;
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ void polar_encoder_fast(uint64_t *A,
|
|||||||
AssertFatal(bitlen<129,"support for payloads <= 128 bits\n");
|
AssertFatal(bitlen<129,"support for payloads <= 128 bits\n");
|
||||||
AssertFatal(polarParams->crcParityBits == 24,"support for 24-bit crc only for now\n");
|
AssertFatal(polarParams->crcParityBits == 24,"support for 24-bit crc only for now\n");
|
||||||
|
|
||||||
int bitlen0=bitlen;
|
//int bitlen0=bitlen;
|
||||||
|
|
||||||
uint64_t tcrc=0;
|
uint64_t tcrc=0;
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ uint32_t nr_rate_matching_ldpc(uint8_t Ilbrm,
|
|||||||
{
|
{
|
||||||
uint8_t Cprime;
|
uint8_t Cprime;
|
||||||
uint32_t Ncb,E,ind,k,Nref,N;
|
uint32_t Ncb,E,ind,k,Nref,N;
|
||||||
uint8_t *e2;
|
//uint8_t *e2;
|
||||||
|
|
||||||
AssertFatal(Nl>0,"Nl is 0\n");
|
AssertFatal(Nl>0,"Nl is 0\n");
|
||||||
AssertFatal(Qm>0,"Qm is 0\n");
|
AssertFatal(Qm>0,"Qm is 0\n");
|
||||||
@@ -110,7 +110,7 @@ uint32_t nr_rate_matching_ldpc(uint8_t Ilbrm,
|
|||||||
printf("nr_rate_matching: E %d, k0 %d Cprime %d modcprime %d\n",E,ind, Cprime,((G/(Nl*Qm))%Cprime));
|
printf("nr_rate_matching: E %d, k0 %d Cprime %d modcprime %d\n",E,ind, Cprime,((G/(Nl*Qm))%Cprime));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
e2 = e;
|
//e2 = e;
|
||||||
|
|
||||||
k=0;
|
k=0;
|
||||||
|
|
||||||
@@ -120,7 +120,8 @@ uint32_t nr_rate_matching_ldpc(uint8_t Ilbrm,
|
|||||||
printf("RM_TX k%d Ind: %d (%d)\n",k,ind,w[ind]);
|
printf("RM_TX k%d Ind: %d (%d)\n",k,ind,w[ind]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (w[ind] != NR_NULL) e2[k++]=w[ind];
|
//if (w[ind] != NR_NULL) e2[k++]=w[ind];
|
||||||
|
if (w[ind] != NR_NULL) e[k++]=w[ind];
|
||||||
}
|
}
|
||||||
|
|
||||||
while(k<E) {
|
while(k<E) {
|
||||||
@@ -130,7 +131,8 @@ uint32_t nr_rate_matching_ldpc(uint8_t Ilbrm,
|
|||||||
printf("RM_TX k%d Ind: %d (%d)\n",k,ind,w[ind]);
|
printf("RM_TX k%d Ind: %d (%d)\n",k,ind,w[ind]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (w[ind] != NR_NULL) e2[k++]=w[ind];
|
//if (w[ind] != NR_NULL) e2[k++]=w[ind];
|
||||||
|
if (w[ind] != NR_NULL) e[k++]=w[ind];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -314,8 +314,8 @@ void phy_config_request(PHY_Config_t *phy_config) {
|
|||||||
|
|
||||||
void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
||||||
{
|
{
|
||||||
// NR_DL_FRAME_PARMS* const fp = &gNB->frame_parms;
|
//NR_DL_FRAME_PARMS* const fp = &gNB->frame_parms;
|
||||||
nfapi_nr_config_request_t *cfg = &gNB->gNB_config;
|
//nfapi_nr_config_request_t *cfg = &gNB->gNB_config;
|
||||||
NR_gNB_COMMON* const common_vars = &gNB->common_vars;
|
NR_gNB_COMMON* const common_vars = &gNB->common_vars;
|
||||||
LTE_eNB_PUSCH** const pusch_vars = gNB->pusch_vars;
|
LTE_eNB_PUSCH** const pusch_vars = gNB->pusch_vars;
|
||||||
LTE_eNB_SRS* const srs_vars = gNB->srs_vars;
|
LTE_eNB_SRS* const srs_vars = gNB->srs_vars;
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ uint8_t nr_generate_dci_top(NR_gNB_PDCCH pdcch_vars,
|
|||||||
|
|
||||||
int16_t mod_dmrs[NR_MAX_CSET_DURATION][NR_MAX_PDCCH_DMRS_LENGTH>>1]; // 3 for the max coreset duration
|
int16_t mod_dmrs[NR_MAX_CSET_DURATION][NR_MAX_PDCCH_DMRS_LENGTH>>1]; // 3 for the max coreset duration
|
||||||
uint8_t idx=0;
|
uint8_t idx=0;
|
||||||
uint16_t a;
|
//uint16_t a;
|
||||||
int k,l,k_prime,dci_idx, dmrs_idx;
|
int k,l,k_prime,dci_idx, dmrs_idx;
|
||||||
nr_cce_t cce;
|
nr_cce_t cce;
|
||||||
nr_reg_t reg;
|
nr_reg_t reg;
|
||||||
|
|||||||
@@ -379,7 +379,8 @@ int nr_dlsch_encoding(unsigned char *a,
|
|||||||
}
|
}
|
||||||
printf("\n");*/
|
printf("\n");*/
|
||||||
|
|
||||||
ldpc_encoder_optim_8seg(dlsch->harq_processes[harq_pid]->c,d_tmp,Kr,BG,dlsch->harq_processes[harq_pid]->C,NULL,NULL,NULL,NULL);
|
//ldpc_encoder_optim_8seg(dlsch->harq_processes[harq_pid]->c,d_tmp,Kr,BG,dlsch->harq_processes[harq_pid]->C,NULL,NULL,NULL,NULL);
|
||||||
|
ldpc_encoder_optim_8seg(dlsch->harq_processes[harq_pid]->c,dlsch->harq_processes[harq_pid]->d,Kr,BG,dlsch->harq_processes[harq_pid]->C,NULL,NULL,NULL,NULL);
|
||||||
|
|
||||||
//stop_meas(te_stats);
|
//stop_meas(te_stats);
|
||||||
//printf("end ldpc encoder -- output\n");
|
//printf("end ldpc encoder -- output\n");
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ int nr_generate_pbch_dmrs(uint32_t *gold_pbch_dmrs,
|
|||||||
NR_DL_FRAME_PARMS *frame_parms)
|
NR_DL_FRAME_PARMS *frame_parms)
|
||||||
{
|
{
|
||||||
int k,l;
|
int k,l;
|
||||||
int16_t a;
|
//int16_t a;
|
||||||
int16_t mod_dmrs[NR_PBCH_DMRS_LENGTH<<1];
|
int16_t mod_dmrs[NR_PBCH_DMRS_LENGTH<<1];
|
||||||
uint8_t idx=0;
|
uint8_t idx=0;
|
||||||
uint8_t nushift = config->sch_config.physical_cell_id.value &3;
|
uint8_t nushift = config->sch_config.physical_cell_id.value &3;
|
||||||
@@ -240,7 +240,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
|
|||||||
{
|
{
|
||||||
|
|
||||||
int k,l,m;
|
int k,l,m;
|
||||||
int16_t a;
|
//int16_t a;
|
||||||
int16_t mod_pbch_e[NR_POLAR_PBCH_E];
|
int16_t mod_pbch_e[NR_POLAR_PBCH_E];
|
||||||
uint8_t idx=0;
|
uint8_t idx=0;
|
||||||
uint16_t M;
|
uint16_t M;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ int nr_generate_sss( int16_t *d_sss,
|
|||||||
int i,k,l;
|
int i,k,l;
|
||||||
int m0, m1;
|
int m0, m1;
|
||||||
int Nid, Nid1, Nid2;
|
int Nid, Nid1, Nid2;
|
||||||
int16_t a;
|
//int16_t a;
|
||||||
int16_t x0[NR_SSS_LENGTH], x1[NR_SSS_LENGTH];
|
int16_t x0[NR_SSS_LENGTH], x1[NR_SSS_LENGTH];
|
||||||
const int x0_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
const int x0_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
||||||
const int x1_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
const int x1_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "PHY/CODING/coding_extern.h"
|
#include "PHY/CODING/coding_extern.h"
|
||||||
#include "PHY/CODING/coding_defs.h"
|
#include "PHY/CODING/coding_defs.h"
|
||||||
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
|
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
|
||||||
|
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
|
||||||
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
|
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
|
||||||
#include "SCHED_NR_UE/defs.h"
|
#include "SCHED_NR_UE/defs.h"
|
||||||
#include "SIMULATION/TOOLS/sim.h"
|
#include "SIMULATION/TOOLS/sim.h"
|
||||||
@@ -190,7 +191,7 @@ void nr_dlsch_unscrambling(int16_t* llr,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
||||||
short *dlsch_llr,
|
short *dlsch_llr,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
NR_UE_DLSCH_t *dlsch,
|
NR_UE_DLSCH_t *dlsch,
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
//#include "PHY/defs_nr_common.h"
|
//#include "PHY/defs_nr_common.h"
|
||||||
#include "PHY/defs_nr_UE.h"
|
#include "PHY/defs_nr_UE.h"
|
||||||
#include "PHY/NR_UE_TRANSPORT/nr_prach.h"
|
#include "PHY/NR_UE_TRANSPORT/nr_prach.h"
|
||||||
|
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
|
||||||
//#include "PHY/extern.h"
|
//#include "PHY/extern.h"
|
||||||
//#include "LAYER2/MAC/extern.h"
|
//#include "LAYER2/MAC/extern.h"
|
||||||
//#include "PHY/NR_UE_TRANSPORT/pucch_nr.h"
|
//#include "PHY/NR_UE_TRANSPORT/pucch_nr.h"
|
||||||
@@ -582,7 +583,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
|
|||||||
int16_t amp = ue->prach_vars[eNB_id]->amp;
|
int16_t amp = ue->prach_vars[eNB_id]->amp;
|
||||||
int16_t Ncp;
|
int16_t Ncp;
|
||||||
uint8_t n_ra_prb;
|
uint8_t n_ra_prb;
|
||||||
uint16_t NCS;
|
uint16_t NCS=0;
|
||||||
uint16_t *prach_root_sequence_map;
|
uint16_t *prach_root_sequence_map;
|
||||||
uint16_t preamble_offset,preamble_shift;
|
uint16_t preamble_offset,preamble_shift;
|
||||||
uint16_t preamble_index0,n_shift_ra,n_shift_ra_bar;
|
uint16_t preamble_index0,n_shift_ra,n_shift_ra_bar;
|
||||||
@@ -599,7 +600,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
|
|||||||
int32_t Xu_re,Xu_im;
|
int32_t Xu_re,Xu_im;
|
||||||
uint16_t offset,offset2;
|
uint16_t offset,offset2;
|
||||||
int prach_start;
|
int prach_start;
|
||||||
int i, prach_len;
|
int i, prach_len=0;
|
||||||
uint16_t first_nonzero_root_idx=0;
|
uint16_t first_nonzero_root_idx=0;
|
||||||
|
|
||||||
#if defined(EXMIMO) || defined(OAI_USRP)
|
#if defined(EXMIMO) || defined(OAI_USRP)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
//#include "PHY/extern.h"
|
//#include "PHY/extern.h"
|
||||||
//#include "LAYER2/MAC/extern.h"
|
//#include "LAYER2/MAC/extern.h"
|
||||||
#include "PHY/NR_UE_TRANSPORT/pucch_nr.h"
|
#include "PHY/NR_UE_TRANSPORT/pucch_nr.h"
|
||||||
|
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
|
||||||
|
|
||||||
#include "common/utils/LOG/log.h"
|
#include "common/utils/LOG/log.h"
|
||||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||||
@@ -129,7 +130,7 @@ double nr_cyclic_shift_hopping(PHY_VARS_NR_UE *ue,
|
|||||||
*/
|
*/
|
||||||
// alpha_init initialized to 2*PI/12=0.5235987756
|
// alpha_init initialized to 2*PI/12=0.5235987756
|
||||||
double alpha = 0.5235987756;
|
double alpha = 0.5235987756;
|
||||||
uint16_t c_init = ue->pucch_config_common_nr->hoppingId; // we initialize c_init again to calculate n_cs
|
uint32_t c_init = ue->pucch_config_common_nr->hoppingId; // we initialize c_init again to calculate n_cs
|
||||||
|
|
||||||
#ifdef DEBUG_NR_PUCCH_TX
|
#ifdef DEBUG_NR_PUCCH_TX
|
||||||
// initialization to be removed
|
// initialization to be removed
|
||||||
@@ -236,8 +237,8 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue,
|
|||||||
/*
|
/*
|
||||||
* Implementing TS 38.211 Subclause 6.3.2.3.2 Mapping to physical resources FIXME!
|
* Implementing TS 38.211 Subclause 6.3.2.3.2 Mapping to physical resources FIXME!
|
||||||
*/
|
*/
|
||||||
int32_t *txptr;
|
//int32_t *txptr;
|
||||||
uint32_t re_offset;
|
uint32_t re_offset=0;
|
||||||
for (int l=0; l<nrofSymbols; l++) {
|
for (int l=0; l<nrofSymbols; l++) {
|
||||||
if ((startingPRB < (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 0)) { // if number RBs in bandwidth is even and current PRB is lower band
|
if ((startingPRB < (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 0)) { // if number RBs in bandwidth is even and current PRB is lower band
|
||||||
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*startingPRB) + frame_parms->first_carrier_offset;
|
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*startingPRB) + frame_parms->first_carrier_offset;
|
||||||
@@ -254,7 +255,7 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue,
|
|||||||
if ((startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB contains DC
|
if ((startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB contains DC
|
||||||
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*startingPRB) + frame_parms->first_carrier_offset;
|
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*startingPRB) + frame_parms->first_carrier_offset;
|
||||||
}
|
}
|
||||||
txptr = &txdataF[0][re_offset];
|
//txptr = &txdataF[0][re_offset];
|
||||||
for (int n=0; n<12; n++){
|
for (int n=0; n<12; n++){
|
||||||
if ((n==6) && (startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
if ((n==6) && (startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
||||||
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
||||||
@@ -299,7 +300,7 @@ void nr_generate_pucch1(PHY_VARS_NR_UE *ue,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
// complex-valued symbol d_re, d_im containing complex-valued symbol d(0):
|
// complex-valued symbol d_re, d_im containing complex-valued symbol d(0):
|
||||||
int16_t d_re, d_im;
|
int16_t d_re=0, d_im=0;
|
||||||
if (nr_bit == 1) { // using BPSK if M_bit=1 according to TC 38.211 Subclause 5.1.2
|
if (nr_bit == 1) { // using BPSK if M_bit=1 according to TC 38.211 Subclause 5.1.2
|
||||||
d_re = (payload&1)==0 ? (int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15) : -(int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15);
|
d_re = (payload&1)==0 ? (int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15) : -(int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15);
|
||||||
d_im = (payload&1)==0 ? (int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15) : -(int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15);
|
d_im = (payload&1)==0 ? (int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15) : -(int16_t)(((int32_t)amp*ONE_OVER_SQRT2)>>15);
|
||||||
@@ -371,8 +372,8 @@ void nr_generate_pucch1(PHY_VARS_NR_UE *ue,
|
|||||||
/*
|
/*
|
||||||
* Implementing TS 38.211 Subclause 6.3.2.4.2 Mapping to physical resources
|
* Implementing TS 38.211 Subclause 6.3.2.4.2 Mapping to physical resources
|
||||||
*/
|
*/
|
||||||
int32_t *txptr;
|
//int32_t *txptr;
|
||||||
uint32_t re_offset;
|
uint32_t re_offset=0;
|
||||||
int i=0;
|
int i=0;
|
||||||
#define MAX_SIZE_Z 168 // this value has to be calculated from mprime*12*table_6_3_2_4_1_1_N_SF_mprime_PUCCH_1_noHop[pucch_symbol_length]+m*12+n
|
#define MAX_SIZE_Z 168 // this value has to be calculated from mprime*12*table_6_3_2_4_1_1_N_SF_mprime_PUCCH_1_noHop[pucch_symbol_length]+m*12+n
|
||||||
int16_t z_re[MAX_SIZE_Z],z_im[MAX_SIZE_Z];
|
int16_t z_re[MAX_SIZE_Z],z_im[MAX_SIZE_Z];
|
||||||
@@ -552,7 +553,7 @@ void nr_generate_pucch1(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
txptr = &txdataF[0][re_offset];
|
//txptr = &txdataF[0][re_offset];
|
||||||
for (int n=0; n<12; n++){
|
for (int n=0; n<12; n++){
|
||||||
if ((n==6) && (startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
if ((n==6) && (startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
||||||
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
||||||
@@ -904,7 +905,7 @@ void nr_uci_encoding(uint64_t payload,
|
|||||||
// L is the CRC size
|
// L is the CRC size
|
||||||
uint8_t L;
|
uint8_t L;
|
||||||
// E is the rate matching output sequence length as given in TS 38.212 subclause 6.3.1.4.1
|
// E is the rate matching output sequence length as given in TS 38.212 subclause 6.3.1.4.1
|
||||||
uint16_t E,E_init;
|
uint16_t E=0,E_init;
|
||||||
if (fmt == pucch_format2_nr) E = 16*nrofSymbols*nrofPRB;
|
if (fmt == pucch_format2_nr) E = 16*nrofSymbols*nrofPRB;
|
||||||
if (fmt == pucch_format3_nr){
|
if (fmt == pucch_format3_nr){
|
||||||
E_init = (is_pi_over_2_bpsk_enabled == 0) ? 24:12;
|
E_init = (is_pi_over_2_bpsk_enabled == 0) ? 24:12;
|
||||||
@@ -1061,8 +1062,8 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue,
|
|||||||
/*
|
/*
|
||||||
* Implementing TS 38.211 Subclause 6.3.2.5.3 Mapping to physical resources
|
* Implementing TS 38.211 Subclause 6.3.2.5.3 Mapping to physical resources
|
||||||
*/
|
*/
|
||||||
int32_t *txptr;
|
//int32_t *txptr;
|
||||||
uint32_t re_offset;
|
uint32_t re_offset=0;
|
||||||
uint32_t x1, x2, s=0;
|
uint32_t x1, x2, s=0;
|
||||||
int i=0;
|
int i=0;
|
||||||
int m=0;
|
int m=0;
|
||||||
@@ -1086,7 +1087,7 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue,
|
|||||||
if (((rb+startingPRB) == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB contains DC
|
if (((rb+startingPRB) == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB contains DC
|
||||||
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*(rb+startingPRB)) + frame_parms->first_carrier_offset;
|
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*(rb+startingPRB)) + frame_parms->first_carrier_offset;
|
||||||
}
|
}
|
||||||
txptr = &txdataF[0][re_offset];
|
//txptr = &txdataF[0][re_offset];
|
||||||
int k=0;
|
int k=0;
|
||||||
int kk=0;
|
int kk=0;
|
||||||
for (int n=0; n<12; n++){
|
for (int n=0; n<12; n++){
|
||||||
@@ -1408,8 +1409,8 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue,
|
|||||||
//int16_t *r_u_v_alpha_delta_im = malloc(sizeof(int16_t)*12*nrofPRB);
|
//int16_t *r_u_v_alpha_delta_im = malloc(sizeof(int16_t)*12*nrofPRB);
|
||||||
|
|
||||||
// Next we proceed to mapping to physical resources according to TS 38.211, subclause 6.3.2.6.5 dor PUCCH formats 3 and 4 and subclause 6.4.1.3.3.2 for DM-RS
|
// Next we proceed to mapping to physical resources according to TS 38.211, subclause 6.3.2.6.5 dor PUCCH formats 3 and 4 and subclause 6.4.1.3.3.2 for DM-RS
|
||||||
int32_t *txptr;
|
//int32_t *txptr;
|
||||||
uint32_t re_offset;
|
uint32_t re_offset=0;
|
||||||
//uint32_t x1, x2, s=0;
|
//uint32_t x1, x2, s=0;
|
||||||
// intraSlotFrequencyHopping
|
// intraSlotFrequencyHopping
|
||||||
// uint8_t intraSlotFrequencyHopping = 0;
|
// uint8_t intraSlotFrequencyHopping = 0;
|
||||||
@@ -1513,7 +1514,7 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue,
|
|||||||
#ifdef DEBUG_NR_PUCCH_TX
|
#ifdef DEBUG_NR_PUCCH_TX
|
||||||
printf("re_offset=%d,(rb+startingPRB)=%d\n",re_offset,(rb+startingPRB));
|
printf("re_offset=%d,(rb+startingPRB)=%d\n",re_offset,(rb+startingPRB));
|
||||||
#endif
|
#endif
|
||||||
txptr = &txdataF[0][re_offset];
|
//txptr = &txdataF[0][re_offset];
|
||||||
for (int n=0; n<12; n++){
|
for (int n=0; n<12; n++){
|
||||||
if ((n==6) && ((rb+startingPRB) == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
if ((n==6) && ((rb+startingPRB) == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) {
|
||||||
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
// if number RBs in bandwidth is odd and current PRB contains DC, we need to recalculate the offset when n=6 (for second half PRB)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user