adding dlsch unscrambling
This commit is contained in:
@@ -44,7 +44,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
unsigned char symbol = l;//+((7-frame_parms->Ncp)*(Ns&1)); ///symbol within sub-frame
|
unsigned char symbol = l;//+((7-frame_parms->Ncp)*(Ns&1)); ///symbol within sub-frame
|
||||||
unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples);
|
unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples);
|
||||||
unsigned int nb_prefix_samples0 = (no_prefix ? 0 : frame_parms->nb_prefix_samples0);
|
unsigned int nb_prefix_samples0 = (no_prefix ? 0 : frame_parms->nb_prefix_samples0);
|
||||||
unsigned int subframe_offset;//,subframe_offset_F;
|
//unsigned int subframe_offset;//,subframe_offset_F;
|
||||||
unsigned int slot_offset;
|
unsigned int slot_offset;
|
||||||
//int i;
|
//int i;
|
||||||
unsigned int frame_length_samples = frame_parms->samples_per_subframe * 10;
|
unsigned int frame_length_samples = frame_parms->samples_per_subframe * 10;
|
||||||
@@ -52,13 +52,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
//NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[ue->current_thread_id[Ns>>1]][0];
|
//NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[ue->current_thread_id[Ns>>1]][0];
|
||||||
uint16_t coreset_start_subcarrier = frame_parms->first_carrier_offset+516;
|
uint16_t coreset_start_subcarrier = frame_parms->first_carrier_offset+516;
|
||||||
uint16_t nb_rb_coreset = 24;
|
uint16_t nb_rb_coreset = 24;
|
||||||
uint16_t bwp_start_subcarrier = frame_parms->first_carrier_offset;
|
uint16_t bwp_start_subcarrier = frame_parms->first_carrier_offset+516;
|
||||||
uint16_t nb_rb_pdsch = 100;
|
uint16_t nb_rb_pdsch = 50;
|
||||||
|
|
||||||
/*LTE_UE_DLSCH_t **dlsch_ue = phy_vars_ue->dlsch_ue[eNB_id];
|
|
||||||
unsigned char harq_pid = dlsch_ue[0]->current_harq_pid;
|
|
||||||
LTE_DL_UE_HARQ_t *dlsch0_harq = dlsch_ue[0]->harq_processes[harq_pid];
|
|
||||||
int uespec_pilot[9][1200];*/
|
|
||||||
|
|
||||||
void (*dft)(int16_t *,int16_t *, int);
|
void (*dft)(int16_t *,int16_t *, int);
|
||||||
int tmp_dft_in[8192] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs
|
int tmp_dft_in[8192] __attribute__ ((aligned (32))); // This is for misalignment issues for 6 and 15 PRBs
|
||||||
@@ -102,11 +97,9 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (no_prefix) {
|
if (no_prefix) {
|
||||||
subframe_offset = frame_parms->ofdm_symbol_size * frame_parms->symbols_per_tti * (Ns>>1);
|
slot_offset = frame_parms->ofdm_symbol_size * (frame_parms->symbols_per_slot) * (Ns);
|
||||||
slot_offset = frame_parms->ofdm_symbol_size * (frame_parms->symbols_per_tti>>1) * (Ns%2);
|
|
||||||
} else {
|
} else {
|
||||||
subframe_offset = frame_parms->samples_per_tti * (Ns>>1);
|
slot_offset = (frame_parms->samples_per_subframe/frame_parms->slots_per_subframe) * (Ns);
|
||||||
slot_offset = (frame_parms->samples_per_tti>>1) * (Ns%2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if (l<0 || l>=7-frame_parms->Ncp) {
|
/*if (l<0 || l>=7-frame_parms->Ncp) {
|
||||||
@@ -122,9 +115,9 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
|
|
||||||
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
|
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
|
||||||
memset(&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],0,frame_parms->ofdm_symbol_size*sizeof(int));
|
memset(&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],0,frame_parms->ofdm_symbol_size*sizeof(int));
|
||||||
|
|
||||||
rx_offset = sample_offset + slot_offset + nb_prefix_samples0 + subframe_offset - SOFFSET;
|
rx_offset = sample_offset + slot_offset + nb_prefix_samples0 - SOFFSET;
|
||||||
// Align with 256 bit
|
// Align with 256 bit
|
||||||
// rx_offset = rx_offset&0xfffffff8;
|
// rx_offset = rx_offset&0xfffffff8;
|
||||||
|
|
||||||
@@ -140,14 +133,14 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
(void *)&common_vars->rxdata[aa][rx_offset % frame_length_samples],
|
(void *)&common_vars->rxdata[aa][rx_offset % frame_length_samples],
|
||||||
frame_parms->ofdm_symbol_size*sizeof(int));
|
frame_parms->ofdm_symbol_size*sizeof(int));
|
||||||
dft((int16_t *)tmp_dft_in,
|
dft((int16_t *)tmp_dft_in,
|
||||||
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
||||||
} else { // use dft input from RX buffer directly
|
} else { // use dft input from RX buffer directly
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->rx_dft_stats);
|
start_meas(&ue->rx_dft_stats);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
||||||
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->rx_dft_stats);
|
stop_meas(&ue->rx_dft_stats);
|
||||||
#endif
|
#endif
|
||||||
@@ -158,8 +151,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
// if (ue->frame <100)
|
// if (ue->frame <100)
|
||||||
LOG_I(PHY,"slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %d, nb_prefix_samples0 %d, slot_offset %d, subframe_offset %d, sample_offset %d,rx_offset %d, frame_length_samples %d\n", ue->proc.proc_rxtx[(Ns>>1)&1].frame_rx,Ns, symbol,
|
LOG_I(PHY,"slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %d, nb_prefix_samples0 %d, slot_offset %d, sample_offset %d,rx_offset %d, frame_length_samples %d\n", ue->proc.proc_rxtx[(Ns>>1)&1].frame_rx,Ns, symbol,
|
||||||
nb_prefix_samples,nb_prefix_samples0,slot_offset,subframe_offset,sample_offset,rx_offset,frame_length_samples);
|
nb_prefix_samples,nb_prefix_samples0,slot_offset,sample_offset,rx_offset,frame_length_samples);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (rx_offset > (frame_length_samples - frame_parms->ofdm_symbol_size))
|
if (rx_offset > (frame_length_samples - frame_parms->ofdm_symbol_size))
|
||||||
@@ -175,11 +168,11 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
(void *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
(void *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
||||||
frame_parms->ofdm_symbol_size*sizeof(int));
|
frame_parms->ofdm_symbol_size*sizeof(int));
|
||||||
dft((int16_t *)tmp_dft_in,
|
dft((int16_t *)tmp_dft_in,
|
||||||
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
||||||
} else { // use dft input from RX buffer directly
|
} else { // use dft input from RX buffer directly
|
||||||
|
|
||||||
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
|
||||||
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
|
||||||
}
|
}
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->rx_dft_stats);
|
stop_meas(&ue->rx_dft_stats);
|
||||||
@@ -190,7 +183,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
// if (ue->frame <100)
|
// if (ue->frame <100)
|
||||||
printf("slot_fep: frame %d: symbol %d rx_offset %d\n", ue->proc.proc_rxtx[(Ns>>1)&1].frame_rx, symbol,rx_offset);
|
printf("slot_fep: frame %d: symbol %d rx_offset %d\n", ue->proc.proc_rxtx[(Ns)&1].frame_rx, symbol,rx_offset);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
||||||
|
|
||||||
uint8_t nushift,ssb_index=0, n_hf=0;
|
uint8_t nushift, ssb_index=0, n_hf=0;
|
||||||
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset];
|
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].dl_ch_estimates[eNB_offset];
|
||||||
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF;
|
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF;
|
||||||
|
|
||||||
nushift = ue->frame_parms.Nid_cell%4;
|
nushift = ue->frame_parms.Nid_cell%4;
|
||||||
ue->frame_parms.nushift = nushift;
|
ue->frame_parms.nushift = nushift;
|
||||||
@@ -271,8 +271,8 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
||||||
|
|
||||||
uint8_t nushift;
|
uint8_t nushift;
|
||||||
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset];
|
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].dl_ch_estimates[eNB_offset];
|
||||||
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF;
|
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF;
|
||||||
|
|
||||||
nushift = 1;
|
nushift = 1;
|
||||||
ue->frame_parms.nushift = nushift;
|
ue->frame_parms.nushift = nushift;
|
||||||
@@ -448,8 +448,8 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
//uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
|
||||||
|
|
||||||
uint8_t nushift;
|
uint8_t nushift;
|
||||||
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset];
|
int **dl_ch_estimates =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].dl_ch_estimates[eNB_offset];
|
||||||
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF;
|
int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF;
|
||||||
|
|
||||||
nushift = (p>>1)&1;
|
nushift = (p>>1)&1;
|
||||||
ue->frame_parms.nushift = nushift;
|
ue->frame_parms.nushift = nushift;
|
||||||
|
|||||||
@@ -167,6 +167,29 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
|
|||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nr_dlsch_unscrambling(int16_t* llr,
|
||||||
|
uint8_t size,
|
||||||
|
uint8_t q,
|
||||||
|
uint32_t Nid,
|
||||||
|
uint32_t n_RNTI) {
|
||||||
|
|
||||||
|
uint8_t reset;
|
||||||
|
uint32_t x1, x2, s=0;
|
||||||
|
|
||||||
|
reset = 1;
|
||||||
|
x2 = (n_RNTI<<15) + (q<<14) + Nid;
|
||||||
|
|
||||||
|
for (int i=0; i<size; i++) {
|
||||||
|
if ((i&0x1f)==0) {
|
||||||
|
s = lte_gold_generic(&x1, &x2, reset);
|
||||||
|
reset = 0;
|
||||||
|
}
|
||||||
|
if (((s>>(i&0x1f))&1)==1)
|
||||||
|
llr[i] = -llr[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
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,
|
||||||
|
|||||||
@@ -1005,6 +1005,12 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
uint8_t is_crnti,
|
uint8_t is_crnti,
|
||||||
uint8_t llr8_flag);
|
uint8_t llr8_flag);
|
||||||
|
|
||||||
|
void nr_dlsch_unscrambling(int16_t* llr,
|
||||||
|
uint8_t size,
|
||||||
|
uint8_t q,
|
||||||
|
uint32_t Nid,
|
||||||
|
uint32_t n_RNTI);
|
||||||
|
|
||||||
|
|
||||||
uint32_t dlsch_decoding_emul(PHY_VARS_NR_UE *phy_vars_ue,
|
uint32_t dlsch_decoding_emul(PHY_VARS_NR_UE *phy_vars_ue,
|
||||||
uint8_t subframe,
|
uint8_t subframe,
|
||||||
|
|||||||
@@ -4251,6 +4251,9 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
NR_UE_PDSCH *pdsch_vars;
|
NR_UE_PDSCH *pdsch_vars;
|
||||||
uint8_t is_cw0_active = 0;
|
uint8_t is_cw0_active = 0;
|
||||||
uint8_t is_cw1_active = 0;
|
uint8_t is_cw1_active = 0;
|
||||||
|
uint8_t nb_re_dmrs = 6;
|
||||||
|
uint16_t length_dmrs = 1;
|
||||||
|
uint16_t nb_symb_sch = 4;
|
||||||
|
|
||||||
if (dlsch0==NULL)
|
if (dlsch0==NULL)
|
||||||
AssertFatal(0,"dlsch0 should be defined at this level \n");
|
AssertFatal(0,"dlsch0 should be defined at this level \n");
|
||||||
@@ -4315,25 +4318,22 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
if (abstraction_flag == 0) {
|
if (abstraction_flag == 0) {
|
||||||
|
|
||||||
// start ldpc decode for CW 0
|
// start ldpc decode for CW 0
|
||||||
dlsch0->harq_processes[harq_pid]->G = get_G(&ue->frame_parms,
|
dlsch0->harq_processes[harq_pid]->G = nr_get_G(dlsch0->harq_processes[harq_pid]->nb_rb,
|
||||||
dlsch0->harq_processes[harq_pid]->nb_rb,
|
nb_symb_sch,
|
||||||
dlsch0->harq_processes[harq_pid]->rb_alloc_even,
|
nb_re_dmrs,
|
||||||
dlsch0->harq_processes[harq_pid]->Qm,
|
length_dmrs,
|
||||||
dlsch0->harq_processes[harq_pid]->Nl,
|
dlsch0->harq_processes[harq_pid]->Qm,
|
||||||
ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
dlsch0->harq_processes[harq_pid]->Nl);
|
||||||
frame_rx,
|
|
||||||
nr_tti_rx,
|
|
||||||
ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->dlsch_unscrambling_stats);
|
start_meas(&ue->dlsch_unscrambling_stats);
|
||||||
#endif
|
#endif
|
||||||
/*dlsch_unscrambling(&ue->frame_parms,
|
nr_dlsch_unscrambling(pdsch_vars->llr[0],
|
||||||
0,
|
dlsch0->harq_processes[harq_pid]->G,
|
||||||
dlsch0,
|
0,
|
||||||
dlsch0->harq_processes[harq_pid]->G,
|
ue->frame_parms.Nid_cell,
|
||||||
pdsch_vars->llr[0],
|
dlsch0->rnti);
|
||||||
0,
|
|
||||||
nr_tti_rx<<1);*/
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->dlsch_unscrambling_stats);
|
stop_meas(&ue->dlsch_unscrambling_stats);
|
||||||
#endif
|
#endif
|
||||||
@@ -4371,6 +4371,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
dlsch0,
|
dlsch0,
|
||||||
dlsch0->harq_processes[harq_pid],
|
dlsch0->harq_processes[harq_pid],
|
||||||
frame_rx,
|
frame_rx,
|
||||||
|
nb_symb_sch,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
harq_pid,
|
harq_pid,
|
||||||
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
||||||
@@ -4396,25 +4397,20 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
if(is_cw1_active)
|
if(is_cw1_active)
|
||||||
{
|
{
|
||||||
// start ldpc decode for CW 1
|
// start ldpc decode for CW 1
|
||||||
dlsch1->harq_processes[harq_pid]->G = get_G(&ue->frame_parms,
|
dlsch1->harq_processes[harq_pid]->G = nr_get_G(dlsch1->harq_processes[harq_pid]->nb_rb,
|
||||||
dlsch1->harq_processes[harq_pid]->nb_rb,
|
nb_symb_sch,
|
||||||
dlsch1->harq_processes[harq_pid]->rb_alloc_even,
|
nb_re_dmrs,
|
||||||
dlsch1->harq_processes[harq_pid]->Qm,
|
length_dmrs,
|
||||||
dlsch1->harq_processes[harq_pid]->Nl,
|
dlsch1->harq_processes[harq_pid]->Qm,
|
||||||
ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
dlsch1->harq_processes[harq_pid]->Nl);
|
||||||
frame_rx,
|
|
||||||
nr_tti_rx,
|
|
||||||
ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->dlsch_unscrambling_stats);
|
start_meas(&ue->dlsch_unscrambling_stats);
|
||||||
#endif
|
#endif
|
||||||
/*dlsch_unscrambling(&ue->frame_parms,
|
nr_dlsch_unscrambling(pdsch_vars->llr[1],
|
||||||
0,
|
dlsch1->harq_processes[harq_pid]->G,
|
||||||
dlsch1,
|
0,
|
||||||
dlsch1->harq_processes[harq_pid]->G,
|
ue->frame_parms.Nid_cell,
|
||||||
pdsch_vars->llr[1],
|
dlsch1->rnti);
|
||||||
1,
|
|
||||||
nr_tti_rx<<1);*/
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->dlsch_unscrambling_stats);
|
stop_meas(&ue->dlsch_unscrambling_stats);
|
||||||
#endif
|
#endif
|
||||||
@@ -4452,6 +4448,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
dlsch1,
|
dlsch1,
|
||||||
dlsch1->harq_processes[harq_pid],
|
dlsch1->harq_processes[harq_pid],
|
||||||
frame_rx,
|
frame_rx,
|
||||||
|
nb_symb_sch,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
harq_pid,
|
harq_pid,
|
||||||
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
||||||
@@ -5634,16 +5631,26 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
//#if 0
|
//#if 0
|
||||||
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
||||||
//to update from pdsch config
|
//to update from pdsch config
|
||||||
nr_gold_pdsch(ue,0,0, 1);
|
nr_gold_pdsch(ue,2,0, 1);
|
||||||
|
|
||||||
|
int nb_prefix_samples0 = ue->frame_parms.nb_prefix_samples0;
|
||||||
|
ue->frame_parms.nb_prefix_samples0 = ue->frame_parms.nb_prefix_samples;
|
||||||
|
|
||||||
nr_slot_fep(ue,
|
nr_slot_fep(ue,
|
||||||
2, //to be updated from higher layer
|
2, //to be updated from higher layer
|
||||||
(nr_tti_rx<<1),
|
nr_tti_rx,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
NR_PDSCH_EST);
|
NR_PDSCH_EST);
|
||||||
|
|
||||||
|
//put back nb_prefix_samples0
|
||||||
|
ue->frame_parms.nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
|
|
||||||
|
//set active for testing, to be removed
|
||||||
|
if (nr_tti_rx==1)
|
||||||
|
ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 1;
|
||||||
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->generic_stat);
|
start_meas(&ue->generic_stat);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -527,6 +527,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
for (SNR=snr0;SNR<snr1;SNR+=snr_step)
|
for (SNR=snr0;SNR<snr1;SNR+=snr_step)
|
||||||
{
|
{
|
||||||
|
for (trial=0; trial < n_trials; trial++)
|
||||||
|
{
|
||||||
|
|
||||||
for (i = 0; i < available_bits; i++) {
|
for (i = 0; i < available_bits; i++) {
|
||||||
#ifdef DEBUG_CODER
|
#ifdef DEBUG_CODER
|
||||||
@@ -567,6 +569,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if (errors_bit_uncoded>10)
|
||||||
printf("errors bits uncoded %f\n", errors_bit_uncoded);
|
printf("errors bits uncoded %f\n", errors_bit_uncoded);
|
||||||
|
|
||||||
|
|
||||||
@@ -597,8 +600,9 @@ int main(int argc, char **argv)
|
|||||||
//printf("estimated bits error occurs @%d ",i);
|
//printf("estimated bits error occurs @%d ",i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//if (errors_bit>10)
|
||||||
printf("\n errors_bit %d \n", errors_bit);
|
printf("\n errors_bit %d (trial %d)\n", errors_bit,trial);
|
||||||
|
}
|
||||||
|
|
||||||
printf("SNR %f, BER %f \n",SNR,(float)errors_bit/(float)n_trials/(float)TBS);
|
printf("SNR %f, BER %f \n",SNR,(float)errors_bit/(float)n_trials/(float)TBS);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user