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);
}
示例#2
0
文件: pilots.c 项目: a4a881d4/oai
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);
      }
    }
示例#3
0
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);
    }
  }