Commit 63a2e611 authored by Ahmed Hussein's avatar Ahmed Hussein Committed by Thomas Schlichter

Minor fixes in "ulsim.c" and removing some warnings

parent 5d0c0be1
...@@ -262,8 +262,8 @@ int nr_slot_fep_ul(PHY_VARS_gNB *gNB, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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;
...@@ -518,9 +516,6 @@ int main(int argc, char **argv) { ...@@ -518,9 +516,6 @@ int main(int argc, char **argv) {
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;
rel15_ul->ulsch_pdu_rel15.start_rb = start_rb; rel15_ul->ulsch_pdu_rel15.start_rb = start_rb;
...@@ -577,6 +572,8 @@ int main(int argc, char **argv) { ...@@ -577,6 +572,8 @@ int main(int argc, char **argv) {
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) {
n_errors = 0; n_errors = 0;
...@@ -610,20 +607,26 @@ int main(int argc, char **argv) { ...@@ -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) { ...@@ -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) { ...@@ -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
......
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