yet another try for flicker noise scaling
This commit is contained in:
parent
689177a55f
commit
67919b9bd8
|
|
@ -161,6 +161,8 @@ typedef struct sHICUMinstance {
|
||||||
double HICUMrbx_scaled;
|
double HICUMrbx_scaled;
|
||||||
double HICUMrcx_scaled;
|
double HICUMrcx_scaled;
|
||||||
double HICUMrbi0_scaled;
|
double HICUMrbi0_scaled;
|
||||||
|
double HICUMkf_scaled;
|
||||||
|
double HICUMkfre_scaled;
|
||||||
|
|
||||||
double HICUMrbi;
|
double HICUMrbi;
|
||||||
double HICUMiavl;
|
double HICUMiavl;
|
||||||
|
|
|
||||||
|
|
@ -186,9 +186,9 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata
|
||||||
N_GAIN,inst->HICUMbaseBPNode, inst->HICUMemitEINode,
|
N_GAIN,inst->HICUMbaseBPNode, inst->HICUMemitEINode,
|
||||||
(double)0.0);
|
(double)0.0);
|
||||||
}
|
}
|
||||||
noizDens[HICUMFLBENOIZ] *= inst->HICUMm * model->HICUMkf *
|
noizDens[HICUMFLBENOIZ] *= inst->HICUMkf_scaled *
|
||||||
exp(model->HICUMaf *
|
exp(model->HICUMaf *
|
||||||
log(MAX(fabs((*(ckt->CKTstate0 + inst->HICUMibiei)+*(ckt->CKTstate0 + inst->HICUMibpei)))/inst->HICUMm,N_MINLOG))) /
|
log(MAX(fabs((*(ckt->CKTstate0 + inst->HICUMibiei)+*(ckt->CKTstate0 + inst->HICUMibpei))),N_MINLOG))) /
|
||||||
data->freq;
|
data->freq;
|
||||||
lnNdens[HICUMFLBENOIZ] =
|
lnNdens[HICUMFLBENOIZ] =
|
||||||
log(MAX(noizDens[HICUMFLBENOIZ],N_MINLOG));
|
log(MAX(noizDens[HICUMFLBENOIZ],N_MINLOG));
|
||||||
|
|
@ -196,9 +196,9 @@ HICUMnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata
|
||||||
NevalSrc(&noizDens[HICUMFLRENOIZ], NULL, ckt,
|
NevalSrc(&noizDens[HICUMFLRENOIZ], NULL, ckt,
|
||||||
N_GAIN,inst->HICUMemitEINode, inst->HICUMemitNode,
|
N_GAIN,inst->HICUMemitEINode, inst->HICUMemitNode,
|
||||||
(double)0.0);
|
(double)0.0);
|
||||||
noizDens[HICUMFLRENOIZ] *= inst->HICUMm * model->HICUMkfre *
|
noizDens[HICUMFLRENOIZ] *= inst->HICUMkfre_scaled *
|
||||||
exp(model->HICUMafre *
|
exp(model->HICUMafre *
|
||||||
log(MAX(fabs(*(ckt->CKTstate0 + inst->HICUMieie))/inst->HICUMm,N_MINLOG))) /
|
log(MAX(fabs(*(ckt->CKTstate0 + inst->HICUMieie)),N_MINLOG))) /
|
||||||
data->freq;
|
data->freq;
|
||||||
lnNdens[HICUMFLRENOIZ] =
|
lnNdens[HICUMFLRENOIZ] =
|
||||||
log(MAX(noizDens[HICUMFLRENOIZ],N_MINLOG));
|
log(MAX(noizDens[HICUMFLRENOIZ],N_MINLOG));
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,9 @@ HICUMsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
||||||
here->HICUMrbx_scaled = model->HICUMrbx / area_times_m;
|
here->HICUMrbx_scaled = model->HICUMrbx / area_times_m;
|
||||||
here->HICUMrcx_scaled = model->HICUMrcx / area_times_m;
|
here->HICUMrcx_scaled = model->HICUMrcx / area_times_m;
|
||||||
here->HICUMrbi0_scaled = model->HICUMrbi0 / area_times_m;
|
here->HICUMrbi0_scaled = model->HICUMrbi0 / area_times_m;
|
||||||
|
//noise
|
||||||
|
here->HICUMkf_scaled = model->HICUMkf * pow(here->HICUMm, (1-model->HICUMaf));
|
||||||
|
here->HICUMkfre_scaled = model->HICUMkfre * pow(here->HICUMm, (1-model->HICUMafre));
|
||||||
|
|
||||||
here->HICUMstate = *states;
|
here->HICUMstate = *states;
|
||||||
*states += HICUMnumStates;
|
*states += HICUMnumStates;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue