module: pwm_center_dtc25_select
description: Delay selector for pwmcenter_dtc25.
             Coded by Min Park 03/13/09 (converted 10/09/10) 
parameters:  double d1, double d2
             double d3, double d4
             double d5, double d6
             double d7, double d8
             double d9, double d10
             double d11, double d12
             double d13, double d14
             double d15, double d16
             double d17, double d18
             double d19, double d20
             double d21, double d22
             double d23, double d24
             double d25, double period
inputs:  double in, double_interp clk
outputs:  double sel, double selinv
classes: EdgeDetect pclk()  
static_variables: double delay[25] double totaldelay int nn int max_ind
                  double incode  
init:  
   delay[0] = d1;
   delay[1] = d2;
   delay[2] = d3;
   delay[3] = d4;
   delay[4] = d5;
   delay[5] = d6;
   delay[6] = d7;
   delay[7] = d8;
   delay[8] = d9;
   delay[9] = d10;
   delay[10]= d11;
   delay[11]= d12;
   delay[12]= d13;
   delay[13]= d14;
   delay[14]= d15;
   delay[15]= d16;
   delay[16]= d17;
   delay[17]= d18;
   delay[18]= d19;
   delay[19]= d20;
   delay[20]= d21;
   delay[21]= d22;
   delay[22]= d23;
   delay[23]= d24;
   delay[24]= d25;
   totaldelay = 0.0;
   for(nn=0;nn<25;nn++){
      if( (totaldelay+delay[nn]) >= period/2 ){
         max_ind = nn;
         break;
      }
      else{
         totaldelay += delay[nn];
      }
   }
   printf("total delay = %e\n",totaldelay);
   printf("max_index = %d\n",max_ind);

   if( fmod( (float)max_ind, 2.0 ) != 0 ){
      max_ind--;
   }

end:  
code:  
   if( pclk.inp(clk) ){
      if( in >= 0 && in <= (max_ind)/2-1 ){
         incode = in;
      }
      else{
         printf("Error! 'in' out of range. %d\n",(int)in);
         incode = 0.0;
      }

      if( incode == 0 ){
         sel = max_ind;
         selinv = 1;
      }
      else{
         sel = ( (max_ind)/2 - incode );
         selinv = ( (max_ind)/2 + incode ); 
      }
   }



functions:  
custom_classes_definition:  
custom_classes_code:  
