Exemplo n.º 1
0
INTERVAL cos2pi0DI(double x) {
/*
  Let x*2pi = y+W,  (1/4-x)*2pi = z+U
  if (x<1/8)
        sin2pi0DI(x) = sin0(y,W)
  else
        sin2pi0DI(x) = cos0(z+U)
*/
  double y; INTERVAL W,Y,Z; 

  if (x < 0) x = -x;

  if (x <= 0.125) {
     Y = mulDII(x,TWOPI.i);
     y = (Y.lo + Y.hi)/2.0;
     W = subIDI(Y,y);
     Z = cos0(y,W);
     return(Z);
   }
  else {
     Y = mulIII(subDDI(0.25,x),TWOPI.i);
     y = (Y.lo + Y.hi)/2.0;
     W = subIDI(Y,y);
     Z = sin0(y,W);
     return(Z);
  }
}
Exemplo n.º 2
0
INTERVAL cos0DI(double x) {
  double y; INTERVAL W,Z; //Y

  if (x < 0) 
     return(cos0DI(-x));
  else if (x <= 0.125*TWOPI.i.hi) {
     Z = cos0(x,cnstDI(0));
     return(Z);
   }
  else {
     y = PIOVER2.i.hi - x;
     W = addIII(subIDI(subDDI(PI_OVER_2_A.d,x),y),PIOVER2B.i);
     Z = sin0(y,W);
     return(Z);
  }
}
Exemplo n.º 3
0
// constructor
top::top(sc_core::sc_module_name n,
	 double phc_gain,
	 double lp_fc,
	 double vco_freq,
	 double kvco,
	 double vco_gain
	 )
{

//instantiate models

  sine sin0("sin0",0.0,1.0,0.0,1.0);
  sin0.out(sw12);

  sine sin1("sin1",0.0,1.0,0.0,1.0);
  sin1.out(sw13);

  sine sin2("sin2",0.0,1.0,0.0,1.0);
  sin2.out(sw21);

  sine sin3("sin3",0.0,1.0,0.0,1.0);
  sin3.out(sw23);

  sine sin4("sin4",0.0,1.0,0.0,1.0);
  sin4.out(sw31);

  sine sin5("sin5",0.0,1.0,0.0,1.0);
  sin5.out(sw32);

  sine sin6("sin6",0.0,1.0,0.0,1.0);
  sin6.out(sint1);

  sine sin7("sin7",0.0,1.0,0.0,1.0);
  sin6.out(sint2);


  osc1 = new osc("osc1", phc_gain, lp_fc, vco_freq, kvco, vco_gain);
  osc1->vco_ref1(vco1_in1);
  osc1->vco_ref2(vco1_in2);
  osc1->vco_out(vco1_out);
  osc1->lpf_out(lpf_out1);
  osc1->w1(sw21);
  osc1->w2(sw31);

  sp1 = new split("sp1");
  sp1->in(vco1_out);
  sp1->out1(vco2_in1);
  sp1->out2(vco3_in1);

  osc3 = new osc("osc3", phc_gain, lp_fc, vco_freq-100, kvco, vco_gain);
  osc3->vco_ref1(vco3_in1); //
  osc3->vco_ref2(vco3_in2);
  osc3->vco_out(vco3_out);
  osc3->lpf_out(lpf_out3);
  osc3->w1(sw13);
  osc3->w2(sw23);

  sp3 = new split("sp3");
  sp3->in(vco3_out);
  sp3->out1(vco1_in2);
  sp3->out2(vco2_in2);

 
  osc2 = new osc("osc2", phc_gain, lp_fc, vco_freq+100, kvco, vco_gain);
  osc2->vco_ref1(vco2_in1);
  osc2->vco_ref2(vco2_in2);
  osc2->vco_out(vco2_out);
  osc2->lpf_out(lpf_out2);
  osc2->w1(sw12);
  osc2->w2(sw32);

  sp2 = new split("sp2");
  sp2->in(vco2_out);
  sp2->out1(vco1_in1);
  sp2->out2(vco3_in2);

 
}