⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifft_modulation1.h

📁 it is a program about ofdm,and it is programed on dsk6455
💻 H
字号:
/*    IFFT modulation   */
void DSP_ifft16x32(const short *w, int nsamp, int *x, int *y);

void IFFT_Modulation1(short *buffer_QAM,int *signal,short *Lfm_Data,int *x,int buffer_QAM_len)
{
  unsigned int i,j;
  int A;
  int N_symbol;
  int Num=Fs*Ts;
  double K=B/Ts;
  int max;
  A=QAM_buffer_len%data_per_symbol;
  if(A==0)  N_symbol=floor((float)buffer_QAM_len/(float)data_per_symbol);
  else      N_symbol=floor((float)buffer_QAM_len/(float)data_per_symbol)+1;
  
  for(j=0;j<N_symbol-1;j++)
    {
      for(i=0;i<2*FFT_Size;i++)
       { 
	    x[i]=0;
	   }
     
      for(i=2*Carrier_Start;i<2*(Carrier_Start+data_per_symbol);i++)
	   {
	    x[i]=buffer_QAM[2*data_per_symbol*j+i-2*Carrier_Start];
        //x[i]=1000;
	   }
	  for(i=0;i<data_per_symbol;i++)
       {
	     x[2*(FFT_Size-Carrier_Start-1-i)]=buffer_QAM[2*(data_per_symbol*j+i)];
	     x[2*(FFT_Size-Carrier_Start-1-i)+1]=-buffer_QAM[2*(data_per_symbol*j+i)+1];
		 //x[2*(FFT_Size-Carrier_Start-1-i)]=1000;
	     //x[2*(FFT_Size-Carrier_Start-1-i)+1]=-1000;
	    }
	  DSP_ifft16x32(w,FFT_Size,x,y);
	  //DSP_fft16x32(w,FFT_Size,y,x);
	  for(i=0;i<2*CP_len;i++)
	   {
	     signal[2*(FFT_Size+CP_len)*j+i+3764]=y[i+2*(FFT_Size-CP_len)];
	   }
	  for(i=2*CP_len;i<2*(FFT_Size+CP_len);i++)
	   {
	     signal[2*(FFT_Size+CP_len)*j+i+3764]=y[i-2*CP_len];
	   }
	}
  
  for(i=0;i<FFT_Size;i++)
    { 
	   x[2*i]=0;
	   x[2*i+1]=0;
	}
  for(i=2*Carrier_Start;i<2*(Carrier_Start+buffer_QAM_len-data_per_symbol*(N_symbol-1));i++)
	{
	   x[i]=buffer_QAM[data_per_symbol*(N_symbol-1)+i-2*Carrier_Start];
       //x[i]=1000;
	}
  for(i=0;i<buffer_QAM_len-data_per_symbol*(N_symbol-1);i++)
    {
	   x[2*(FFT_Size-Carrier_Start-1-i)]=buffer_QAM[data_per_symbol*(N_symbol-1)+2*i];
	   x[2*(FFT_Size-Carrier_Start-1-i)+1]=-buffer_QAM[data_per_symbol*(N_symbol-1)+2*i+1];
	   //x[2*(FFT_Size-Carrier_Start-1-i)]=1000;
	   //x[2*(FFT_Size-Carrier_Start-1-i)+1]=-1000;
	 }
  DSP_ifft16x32(w,FFT_Size,x,y);
  for(i=0;i<2*CP_len;i++)
    {
	  signal[2*(FFT_Size+CP_len)*(N_symbol-1)+i+3764]=y[i+2*(FFT_Size-CP_len)];
    }
  for(i=2*CP_len;i<2*(FFT_Size+CP_len);i++)
	{
	  signal[2*(FFT_Size+CP_len)*(N_symbol-1)+i+3764]=y[i-2*CP_len];
	}


  for(i=0;i<2000;i++)
   {
     signal[i]=0;
   }
  for(i=0;i<Num;i++)
    {   
      Lfm_Data[i]=(int)(cos(2*pi*i*F_start/Fs+pi*K*pow(i,2)/pow(Fs,2))*10000);
    }
  for(i=2000;i<2882;i++)
   {
     signal[i]=Lfm_Data[i-2000];
   }
  for(i=2882;i<3764;i++)
   {
     signal[i]=0;
   }
  for(i=65204;i<66204;i++)
   {
     signal[i]=0;
   }
 
  max=signal[3764];
  for(i=3764;i<65204;i++)
   {
     if(abs(signal[i])>max)
      {
	   max=abs(signal[i]);
       }
   }
  for(i=3764;i<65204;i++)
   {
     signal[i]=((double)signal[i]/max)*10000;
   }
   
  return;
}    
	    
	 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -