module: amp_lut_5bit_dtc25_pwm_center
description: Digital Predistortion for PWM center 5bit(Fractional part) input.
             For dtc25
             0 <= bit6 < 32
             Coded by Min Park 03/16/09
             (converted 10/08/10) 
parameters:  
inputs:  double bit5
outputs:  double dtc25out
classes:  
static_variables: double err int nn double err_dis[12]
                  double tau double v_eq double lut[32]
                  double err_q5 int ind int mm double minerrdiff   
init:  

   tau = 40*12/2;
   for( nn=0; nn<12 ; nn++){
      v_eq = cos( 3.13159 * tau / 480);
      printf("v_eq = %e\n", v_eq);
      err_dis[nn] = v_eq;
      // Assuming the maximum q error is 1.
      tau -= 20;
   }

   err_q5 = 0.0;
   for( nn=0; nn<32 ; nn++){
      ind = 0;
      minerrdiff = 1e6;
      for( mm=0 ; mm < 12; mm++){
         if( fabs( err_q5 - err_dis[mm]) < minerrdiff ){
            minerrdiff = fabs( err_q5 - err_dis[mm] );
            ind = mm;
         }
      }
      lut[nn] = (double)ind;
      printf("lut[%d] = %e\n",nn,lut[nn]);
      err_q5 += 1.0/32.0;
      // Assuming the maximum q error is 1.
      // Then the q error for 5-bit is 1/32. 
   }

end:  
code:  
   if( bit5 < 0 || bit5 > 31 ){
      printf("Error! bit5 is out of range. \n");
   }
   else{
      dtc25out = lut[ (int)bit5 ];
   }


functions:  
custom_classes_definition:  
custom_classes_code:  
