introduce jfet gate-drain and gate-source junction emission coefficient
This commit is contained in:
parent
65a91648ef
commit
7e39c10bee
|
|
@ -62,6 +62,7 @@ IFparm JFETmPTable[] = { /* model parameters */
|
|||
IOPA("cgd", JFET_MOD_CGD, IF_REAL,"G-D junction cap"),
|
||||
IOP("pb", JFET_MOD_PB, IF_REAL,"Gate junction potential"),
|
||||
IOP("is", JFET_MOD_IS, IF_REAL,"Gate junction saturation current"),
|
||||
IOP("n", JFET_MOD_N, IF_REAL, "Emission Coefficient for gate-drain and gate-source diodes"),
|
||||
IOP("fc", JFET_MOD_FC, IF_REAL,"Forward bias junction fit parm."),
|
||||
/* Modification for Sydney University JFET model */
|
||||
IOP("b", JFET_MOD_B, IF_REAL,"Doping tail parameter"),
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ typedef struct sJFETmodel { /* model structure for a jfet */
|
|||
double JFETcapGD;
|
||||
double JFETgatePotential;
|
||||
double JFETgateSatCurrent;
|
||||
double JFETemissionCoeff;
|
||||
double JFETdepletionCapCoeff;
|
||||
double JFETfNcoef;
|
||||
double JFETfNexp;
|
||||
|
|
@ -242,6 +243,7 @@ typedef struct sJFETmodel { /* model structure for a jfet */
|
|||
unsigned JFETcapGDGiven : 1;
|
||||
unsigned JFETgatePotentialGiven : 1;
|
||||
unsigned JFETgateSatCurrentGiven : 1;
|
||||
unsigned JFETemissionCoeffGiven: 1;
|
||||
unsigned JFETdepletionCapCoeffGiven : 1;
|
||||
/* Modification for Sydney University JFET model */
|
||||
unsigned JFETbGiven : 1;
|
||||
|
|
@ -290,6 +292,7 @@ enum {
|
|||
JFET_MOD_CGD,
|
||||
JFET_MOD_PB,
|
||||
JFET_MOD_IS,
|
||||
JFET_MOD_N,
|
||||
JFET_MOD_FC,
|
||||
JFET_MOD_NJF,
|
||||
JFET_MOD_PJF,
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ JFETload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*/
|
||||
vds=vgs-vgd;
|
||||
|
||||
vt_temp=here->JFETtemp*CONSTKoverQ;
|
||||
vt_temp=here->JFETtemp*CONSTKoverQ*model->JFETemissionCoeff;
|
||||
if (vgs < -3*vt_temp) {
|
||||
arg=3*vt_temp/(vgs*CONSTe);
|
||||
arg = arg * arg * arg;
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ JFETmAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value)
|
|||
case JFET_MOD_IS:
|
||||
value->rValue = model->JFETgateSatCurrent;
|
||||
return(OK);
|
||||
case JFET_MOD_N:
|
||||
value->rValue = model->JFETemissionCoeff;
|
||||
return(OK);
|
||||
case JFET_MOD_FC:
|
||||
value->rValue = model->JFETdepletionCapCoeff;
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -58,6 +58,10 @@ JFETmParam(int param, IFvalue *value, GENmodel *inModels)
|
|||
model->JFETgateSatCurrentGiven = TRUE;
|
||||
model->JFETgateSatCurrent = value->rValue;
|
||||
break;
|
||||
case JFET_MOD_N:
|
||||
model->JFETemissionCoeff = value->rValue;
|
||||
model->JFETemissionCoeffGiven = TRUE;
|
||||
break;
|
||||
case JFET_MOD_FC:
|
||||
model->JFETdepletionCapCoeffGiven = TRUE;
|
||||
model->JFETdepletionCapCoeff = value->rValue;
|
||||
|
|
|
|||
|
|
@ -59,6 +59,9 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
if(!model->JFETgateSatCurrentGiven) {
|
||||
model->JFETgateSatCurrent = 1e-14;
|
||||
}
|
||||
if(!model->JFETemissionCoeffGiven) {
|
||||
model->JFETemissionCoeff = 1;
|
||||
}
|
||||
if(!model->JFETdepletionCapCoeffGiven) {
|
||||
model->JFETdepletionCapCoeff = .5;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ JFETtemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
JFETmodel *model = (JFETmodel*)inModel;
|
||||
JFETinstance *here;
|
||||
double xfc;
|
||||
double vt;
|
||||
double vt, vtn;
|
||||
double vtnom;
|
||||
double kt,kt1;
|
||||
double arg,arg1;
|
||||
|
|
@ -87,12 +87,13 @@ JFETtemp(GENmodel *inModel, CKTcircuit *ckt)
|
|||
here->JFETtemp = ckt->CKTtemp + here->JFETdtemp;
|
||||
}
|
||||
vt = here->JFETtemp * CONSTKoverQ;
|
||||
vtn = vt * model->JFETemissionCoeff;
|
||||
fact2 = here->JFETtemp/REFTEMP;
|
||||
ratio1 = here->JFETtemp/model->JFETtnom -1;
|
||||
if (model->JFETxtiGiven) {
|
||||
here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*model->JFETeg/vt) * pow(ratio1+1,model->JFETxti);
|
||||
here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*model->JFETeg/vtn) * pow(ratio1+1,model->JFETxti);
|
||||
} else {
|
||||
here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*model->JFETeg/vt);
|
||||
here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*model->JFETeg/vtn);
|
||||
}
|
||||
here->JFETtCGS = model->JFETcapGS * cjfact;
|
||||
here->JFETtCGD = model->JFETcapGD * cjfact;
|
||||
|
|
|
|||
Loading…
Reference in New Issue