23 #ifndef INTEGRATOR8580_H
24 #define INTEGRATOR8580_H
29 #include "siddefs-fp.h"
55 const unsigned short* opamp_rev;
69 Integrator8580(
const unsigned short* opamp_rev,
double Vth,
double nKp,
double vmin,
double N16) :
85 const double tmp = (1 << 13) * nKp * wl;
86 assert(tmp > -0.5 && tmp < 65535.5);
87 n_dac =
static_cast<unsigned short>(tmp + 0.5);
97 const double Vg = 4.76 * v;
98 const double Vgt = Vg - Vth;
102 const double tmp = N16 * (Vgt - vmin);
103 assert(tmp > -0.5 && tmp < 65535.5);
104 nVgt =
static_cast<unsigned short>(tmp + 0.5);
107 int solve(
int vi)
const;
112 #if RESID_INLINING || defined(INTEGRATOR8580_CPP)
118 int Integrator8580::solve(
int vi)
const
124 const unsigned int Vgst = nVgt - vx;
125 const unsigned int Vgdt = (vi < nVgt) ? nVgt - vi : 0;
127 const unsigned int Vgst_2 = Vgst * Vgst;
128 const unsigned int Vgdt_2 = Vgdt * Vgdt;
131 const int n_I_dac = n_dac * (
static_cast<int>(Vgst_2 - Vgdt_2) >> 15);
137 const int tmp = (vc >> 15) + (1 << 15);
138 assert(tmp < (1 << 16));
142 return vx - (vc >> 14);
Definition: Integrator8580.h:53
void setV(double v)
Definition: Integrator8580.h:93