Minor fixes in "ulsim.c" and removing some warnings
This commit is contained in:
committed by
Thomas Schlichter
parent
5d0c0be1fe
commit
63a2e61101
@@ -262,8 +262,8 @@ int nr_slot_fep_ul(PHY_VARS_gNB *gNB,
|
|||||||
else
|
else
|
||||||
rxdata_offset = slot_offset + nb_prefix_samples0 + (symbol * (frame_parms->ofdm_symbol_size + nb_prefix_samples)) - SOFFSET;
|
rxdata_offset = slot_offset + nb_prefix_samples0 + (symbol * (frame_parms->ofdm_symbol_size + nb_prefix_samples)) - SOFFSET;
|
||||||
|
|
||||||
dft((int16_t *)&gNB->common_vars.rxdata[0][rxdata_offset],
|
dft((int16_t *)&gNB->common_vars.rxdata[aa][rxdata_offset],
|
||||||
(int16_t *)&gNB->common_vars.rxdataF[0][symbol * frame_parms->ofdm_symbol_size], 1);
|
(int16_t *)&gNB->common_vars.rxdataF[aa][symbol * frame_parms->ofdm_symbol_size], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
|
|||||||
@@ -205,7 +205,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
uint32_t *pz;
|
uint32_t *pz;
|
||||||
uint8_t mod_order;
|
uint8_t mod_order;
|
||||||
uint16_t Kr,r,r_offset;
|
uint16_t Kr,r,r_offset;
|
||||||
//uint8_t *d_tmp[MAX_NUM_DLSCH_SEGMENTS];
|
|
||||||
uint8_t BG;
|
uint8_t BG;
|
||||||
uint32_t E;
|
uint32_t E;
|
||||||
uint8_t Ilbrm;
|
uint8_t Ilbrm;
|
||||||
@@ -255,7 +254,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
|
|
||||||
G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs,mod_order,harq_process->Nl);
|
G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs,mod_order,harq_process->Nl);
|
||||||
LOG_D(PHY,"ulsch coding A %d G %d mod_order %d\n", A,G, mod_order);
|
LOG_D(PHY,"ulsch coding A %d G %d mod_order %d\n", A,G, mod_order);
|
||||||
printf("ulsch coding A %d G %d mod_order %d\n", A,G, mod_order);
|
|
||||||
|
|
||||||
Tbslbrm = nr_compute_tbs(28,nb_rb,frame_parms->symbols_per_slot,0,0, harq_process->Nl);
|
Tbslbrm = nr_compute_tbs(28,nb_rb,frame_parms->symbols_per_slot,0,0, harq_process->Nl);
|
||||||
|
|
||||||
@@ -316,6 +315,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
Kr_bytes = Kr>>3;
|
Kr_bytes = Kr>>3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
printf("ulsch coding A %d G %d mod_order %d C %d\n", A,G, mod_order, harq_process->C);
|
||||||
///////////
|
///////////
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -327,7 +327,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
|
|
||||||
//start_meas(te_stats);
|
//start_meas(te_stats);
|
||||||
for (r=0; r<harq_process->C; r++) {
|
for (r=0; r<harq_process->C; r++) {
|
||||||
//d_tmp[r] = &harq_process->d[r][0];
|
|
||||||
//channel_input[r] = &harq_process->d[r][0];
|
//channel_input[r] = &harq_process->d[r][0];
|
||||||
#ifdef DEBUG_DLSCH_CODING
|
#ifdef DEBUG_DLSCH_CODING
|
||||||
printf("Encoder: B %d F %d \n",harq_process->B, harq_process->F);
|
printf("Encoder: B %d F %d \n",harq_process->B, harq_process->F);
|
||||||
@@ -354,7 +353,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
}
|
}
|
||||||
printf("\n");*/
|
printf("\n");*/
|
||||||
|
|
||||||
//ldpc_encoder_optim_8seg(harq_process->c,d_tmp,Kr,BG,harq_process->C,NULL,NULL,NULL,NULL);
|
|
||||||
ldpc_encoder_optim_8seg(harq_process->c,harq_process->d,Kr,BG,harq_process->C,NULL,NULL,NULL,NULL);
|
ldpc_encoder_optim_8seg(harq_process->c,harq_process->d,Kr,BG,harq_process->C,NULL,NULL,NULL,NULL);
|
||||||
|
|
||||||
//stop_meas(te_stats);
|
//stop_meas(te_stats);
|
||||||
|
|||||||
@@ -216,7 +216,6 @@ int main(int argc, char **argv) {
|
|||||||
int frame = 0;
|
int frame = 0;
|
||||||
int frame_length_complex_samples;
|
int frame_length_complex_samples;
|
||||||
NR_DL_FRAME_PARMS *frame_parms;
|
NR_DL_FRAME_PARMS *frame_parms;
|
||||||
int ret;
|
|
||||||
int loglvl = OAILOG_WARNING;
|
int loglvl = OAILOG_WARNING;
|
||||||
uint64_t SSB_positions=0x01;
|
uint64_t SSB_positions=0x01;
|
||||||
uint16_t nb_symb_sch = 12;
|
uint16_t nb_symb_sch = 12;
|
||||||
@@ -227,7 +226,7 @@ int main(int argc, char **argv) {
|
|||||||
int ap;
|
int ap;
|
||||||
int tx_offset;
|
int tx_offset;
|
||||||
double txlev;
|
double txlev;
|
||||||
int start_rb = 90;
|
int start_rb = 30;
|
||||||
|
|
||||||
cpuf = get_cpu_freq_GHz();
|
cpuf = get_cpu_freq_GHz();
|
||||||
|
|
||||||
@@ -501,7 +500,6 @@ int main(int argc, char **argv) {
|
|||||||
ulsim_params.n_rnti = n_rnti;
|
ulsim_params.n_rnti = n_rnti;
|
||||||
|
|
||||||
unsigned char harq_pid = 0;
|
unsigned char harq_pid = 0;
|
||||||
uint8_t is_crnti = 0;
|
|
||||||
unsigned int TBS = 8424;
|
unsigned int TBS = 8424;
|
||||||
unsigned int available_bits;
|
unsigned int available_bits;
|
||||||
uint8_t nb_re_dmrs = UE->dmrs_UplinkConfig.pusch_maxLength*(UE->dmrs_UplinkConfig.pusch_dmrs_type == pusch_dmrs_type1)?6:4;
|
uint8_t nb_re_dmrs = UE->dmrs_UplinkConfig.pusch_maxLength*(UE->dmrs_UplinkConfig.pusch_dmrs_type == pusch_dmrs_type1)?6:4;
|
||||||
@@ -517,9 +515,6 @@ int main(int argc, char **argv) {
|
|||||||
nfapi_nr_ul_config_ulsch_pdu *rel15_ul = &ulsch_gNB->harq_processes[harq_pid]->ulsch_pdu;
|
nfapi_nr_ul_config_ulsch_pdu *rel15_ul = &ulsch_gNB->harq_processes[harq_pid]->ulsch_pdu;
|
||||||
|
|
||||||
NR_UE_ULSCH_t **ulsch_ue = UE->ulsch[0][0];
|
NR_UE_ULSCH_t **ulsch_ue = UE->ulsch[0][0];
|
||||||
|
|
||||||
|
|
||||||
printf("available bits %d TBS %d mod_order %d\n", available_bits, TBS, mod_order);
|
|
||||||
|
|
||||||
// --------- setting rel15_ul parameters ----------
|
// --------- setting rel15_ul parameters ----------
|
||||||
rel15_ul->rnti = n_rnti;
|
rel15_ul->rnti = n_rnti;
|
||||||
@@ -576,6 +571,8 @@ int main(int argc, char **argv) {
|
|||||||
frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples);
|
frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples);
|
||||||
|
|
||||||
txlev = txlev/(double)AMP; // output of signal_energy is fixed point representation
|
txlev = txlev/(double)AMP; // output of signal_energy is fixed point representation
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
for (SNR = snr0; SNR < snr1; SNR += snr_step) {
|
for (SNR = snr0; SNR < snr1; SNR += snr_step) {
|
||||||
|
|
||||||
@@ -610,20 +607,26 @@ int main(int argc, char **argv) {
|
|||||||
//---------------------- count errors ----------------------
|
//---------------------- count errors ----------------------
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
|
|
||||||
for (i = 0; i < TBS; i++) {
|
for (i = 0; i < available_bits; i++) {
|
||||||
|
|
||||||
if(((ulsch_ue[0]->g[i] == 0) && (gNB->pusch_vars[UE_id]->llr[i] <= 0)) ||
|
if(((ulsch_ue[0]->g[i] == 0) && (gNB->pusch_vars[UE_id]->llr[i] <= 0)) ||
|
||||||
((ulsch_ue[0]->g[i] == 1) && (gNB->pusch_vars[UE_id]->llr[i] >= 0)))
|
((ulsch_ue[0]->g[i] == 1) && (gNB->pusch_vars[UE_id]->llr[i] >= 0)))
|
||||||
{
|
{
|
||||||
if(errors_scrambling == 0)
|
if(errors_scrambling == 0)
|
||||||
printf("First bit in error = %d\n",i);
|
printf("First bit in error in unscrambling = %d\n",i);
|
||||||
errors_scrambling++;
|
errors_scrambling++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < TBS; i++) {
|
||||||
|
|
||||||
estimated_output_bit[i] = (ulsch_gNB->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7);
|
estimated_output_bit[i] = (ulsch_gNB->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7);
|
||||||
test_input_bit[i] = (test_input[i / 8] & (1 << (i & 7))) >> (i & 7); // Further correct for multiple segments
|
test_input_bit[i] = (test_input[i / 8] & (1 << (i & 7))) >> (i & 7); // Further correct for multiple segments
|
||||||
|
|
||||||
if (estimated_output_bit[i] != test_input_bit[i]) {
|
if (estimated_output_bit[i] != test_input_bit[i]) {
|
||||||
|
if(errors_bit == 0)
|
||||||
|
printf("First bit in error in decoding = %d\n",i);
|
||||||
errors_bit++;
|
errors_bit++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -641,17 +644,21 @@ int main(int argc, char **argv) {
|
|||||||
if (n_trials == 1)
|
if (n_trials == 1)
|
||||||
printf("errors_bit %d (trial %d)\n", errors_bit, trial);
|
printf("errors_bit %d (trial %d)\n", errors_bit, trial);
|
||||||
}
|
}
|
||||||
|
printf("\n");
|
||||||
} // [hna] for (trial = 0; trial < n_trials; trial++)
|
} // [hna] for (trial = 0; trial < n_trials; trial++)
|
||||||
|
|
||||||
printf("*****************************************\n");
|
printf("*****************************************\n");
|
||||||
printf("SNR %f, (false positive %f)\n", SNR,
|
printf("SNR %f, (false positive %f)\n", SNR,
|
||||||
(float) n_false_positive / (float) n_trials);
|
(float) n_false_positive / (float) n_trials);
|
||||||
printf("*****************************************\n");
|
printf("*****************************************\n");
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
if (errors_bit == 0) {
|
if (errors_bit == 0) {
|
||||||
printf("PUSCH test OK\n");
|
printf("PUSCH test OK\n");
|
||||||
|
printf("\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
printf("\n");
|
||||||
} // [hna] for (SNR = snr0; SNR < snr1; SNR += snr_step)
|
} // [hna] for (SNR = snr0; SNR < snr1; SNR += snr_step)
|
||||||
|
|
||||||
|
|
||||||
@@ -665,7 +672,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
free_gNB_ulsch(gNB->ulsch[0][i]);
|
free_gNB_ulsch(gNB->ulsch[0][i]);
|
||||||
|
|
||||||
printf("gNB ulsch[%d][%d]\n",UE_id, i);
|
printf("gNB ulsch[%d][%d]\n",UE_id+1, i);
|
||||||
|
|
||||||
free_gNB_ulsch(gNB->ulsch[UE_id+1][i]); // "+1" because first element in ulsch is for RA
|
free_gNB_ulsch(gNB->ulsch[UE_id+1][i]); // "+1" because first element in ulsch is for RA
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user