Commit ba020c80 authored by Raymond Knopp's avatar Raymond Knopp

oaisim compilation error, ulsim 20 MHz segfault. ulsim tests.

parent a0ffa8ca
......@@ -1000,6 +1000,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
#if defined(__x86_64__) || defined(__i386__)
// note: this makes valgrind freak
__m128i avg=_mm_set1_epi32(0);
for (i=0; i<(3*(n>>4))+1; i++) {
......@@ -1503,6 +1504,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
tmp2=_mm_and_si128(tmp,mask);
tmp2=_mm_cmpeq_epi16(tmp2,mask);
// printf("decoded_bytes %p\n",decoded_bytes);
decoded_bytes[n_128*0+i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
int j;
......
......@@ -45,6 +45,7 @@ void lte_param_init(unsigned char N_tx,
lte_frame_parms->N_RB_UL = N_RB_DL;
lte_frame_parms->threequarter_fs = threequarter_fs;
lte_frame_parms->Ncp = extended_prefix_flag;
lte_frame_parms->Ncp_UL = extended_prefix_flag;
lte_frame_parms->Nid_cell = Nid_cell;
lte_frame_parms->nushift = Nid_cell%6;
lte_frame_parms->nb_antennas_tx = N_tx;
......
......@@ -52,7 +52,7 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms)
x2 = frame_parms->Nid_cell/30;
#ifdef DEBUG_GROUPHOP
msg("[PHY] GroupHop:");
printf("[PHY] GroupHop:");
#endif
for (ns=0; ns<20; ns++) {
......@@ -68,12 +68,12 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms)
}
#ifdef DEBUG_GROUPHOP
msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns]);
printf("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.grouphop[ns]);
#endif
}
#ifdef DEBUG_GROUPHOP
msg("\n");
printf("\n");
#endif
}
......@@ -89,7 +89,7 @@ void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms)
s = lte_gold_generic(&x1,&x2,reset);
#ifdef DEBUG_GROUPHOP
msg("[PHY] SeqHop:");
printf("[PHY] SeqHop:");
#endif
for (ns=0; ns<20; ns++) {
......@@ -100,12 +100,12 @@ void generate_seqhop(LTE_DL_FRAME_PARMS *frame_parms)
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[ns] = 0;
#ifdef DEBUG_GROUPHOP
msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[ns]);
printf("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[ns]);
#endif
}
#ifdef DEBUG_GROUPHOP
msg("\n");
printf("\n");
#endif
}
......@@ -116,7 +116,7 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms)
uint8_t reset=1;
uint32_t x1, x2, s=0;
// This is from Section 5.5.1.3
uint8_t Nsymb_UL = (frame_parms->Ncp_UL == 0) ? 7 : 6;
uint8_t Nsymb_UL = (frame_parms->Ncp_UL == NORMAL) ? 7 : 6;
uint16_t next = 0;
uint8_t ns=0;
......@@ -124,7 +124,7 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms)
x2 = (32*(uint32_t)(frame_parms->Nid_cell/30)) + fss_pusch;
#ifdef DEBUG_GROUPHOP
msg("[PHY] nPRS:");
printf("[PHY] nPRS:");
#endif
for (n=0; n<(20*Nsymb_UL); n++) { //loop over total number of bytes to generate
......@@ -137,7 +137,7 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms)
if (n == next) {
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns] = ((uint8_t*)&s)[next&3];
#ifdef DEBUG_GROUPHOP
msg("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns]);
printf("%d.",frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[ns]);
#endif
ns++;
next+=Nsymb_UL;
......@@ -145,7 +145,7 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms)
}
#ifdef DEBUG_GROUPHOP
msg("\n");
printf("\n");
#endif
}
......
......@@ -142,7 +142,6 @@ LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t max_turbo_iterations,uint8_t N_RB_UL, uin
if (abstraction_flag==0) {
for (r=0; r<MAX_NUM_ULSCH_SEGMENTS/bw_scaling; r++) {
ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16(((r==0)?8:0) + 3+768);
if (ulsch->harq_processes[i]->c[r])
memset(ulsch->harq_processes[i]->c[r],0,((r==0)?8:0) + 3+768);
else
......@@ -338,6 +337,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
// CLEAR LLR's HERE for first packet in process
}
// printf("after segmentation c[%d] = %p\n",0,ulsch_harq->c[0]);
sumKr = 0;
......@@ -449,6 +449,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
// Rmux = Hpp*Q_m/Cmux;
Rmux_prime = Hpp/Cmux;
// Clear "tag" interleaving matrix to allow for CQI/DATA identification
memset(ytag,0,Cmux*Rmux_prime);
......@@ -457,6 +458,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
i=0;
memset(y,LTE_NULL,Q_m*Hpp);
// printf("before unscrambling c[%d] = %p\n",0,ulsch_harq->c[0]);
// read in buffer and unscramble llrs for everything but placeholder bits
// llrs stored per symbol correspond to columns of interleaving matrix
......@@ -472,6 +474,8 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
s = lte_gold_generic(&x1, &x2, 0);
}
// printf("after unscrambling c[%d] = %p\n",0,ulsch_harq->c[0]);
if (frame_parms->Ncp == 0)
columnset = cs_ri_normal;
else
......@@ -495,6 +499,8 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
}
// printf("after RI c[%d] = %p\n",0,ulsch_harq->c[0]);
// HARQ-ACK Bits (Note these overwrite some bits)
if (frame_parms->Ncp == 0)
columnset = cs_ack_normal;
......@@ -664,6 +670,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
j=(j+3)&3;
}
// printf("after ACKNAK c[%d] = %p\n",0,ulsch_harq->c[0]);
// RI BITS
......@@ -708,6 +715,8 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
j=(j+3)&3;
}
// printf("after RI2 c[%d] = %p\n",0,ulsch_harq->c[0]);
// CQI and Data bits
j=0;
j2=0;
......@@ -736,10 +745,10 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
j2+=Q_m;
}
switch (Q_m) {
case 2:
for (iprime=0; iprime<G<<1;) {
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=2;
......@@ -754,7 +763,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
break;
case 4:
for (iprime=0; iprime<G<<2;) {
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=4;
......@@ -770,7 +779,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
break;
case 6:
for (iprime=0; iprime<G*6;) {
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=6;
......@@ -788,8 +797,11 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
break;
}
}
} // Q_RI>0
else {
for (i=0; i<(Q_CQI/Q_m); i++) {
for (q=0; q<Q_m; q++) {
......@@ -804,16 +816,16 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
j2+=Q_m;
}
// printf("after CQI0 c[%d] = %p\n",0,ulsch_harq->c[0]);
switch (Q_m) {
case 2:
for (iprime=0; iprime<G<<1;) {
for (iprime=0; iprime<G;) {
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
}
break;
case 4:
for (iprime=0; iprime<G<<2;) {
for (iprime=0; iprime<G;) {
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
......@@ -821,7 +833,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
}
break;
case 6:
for (iprime=0; iprime<G*6;) {
for (iprime=0; iprime<G;) {
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
......@@ -832,6 +844,8 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
break;
}
}
// printf("after ACKNAK2 c[%d] = %p (iprime %d, G %d)\n",0,ulsch_harq->c[0],iprime,G);
// Do CQI/RI/HARQ-ACK Decoding first and pass to MAC
// HARQ-ACK
......@@ -904,6 +918,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
// CQI
// printf("before cqi c[%d] = %p\n",0,ulsch_harq->c[0]);
if (Q_CQI>0) {
memset((void *)&dummy_w_cc[0],0,3*(ulsch_harq->Or1+8+32));
......@@ -971,6 +986,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
for (r=0; r<ulsch_harq->C; r++) {
// printf("before subblock deinterleaving c[%d] = %p\n",r,ulsch_harq->c[r]);
// Get Turbo interleaver parameters
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
......@@ -1043,6 +1059,10 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
for (r=0; r<ulsch_harq->C; r++) {
/* printf("c[%d] : %p\n",r,
ulsch_harq->c[r]);
*/
if (ulsch_harq->C == 1)
crc_type = CRC24_A;
else
......
......@@ -2547,6 +2547,7 @@ void cba_procedures(const unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eN
const int frame = phy_vars_eNB->proc[sched_subframe].frame_rx;
uint16_t rnti=0;
int ret=0;
int i;
num_active_cba_groups = phy_vars_eNB->ulsch_eNB[UE_id]->num_active_cba_groups;
......
......@@ -308,7 +308,7 @@ int main(int argc, char **argv)
break;
default:
msg("Unsupported channel model!\n");
printf("Unsupported channel model!\n");
exit(-1);
break;
}
......@@ -332,7 +332,7 @@ int main(int argc, char **argv)
if ((transmission_mode!=1) &&
(transmission_mode!=2)) {
msg("Unsupported transmission mode %d\n",transmission_mode);
printf("Unsupported transmission mode %d\n",transmission_mode);
exit(-1);
}
......@@ -382,10 +382,10 @@ int main(int argc, char **argv)
case 'i':
input_fdUL = fopen(optarg,"r");
msg("Reading in %s (%p)\n",optarg,input_fdUL);
printf("Reading in %s (%p)\n",optarg,input_fdUL);
if (input_fdUL == (FILE*)NULL) {
msg("Unknown file %s\n",optarg);
printf("Unknown file %s\n",optarg);
exit(-1);
}
......@@ -509,7 +509,7 @@ int main(int argc, char **argv)
// r_re0 = malloc(2*sizeof(double*));
// r_im0 = malloc(2*sizeof(double*));
nsymb = (PHY_vars_eNB->lte_frame_parms.Ncp == 0) ? 14 : 12;
nsymb = (PHY_vars_eNB->lte_frame_parms.Ncp == NORMAL) ? 14 : 12;
sprintf(bler_fname,"ULbler_mcs%d_nrb%d_ChannelModel%d_nsim%d.csv",mcs,nb_rb,chMod,n_frames);
......@@ -760,9 +760,9 @@ int main(int argc, char **argv)
PHY_vars_eNB->proc[sf].subframe_rx=sf;
}
msg("Init UL hopping UE\n");
printf("Init UL hopping UE\n");
init_ul_hopping(&PHY_vars_UE->lte_frame_parms);
msg("Init UL hopping eNB\n");
printf("Init UL hopping eNB\n");
init_ul_hopping(&PHY_vars_eNB->lte_frame_parms);
PHY_vars_eNB->proc[subframe].frame_rx = PHY_vars_UE->frame_tx;
......@@ -1063,7 +1063,7 @@ int main(int argc, char **argv)
start_meas(&PHY_vars_UE->ofdm_mod_stats);
for (aa=0; aa<1; aa++) {
if (frame_parms->Ncp == 1)
if (frame_parms->Ncp == EXTENDED)
PHY_ofdm_mod(&PHY_vars_UE->lte_ue_common_vars.txdataF[aa][subframe*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX], // input
&txdata[aa][PHY_vars_eNB->lte_frame_parms.samples_per_tti*subframe], // output
PHY_vars_UE->lte_frame_parms.ofdm_symbol_size,
......@@ -1257,6 +1257,7 @@ int main(int argc, char **argv)
*/
start_meas(&PHY_vars_eNB->ulsch_decoding_stats);
ret= ulsch_decoding(PHY_vars_eNB,
0, // UE_id
subframe,
......@@ -1293,7 +1294,7 @@ int main(int argc, char **argv)
if (PHY_vars_eNB->ulsch_eNB[0]->harq_processes[harq_pid]->o_ACK[0] != PHY_vars_UE->ulsch_ue[0]->o_ACK[0])
ack_errors++;
// msg("ulsch_coding: O[%d] %d\n",i,o_flip[i]);
// printf("ulsch_coding: O[%d] %d\n",i,o_flip[i]);
if (ret <= PHY_vars_eNB->ulsch_eNB[0]->max_turbo_iterations) {
......
......@@ -247,6 +247,7 @@ void init_lte_vars(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs],
(frame_parms[CC_id])->phich_config_common.phich_resource = oneSixth;
(frame_parms[CC_id])->phich_config_common.phich_duration = normal;
(frame_parms[CC_id])->Ncp = extended_prefix_flag;
(frame_parms[CC_id])->Ncp_UL = extended_prefix_flag;
(frame_parms[CC_id])->Nid_cell = Nid_cell;
(frame_parms[CC_id])->nushift = (Nid_cell%6);
(frame_parms[CC_id])->nb_antennas_tx = (transmission_mode == 1) ? 1 : 2;
......
......@@ -73,7 +73,7 @@ int ulsch_abstraction(double* sinr_dB,uint8_t TM, uint8_t mcs,uint16_t nb_rb, ui
void calc_path_loss(node_desc_t* node_tx, node_desc_t* node_rx, channel_desc_t *ch_desc, Environment_System_Config env_desc, double **SF);
void do_OFDM_mod(mod_sym_t **txdataF, int32_t **txdata, frame_t frame, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
void do_OFDM_mod(int32_t **txdataF, int32_t **txdata, frame_t frame, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
void reset_opp_meas(void);
void print_opp_meas(void);
......
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