$               This information is provided by the
$                       Aptronix FuzzyNet
$                 http://www.aptronix.com/fuzzynet 
$                  email fuzzynet@aptronix.com 
$               Aptronix may also be reached by phone
$                       at 408-261-1898 or
$                       FAX at 408-490-2729
$
$
$ SPINDLE                                                                                                   }                            
$ disk drive spindle phase PD control
$ brian tremaine 26 July 1993 
$ revised 29 August 1993

fiu tvfi (min max) ;
 
>del_p "bits":-128()127  [
      Neg_Large (@-128,255, @-12,255, @-6,0),
      Neg_Med   (@-12,0,    @-6,255,  @0,0),
      Zero      (@-6,0,     @0,255,   @6,0),
      Pos_Med   (@0,0,      @6,255,   @12,0),
      Pos_Large (@6,0,      @12,255,  @127,255)
    ];
                               
>p_err "bits":-128()127  [
      Neg_Large (@-128,255, @-64,0),
      Neg_Med   (@-128,0,   @-64,255, @0,0),
      Zero      (@-64,0,    @0,255,   @64,0),
      Pos_Med   (@0,0,      @64,255,  @127,0),
      Pos_Large (@64,0,     @127,255)
    ];

< v_out "bits":  0()255* ( 
          Neg_Large =    0,    
          Neg_Med =     43, 
          Neg_Small =   86,    
          Zero =       128,
          Pos_Small =  172,
          Pos_Med =    212,
          Pos_Large =  255
        );  

$ rules start here:

if p_err is Neg_Large and del_p is Zero then v_out is Neg_Large;

if p_err is Neg_Large and del_p is Neg_Large then v_out is Neg_Large;
if p_err is Neg_Large and del_p is Neg_Med then v_out is Neg_Large;
if p_err is Neg_Large and del_p is Zero then v_out is Neg_Med;
if p_err is Neg_Large and del_p is Pos_Med then v_out is Neg_Small;
if p_err is Neg_Large and del_p is Pos_Large then v_out is Zero;

if p_err is Neg_Med and del_p is Neg_Large then v_out is Neg_Large;
if p_err is Neg_Med and del_p is Neg_Med then v_out is Neg_Med;
if p_err is Neg_Med and del_p is Zero then v_out is Neg_Small;
if p_err is Neg_Med and del_p is Pos_Med then v_out is Zero;
if p_err is Neg_Med and del_p is Pos_Large then v_out is Pos_Small;

if p_err is Zero and del_p is Neg_Large then v_out is Neg_Med;
if p_err is Zero and del_p is Neg_Med then v_out is Neg_Small;
if p_err is Zero and del_p is Zero then v_out is Zero;
if p_err is Zero and del_p is Pos_Med then v_out is Pos_Small;
if p_err is Zero and del_p is Pos_Large then v_out is Pos_Med;

if p_err is Pos_Med and del_p is Neg_Large then v_out is Neg_Small;
if p_err is Pos_Med and del_p is Neg_Med then v_out is Zero;
if p_err is Pos_Med and del_p is Zero then v_out is Pos_Small;
if p_err is Pos_Med and del_p is Pos_Med then v_out is Pos_Med;
if p_err is Pos_Med and del_p is Pos_Large then v_out is Pos_Large;

if p_err is Pos_Large and del_p is Neg_Large then v_out is Zero;
if p_err is Pos_Large and del_p is Neg_Med then v_out is Pos_Small;
if p_err is Pos_Large and del_p is Zero then v_out is Pos_Med;
if p_err is Pos_Large and del_p is Pos_Med then v_out is Pos_Large;
if p_err is Pos_Large and del_p is Pos_Large then v_out is Pos_Large

end