main() { unsigned short Nid_cell=0; unsigned int Ncp = 0; int output00[1024]; int output01[1024]; int output10[1024]; int output11[1024]; memset(output00,0,1024*sizeof(int)); memset(output01,0,1024*sizeof(int)); memset(output10,0,1024*sizeof(int)); memset(output11,0,1024*sizeof(int)); lte_gold(Nid_cell,Ncp); lte_dl_cell_spec(output00, ONE_OVER_SQRT2_Q15, 50, Nid_cell, Ncp, 0, 0, 0, 0); lte_dl_cell_spec(output10, ONE_OVER_SQRT2_Q15, 50, Nid_cell, Ncp, 0, 1, 0, 0); lte_dl_cell_spec(output01, ONE_OVER_SQRT2_Q15, 50, Nid_cell, Ncp, 0, 0, 1, 0); lte_dl_cell_spec(output11, ONE_OVER_SQRT2_Q15, 50, Nid_cell, Ncp, 0, 1, 1, 0); write_output("dl_cell_spec00.m","dl_cs00",output00,1024,1,1); write_output("dl_cell_spec01.m","dl_cs01",output01,1024,1,1); write_output("dl_cell_spec10.m","dl_cs10",output10,1024,1,1); write_output("dl_cell_spec11.m","dl_cs11",output11,1024,1,1); }
void generate_pilots(PHY_VARS_eNB *phy_vars_eNB, mod_sym_t **txdataF, short amp, unsigned short Ntti) { LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms; unsigned int tti,tti_offset,slot_offset,Nsymb,samples_per_symbol; unsigned char second_pilot; Nsymb = (frame_parms->Ncp==0)?14:12; second_pilot = (frame_parms->Ncp==0)?4:3; // printf("Doing TX pilots Nsymb %d, second_pilot %d\n",Nsymb,second_pilot); for (tti=0;tti<Ntti;tti++) { #ifdef IFFT_FPGA tti_offset = tti*frame_parms->N_RB_DL*12*Nsymb; samples_per_symbol = frame_parms->N_RB_DL*12; #else tti_offset = tti*frame_parms->ofdm_symbol_size*Nsymb; samples_per_symbol = frame_parms->ofdm_symbol_size; #endif slot_offset = (tti*2)%20; // printf("tti %d : offset %d (slot %d)\n",tti,tti_offset,slot_offset); //Generate Pilots //antenna 0 symbol 0 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[0][tti_offset], amp, slot_offset, 0, 0); // printf("tti %d : second_pilot offset %d \n",tti,tti_offset+(second_pilot*samples_per_symbol)); //antenna 0 symbol 3/4 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[0][tti_offset+(second_pilot*samples_per_symbol)], amp, slot_offset, 1, 0); // printf("tti %d : third_pilot offset %d \n",tti,tti_offset+((Nsymb>>1)*samples_per_symbol)); //antenna 0 symbol 0 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[0][tti_offset+((Nsymb>>1)*samples_per_symbol)], amp, 1+slot_offset, 0, 0); // printf("tti %d : third_pilot offset %d \n",tti,tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)); //antenna 0 symbol 3/4 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[0][tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)], amp, 1+slot_offset, 1, 0); if (frame_parms->nb_antennas_tx > 1) { if (frame_parms->mode1_flag) { // antenna 1 symbol 0 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset], amp, slot_offset, 0, 0); // antenna 1 symbol 3 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(second_pilot*samples_per_symbol)], amp, slot_offset, 1, 0); //antenna 1 symbol 0 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(Nsymb>>1)*samples_per_symbol], amp, 1+slot_offset, 0, 0); // antenna 1 symbol 3 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)], amp, 1+slot_offset, 1, 0); } else { // antenna 1 symbol 0 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset], amp, slot_offset, 0, 1); // antenna 1 symbol 3 slot 0 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(second_pilot*samples_per_symbol)], amp, slot_offset, 1, 1); //antenna 1 symbol 0 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(Nsymb>>1)*samples_per_symbol], amp, 1+slot_offset, 0, 1); // antenna 1 symbol 3 slot 1 lte_dl_cell_spec(phy_vars_eNB,&txdataF[1][tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)], amp, 1+slot_offset, 1, 1); } }
void generate_pilots(PHY_VARS_eNB *eNB, int32_t **txdataF, int16_t amp, uint16_t Ntti) { LTE_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms; uint32_t tti,tti_offset,slot_offset,Nsymb,samples_per_symbol; uint8_t second_pilot; Nsymb = (frame_parms->Ncp==0)?14:12; second_pilot = (frame_parms->Ncp==0)?4:3; // printf("Doing TX pilots Nsymb %d, second_pilot %d\n",Nsymb,second_pilot); for (tti=0; tti<Ntti; tti++) { tti_offset = tti*frame_parms->ofdm_symbol_size*Nsymb; samples_per_symbol = frame_parms->ofdm_symbol_size; slot_offset = (tti*2)%20; // printf("tti %d : offset %d (slot %d)\n",tti,tti_offset,slot_offset); //Generate Pilots //antenna port 0 symbol 0 slot 0 lte_dl_cell_spec(eNB,&txdataF[0][tti_offset], amp, slot_offset, 0, 0); // printf("tti %d : second_pilot offset %d \n",tti,tti_offset+(second_pilot*samples_per_symbol)); //antenna port 0 symbol 3/4 slot 0 lte_dl_cell_spec(eNB,&txdataF[0][tti_offset+(second_pilot*samples_per_symbol)], amp, slot_offset, 1, 0); // printf("tti %d : third_pilot offset %d \n",tti,tti_offset+((Nsymb>>1)*samples_per_symbol)); //antenna port 0 symbol 0 slot 1 lte_dl_cell_spec(eNB,&txdataF[0][tti_offset+((Nsymb>>1)*samples_per_symbol)], amp, 1+slot_offset, 0, 0); // printf("tti %d : third_pilot offset %d \n",tti,tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)); //antenna port 0 symbol 3/4 slot 1 lte_dl_cell_spec(eNB,&txdataF[0][tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)], amp, 1+slot_offset, 1, 0); if (frame_parms->nb_antenna_ports_eNB > 1) { // antenna port 1 symbol 0 slot 0 lte_dl_cell_spec(eNB,&txdataF[1][tti_offset], amp, slot_offset, 0, 1); // antenna port 1 symbol 3 slot 0 lte_dl_cell_spec(eNB,&txdataF[1][tti_offset+(second_pilot*samples_per_symbol)], amp, slot_offset, 1, 1); //antenna port 1 symbol 0 slot 1 lte_dl_cell_spec(eNB,&txdataF[1][tti_offset+(Nsymb>>1)*samples_per_symbol], amp, 1+slot_offset, 0, 1); // antenna port 1 symbol 3 slot 1 lte_dl_cell_spec(eNB,&txdataF[1][tti_offset+(((Nsymb>>1)+second_pilot)*samples_per_symbol)], amp, 1+slot_offset, 1, 1); } }