A bit of clean-up.

This commit is contained in:
lukashov
2016-07-07 14:26:00 +02:00
parent b8e9e188c1
commit aa69c550e3
3 changed files with 3925 additions and 3978 deletions
+24 -47
View File
@@ -242,10 +242,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
first_re=6; first_re=6;
for (re=first_re; re<last_re; re++) { for (re=first_re; re<last_re; re++) {
// printf("element %d precoder_index for allocation %d\n",re, precoder_index ); // printf("element %d precoder_index for allocation %d\n",re, precoder_index );
if ((skip_dc == 1) && (re==6)) if ((skip_dc == 1) && (re==6))
re_off=re_off - frame_parms->ofdm_symbol_size+1; re_off=re_off - frame_parms->ofdm_symbol_size+1;
@@ -393,7 +391,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
case 4: //16QAM case 4: //16QAM
// Antenna 0 position n // Antenna 0 position n
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
@@ -419,6 +416,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
if (x0[*jj] == 1) if (x0[*jj] == 1)
qam16_table_offset_re+=2; qam16_table_offset_re+=2;
*jj=*jj+1; *jj=*jj+1;
@@ -437,8 +435,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
((int16_t *)&txdataF[1][tti_offset])[0]+=-(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_re])>>15); ((int16_t *)&txdataF[1][tti_offset])[0]+=-(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_re])>>15);
((int16_t *)&txdataF[1][tti_offset])[1]+=(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_im])>>15); ((int16_t *)&txdataF[1][tti_offset])[1]+=(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_im])>>15);
break; break;
case 6: // 64-QAM case 6: // 64-QAM
// Antenna 0 // Antenna 0
@@ -515,19 +513,18 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
if (frame_parms->nb_antennas_tx == 2) { if (frame_parms->nb_antennas_tx == 2) {
switch (mod_order0) { switch (mod_order0) {
default: default:
LOG_E(PHY,"Unknown mod_order0 %d\n",mod_order0); LOG_E(PHY,"Unknown mod_order0 %d\n",mod_order0);
xx0_re=xx0_im=0; xx0_re=xx0_im=0;
break; break;
case 2: //QPSK case 2: //QPSK
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
xx0_re = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; xx0_re = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
*jj = *jj + 1; *jj = *jj + 1;
xx0_im = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; xx0_im = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
*jj = *jj + 1; *jj = *jj + 1;
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
break; break;
@@ -582,15 +579,17 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
xx0_re = qam_table_s0[qam64_table_offset_re0]; xx0_re = qam_table_s0[qam64_table_offset_re0];
xx0_im = qam_table_s0[qam64_table_offset_im0]; xx0_im = qam_table_s0[qam64_table_offset_im0];
break; break;
} }
switch (mod_order1) { switch (mod_order1) {
default: default:
LOG_E(PHY,"Unknown mod_order1 %d\n",mod_order1); LOG_E(PHY,"Unknown mod_order1 %d\n",mod_order1);
xx1_re=xx1_im=0; xx1_re=xx1_im=0;
break; break;
case 2: //QPSK case 2: //QPSK
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
xx1_re = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; xx1_re = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
@@ -649,7 +648,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
xx1_re = qam_table_s1[qam64_table_offset_re1]; xx1_re = qam_table_s1[qam64_table_offset_re1];
xx1_im = qam_table_s1[qam64_table_offset_im1]; xx1_im = qam_table_s1[qam64_table_offset_im1];
break; break;
} }
@@ -679,7 +677,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
amp = (int16_t)(((int32_t)tmp_amp*ONE_OVER_SQRT2_Q15)>>15); amp = (int16_t)(((int32_t)tmp_amp*ONE_OVER_SQRT2_Q15)>>15);
switch (mod_order0) { switch (mod_order0) {
case 2: //QPSK case 2:
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; ((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
*jj = *jj + 1; *jj = *jj + 1;
@@ -698,7 +696,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 4: //16QAM case 4:
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
@@ -733,8 +731,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 6: //64QAM case 6:
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
@@ -770,14 +767,12 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
} }
break; break;
} }
} }
else if ((mimo_mode >= DUALSTREAM_UNIFORM_PRECODING1)&&(mimo_mode <= DUALSTREAM_PUSCH_PRECODING)) { else if ((mimo_mode >= DUALSTREAM_UNIFORM_PRECODING1)&&(mimo_mode <= DUALSTREAM_PUSCH_PRECODING)) {
// this is for transmission mode 4 (1 layer) // this is for transmission mode 4 (1 layer)
*re_allocated = *re_allocated + 1; *re_allocated = *re_allocated + 1;
if (precoder_index==0) { if (precoder_index==0) {
precoder_index0 = 0; //[1 1] precoder_index0 = 0; //[1 1]
precoder_index1 = 1; //[1 -1] precoder_index1 = 1; //[1 -1]
@@ -792,7 +787,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
} }
switch (mod_order0) { switch (mod_order0) {
case 2: //QPSK case 2:
((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; ((int16_t*)&tmp_sample1)[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
*jj = *jj + 1; *jj = *jj + 1;
@@ -813,7 +808,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 4: //16QAM case 4:
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
@@ -825,7 +820,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
qam16_table_offset_im+=2; qam16_table_offset_im+=2;
*jj=*jj+1; *jj=*jj+1;
if (x0[*jj] == 1) if (x0[*jj] == 1)
qam16_table_offset_re+=1; qam16_table_offset_re+=1;
*jj=*jj+1; *jj=*jj+1;
@@ -846,11 +840,11 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 6: //64QAM case 6:
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
if (x0[*jj] == 1) if (x0[*jj] == 1)
qam64_table_offset_re+=4; qam64_table_offset_re+=4;
*jj=*jj+1; *jj=*jj+1;
@@ -887,7 +881,8 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
if (dlsch1_harq) { if (dlsch1_harq) {
switch (mod_order1) { switch (mod_order1) {
case 2: //QPSK
case 2:
((int16_t*)&tmp_sample1)[0] = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; ((int16_t*)&tmp_sample1)[0] = (x1[*jj2]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK;
*jj2 = *jj2 + 1; *jj2 = *jj2 + 1;
@@ -906,7 +901,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 4: //16QAM case 4:
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
@@ -939,8 +934,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
break; break;
case 6: //64QAM case 6:
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
@@ -1042,7 +1036,6 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
case 6: //64QAM case 6: //64QAM
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
@@ -1090,10 +1083,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
return(-1); return(-1);
} }
} }
} }
return(0); return(0);
} }
@@ -1150,7 +1140,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
switch (mod_order) { switch (mod_order) {
case 2: //QPSK case 2:
//printf("%d : %d,%d => ",tti_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d : %d,%d => ",tti_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) for (aa=0; aa<frame_parms->nb_antennas_tx; aa++)
@@ -1166,7 +1156,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
//printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d,%d\n",((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
break; break;
case 4: //16QAM case 4:
qam16_table_offset_re = 0; qam16_table_offset_re = 0;
qam16_table_offset_im = 0; qam16_table_offset_im = 0;
@@ -1201,8 +1191,7 @@ int allocate_REs_in_RB_MCH(int32_t **txdataF,
break; break;
case 6: //64QAM case 6:
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
@@ -1588,7 +1577,6 @@ int dlsch_modulation(int32_t **txdataF,
re_offset+=12; // go to next RB re_offset+=12; // go to next RB
// check if we crossed the symbol boundary and skip DC // check if we crossed the symbol boundary and skip DC
if (re_offset >= frame_parms->ofdm_symbol_size) { if (re_offset >= frame_parms->ofdm_symbol_size) {
if (skip_dc == 0) //even number of RBs (doesn't straddle DC) if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
@@ -1597,11 +1585,8 @@ int dlsch_modulation(int32_t **txdataF,
re_offset=7; // odd number of RBs re_offset=7; // odd number of RBs
} }
} }
} }
#ifdef DEBUG_DLSCH_MODULATION #ifdef DEBUG_DLSCH_MODULATION
msg("generate_dlsch : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch0_harq->nb_rb,dlsch0_harq->rb_alloc,mod_order0,Nl0,2,0,subframe_offset)); msg("generate_dlsch : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch0_harq->nb_rb,dlsch0_harq->rb_alloc,mod_order0,Nl0,2,0,subframe_offset));
#endif #endif
@@ -1657,16 +1642,15 @@ int dlsch_modulation_SIC(int32_t **sic_buffer,
/* TODO: handle more than 1 antenna */ /* TODO: handle more than 1 antenna */
//printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); //printf("%d(%d) : %d,%d => ",tti_offset,*jj,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]);
((int16_t*)&sic_buffer[0][i])[0] += (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //I //b_i ((int16_t*)&sic_buffer[0][i])[0] = (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //I //b_i
jj = jj + 1; jj = jj + 1;
((int16_t*)&sic_buffer[0][i])[1] += (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //Q //b_{i+1} ((int16_t*)&sic_buffer[0][i])[1] = (x0[jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //Q //b_{i+1}
jj = jj + 1; jj = jj + 1;
//printf("recon %d,%d\n",((int16_t*)&sic_buffer[0][i])[0],((int16_t*)&sic_buffer[0][i])[1]); //printf("recon %d,%d\n",((int16_t*)&sic_buffer[0][i])[0],((int16_t*)&sic_buffer[0][i])[1]);
i++; i++;
break; break;
@@ -1705,8 +1689,7 @@ int dlsch_modulation_SIC(int32_t **sic_buffer,
break; break;
case 6: //64QAM case 6:
qam64_table_offset_re = 0; qam64_table_offset_re = 0;
qam64_table_offset_im = 0; qam64_table_offset_im = 0;
@@ -1814,7 +1797,6 @@ int mch_modulation(int32_t **txdataF,
} }
if (mod_order == 4) if (mod_order == 4)
qam_table_s = qam16_table_a; qam_table_s = qam16_table_a;
else if (mod_order == 6) else if (mod_order == 6)
@@ -1838,7 +1820,6 @@ int mch_modulation(int32_t **txdataF,
re_offset+=12; // go to next RB re_offset+=12; // go to next RB
// check if we crossed the symbol boundary and skip DC // check if we crossed the symbol boundary and skip DC
if (re_offset >= frame_parms->ofdm_symbol_size) { if (re_offset >= frame_parms->ofdm_symbol_size) {
if (skip_dc == 0) //even number of RBs (doesn't straddle DC) if (skip_dc == 0) //even number of RBs (doesn't straddle DC)
@@ -1849,10 +1830,6 @@ int mch_modulation(int32_t **txdataF,
} }
} }
#ifdef DEBUG_DLSCH_MODULATION #ifdef DEBUG_DLSCH_MODULATION
msg("generate_dlsch(MCH) : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch->harq_processes[0]->nb_rb,dlsch->harq_processes[0]->rb_alloc,mod_order,1,2,0,subframe_offset)); msg("generate_dlsch(MCH) : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch->harq_processes[0]->nb_rb,dlsch->harq_processes[0]->rb_alloc,mod_order,1,2,0,subframe_offset));
#endif #endif
+26 -56
View File
@@ -435,19 +435,15 @@ int main(int argc, char **argv)
case 'B': case 'B':
channel_model=SCM_B; channel_model=SCM_B;
break; break;
case 'C': case 'C':
channel_model=SCM_C; channel_model=SCM_C;
break; break;
case 'D': case 'D':
channel_model=SCM_D; channel_model=SCM_D;
break; break;
case 'E': case 'E':
channel_model=EPA; channel_model=EPA;
break; break;
case 'F': case 'F':
channel_model=EVA; channel_model=EVA;
break; break;
@@ -668,7 +664,6 @@ int main(int argc, char **argv)
n_users = 2; n_users = 2;
eNB_id_i = PHY_vars_UE->n_connected_eNB; eNB_id_i = PHY_vars_UE->n_connected_eNB;
//eNB_id_i=1; //eNB_id_i=1;
} }
else else
eNB_id_i = eNB_id; eNB_id_i = eNB_id;
@@ -1035,8 +1030,6 @@ n(tikz_fname,"w");
} }
if (input_fd==NULL) { if (input_fd==NULL) {
/* /*
// common DCI // common DCI
memcpy(&dci_alloc[num_dci].dci_pdu[0],&CCCH_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); memcpy(&dci_alloc[num_dci].dci_pdu[0],&CCCH_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t));
@@ -1933,7 +1926,6 @@ n(tikz_fname,"w");
} }
break; break;
case 5: case 5:
case 6: case 6:
memcpy(&dci_alloc[num_dci].dci_pdu[0],&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); memcpy(&dci_alloc[num_dci].dci_pdu[0],&DLSCH_alloc_pdu2_1E[k],sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t));
@@ -1979,11 +1971,13 @@ n(tikz_fname,"w");
*/ */
} }
if (n_frames==1) printf("num_pdcch_symbols %d, numCCE %d => ",num_pdcch_symbols,numCCE); if (n_frames==1)
printf("num_pdcch_symbols %d, numCCE %d => ",num_pdcch_symbols,numCCE);
numCCE = get_nCCE(num_pdcch_symbols,&PHY_vars_eNB->lte_frame_parms,get_mi(&PHY_vars_eNB->lte_frame_parms,subframe)); numCCE = get_nCCE(num_pdcch_symbols,&PHY_vars_eNB->lte_frame_parms,get_mi(&PHY_vars_eNB->lte_frame_parms,subframe));
if (n_frames==1) printf("%d\n",numCCE); if (n_frames==1)
printf("%d\n",numCCE);
// apply RNTI-based nCCE allocation // apply RNTI-based nCCE allocation
memset(CCE_table,0,800*sizeof(int)); memset(CCE_table,0,800*sizeof(int));
@@ -2366,8 +2360,6 @@ n(tikz_fname,"w");
PHY_vars_eNB->dlsch_eNB[0][0]->harq_processes[0]->rvidx = round&3; PHY_vars_eNB->dlsch_eNB[0][0]->harq_processes[0]->rvidx = round&3;
if (PHY_vars_eNB->lte_frame_parms.frame_type == TDD) { if (PHY_vars_eNB->lte_frame_parms.frame_type == TDD) {
switch (transmission_mode) { switch (transmission_mode) {
case 1: case 1:
case 2: case 2:
@@ -2771,8 +2763,7 @@ n(tikz_fname,"w");
0,subframe, 0,subframe,
&PHY_vars_eNB->dlsch_rate_matching_stats, &PHY_vars_eNB->dlsch_rate_matching_stats,
&PHY_vars_eNB->dlsch_turbo_encoding_stats, &PHY_vars_eNB->dlsch_turbo_encoding_stats,
&PHY_vars_eNB->dlsch_interleaving_stats &PHY_vars_eNB->dlsch_interleaving_stats)<0)
)<0)
exit(-1); exit(-1);
@@ -2877,7 +2868,6 @@ n(tikz_fname,"w");
if (n_frames==1) { if (n_frames==1) {
printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB); printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
write_output("txsig0.m","txs0", &PHY_vars_eNB->lte_eNB_common_vars.txdata[eNB_id][0][subframe* PHY_vars_eNB->lte_frame_parms.samples_per_tti], write_output("txsig0.m","txs0", &PHY_vars_eNB->lte_eNB_common_vars.txdata[eNB_id][0][subframe* PHY_vars_eNB->lte_frame_parms.samples_per_tti],
PHY_vars_eNB->lte_frame_parms.samples_per_tti,1,1); PHY_vars_eNB->lte_frame_parms.samples_per_tti,1,1);
} }
} }
@@ -3103,15 +3093,14 @@ n(tikz_fname,"w");
if (PHY_vars_UE->perfect_ce==1) { if (PHY_vars_UE->perfect_ce==1) {
if (awgn_flag==0) { if (awgn_flag==0) {
for(k=0; k<NUMBER_OF_eNB_MAX; k++) { for(k=0; k<NUMBER_OF_eNB_MAX; k++) {
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) { for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
for (i=0; i<frame_parms->N_RB_DL*12; i++) { for (i=0; i<frame_parms->N_RB_DL*12; i++) {
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)( ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=
eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].x*AMP); (int16_t)(eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].x*AMP);
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)( ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=
eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].y*AMP); (int16_t)(eNB2UE[round]->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].y*AMP);
} }
} }
} }
@@ -3128,8 +3117,7 @@ n(tikz_fname,"w");
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=-(short)(AMP); ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=-(short)(AMP);
((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=0; ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][3])[2*i+1+((l+(Ns%2)*pilot2)*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=0;
} }
} } else {
else{
for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) { for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
for (i=0; i<frame_parms->N_RB_DL*12; i++) { for (i=0; i<frame_parms->N_RB_DL*12; i++) {
@@ -3141,6 +3129,7 @@ n(tikz_fname,"w");
} }
} }
} }
if ((Ns==((2*subframe))) && (l==0)) { if ((Ns==((2*subframe))) && (l==0)) {
lte_ue_measurements(PHY_vars_UE, lte_ue_measurements(PHY_vars_UE,
subframe*PHY_vars_UE->lte_frame_parms.samples_per_tti, subframe*PHY_vars_UE->lte_frame_parms.samples_per_tti,
@@ -3183,11 +3172,10 @@ n(tikz_fname,"w");
if ((Ns==(2*subframe)) && (l==pilot1)) {// process symbols 0,1,2 if ((Ns==(2*subframe)) && (l==pilot1)) {// process symbols 0,1,2
if (dci_flag == 1) { if (dci_flag == 1) {
PHY_vars_UE->UE_mode[0] = PUSCH; PHY_vars_UE->UE_mode[0] = PUSCH;
start_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats); start_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
rx_pdcch(&PHY_vars_UE->lte_ue_common_vars, rx_pdcch(&PHY_vars_UE->lte_ue_common_vars,
PHY_vars_UE->lte_ue_pdcch_vars, PHY_vars_UE->lte_ue_pdcch_vars,
&PHY_vars_UE->lte_frame_parms, &PHY_vars_UE->lte_frame_parms,
@@ -3196,6 +3184,7 @@ n(tikz_fname,"w");
(PHY_vars_UE->lte_frame_parms.mode1_flag == 1) ? SISO : ALAMOUTI, (PHY_vars_UE->lte_frame_parms.mode1_flag == 1) ? SISO : ALAMOUTI,
PHY_vars_UE->high_speed_flag, PHY_vars_UE->high_speed_flag,
0); 0);
stop_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats); stop_meas(&PHY_vars_UE->dlsch_rx_pdcch_stats);
// overwrite number of pdcch symbols // overwrite number of pdcch symbols
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols; PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
@@ -3247,7 +3236,8 @@ n(tikz_fname,"w");
get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs), get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs),
PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->Nl, PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->Nl,
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols, PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,
0,subframe); 0,
subframe);
/* /*
rate = (double)dlsch_tbs25[get_I_TBS(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs)][PHY_vars_UE->dlsch_ue[0][0]->nb_rb-1]/(coded_bits_per_codeword); rate = (double)dlsch_tbs25[get_I_TBS(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs)][PHY_vars_UE->dlsch_ue[0][0]->nb_rb-1]/(coded_bits_per_codeword);
rate*=get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs); rate*=get_Qm(PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->mcs);
@@ -3255,8 +3245,7 @@ n(tikz_fname,"w");
printf("num_pdcch_symbols %d, G %d, TBS %d\n",PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,coded_bits_per_codeword,PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->TBS); printf("num_pdcch_symbols %d, G %d, TBS %d\n",PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols,coded_bits_per_codeword,PHY_vars_UE->dlsch_ue[0][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->TBS);
dlsch_active = 1; dlsch_active = 1;
} } else {
else {
dlsch_active = 0; dlsch_active = 0;
if (round==0) { if (round==0) {
dci_errors++; dci_errors++;
@@ -3273,9 +3262,7 @@ n(tikz_fname,"w");
// round=5; // round=5;
} }
} }
} // if dci_flag==1 } else { //dci_flag == 0
else { //dci_flag == 0
PHY_vars_UE->lte_ue_pdcch_vars[0]->crnti = n_rnti; PHY_vars_UE->lte_ue_pdcch_vars[0]->crnti = n_rnti;
PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols; PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
if (round == 0) { if (round == 0) {
@@ -3340,16 +3327,13 @@ n(tikz_fname,"w");
0, 0,
P_RNTI); P_RNTI);
break; break;
} }
dlsch_active = 1; dlsch_active = 1;
} // if dci_flag == 1 } // if dci_flag == 1
} }
if (dlsch_active == 1) { if (dlsch_active == 1) {
if ((Ns==(1+(2*subframe))) && (l==0)) {// process PDSCH symbols 1,2,3,4,5,(6 Normal Prefix) if ((Ns==(1+(2*subframe))) && (l==0)) {// process PDSCH symbols 1,2,3,4,5,(6 Normal Prefix
if (transmission_mode == 5) { if (transmission_mode == 5) {
if ((PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->dl_power_off==0) && if ((PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid]->dl_power_off==0) &&
(openair_daq_vars.use_ia_receiver ==1)) { (openair_daq_vars.use_ia_receiver ==1)) {
@@ -3362,10 +3346,7 @@ n(tikz_fname,"w");
start_meas(&PHY_vars_UE->dlsch_llr_stats); start_meas(&PHY_vars_UE->dlsch_llr_stats);
for (m=PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols; for (m=PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols; m<pilot2; m++) {
m<pilot2;
m++)
{
if (rx_pdsch(PHY_vars_UE, if (rx_pdsch(PHY_vars_UE,
PDSCH, PDSCH,
eNB_id, eNB_id,
@@ -3375,8 +3356,7 @@ n(tikz_fname,"w");
(m==PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols)?1:0, (m==PHY_vars_UE->lte_ue_pdcch_vars[0]->num_pdcch_symbols)?1:0,
rx_type, rx_type,
i_mod, i_mod,
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1) PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1){
{
dlsch_active = 0; dlsch_active = 0;
break; break;
} }
@@ -3384,13 +3364,9 @@ n(tikz_fname,"w");
stop_meas(&PHY_vars_UE->dlsch_llr_stats); stop_meas(&PHY_vars_UE->dlsch_llr_stats);
} }
if ((Ns==(1+(2*subframe))) && (l==pilot1)) if ((Ns==(1+(2*subframe))) && (l==pilot1)){// process symbols (6 Extended Prefix),7,8,9
{// process symbols (6 Extended Prefix),7,8,9
start_meas(&PHY_vars_UE->dlsch_llr_stats); start_meas(&PHY_vars_UE->dlsch_llr_stats);
for (m=pilot2; for (m=pilot2;m<pilot3; m++) {
m<pilot3;
m++)
{
if (rx_pdsch(PHY_vars_UE, if (rx_pdsch(PHY_vars_UE,
PDSCH, PDSCH,
eNB_id, eNB_id,
@@ -3400,8 +3376,7 @@ n(tikz_fname,"w");
0, 0,
rx_type, rx_type,
i_mod, i_mod,
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1) PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1){
{
dlsch_active=0; dlsch_active=0;
break; break;
} }
@@ -3409,13 +3384,9 @@ n(tikz_fname,"w");
stop_meas(&PHY_vars_UE->dlsch_llr_stats); stop_meas(&PHY_vars_UE->dlsch_llr_stats);
} }
if ((Ns==(2+(2*subframe))) && (l==0)) // process symbols 10,11,(12,13 Normal Prefix) do deinterleaving for TTI if ((Ns==(2+(2*subframe))) && (l==0)) { // process symbols 10,11,(12,13 Normal Prefix) do deinterleaving for TTI
{
start_meas(&PHY_vars_UE->dlsch_llr_stats); start_meas(&PHY_vars_UE->dlsch_llr_stats);
for (m=pilot3; for (m=pilot3; m<PHY_vars_UE->lte_frame_parms.symbols_per_tti; m++) {
m<PHY_vars_UE->lte_frame_parms.symbols_per_tti;
m++)
{
if (rx_pdsch(PHY_vars_UE, if (rx_pdsch(PHY_vars_UE,
PDSCH, PDSCH,
eNB_id, eNB_id,
@@ -3425,8 +3396,7 @@ n(tikz_fname,"w");
0, 0,
rx_type, rx_type,
i_mod, i_mod,
PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1) PHY_vars_UE->dlsch_ue[0][0]->current_harq_pid)==-1) {
{
dlsch_active=0; dlsch_active=0;
break; break;
} }