⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jfettemp.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1985 Thomas L. QuarlesSydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern	Laboratory for Communication Science Engineering	Sydney University Department of Electrical Engineering, Australia**********/#include "spice.h"#include <stdio.h>#include "util.h"#include "smpdefs.h"#include "cktdefs.h"#include "jfetdefs.h"#include "const.h"#include "sperror.h"#include "suffix.h"intJFETtemp(inModel,ckt)    GENmodel *inModel;    CKTcircuit *ckt;        /* Pre-process the model parameters after a possible change         */{    register JFETmodel *model = (JFETmodel*)inModel;    register JFETinstance *here;    double xfc;    double vt;    double vtnom;    double kt,kt1;    double arg,arg1;    double fact1,fact2;    double egfet,egfet1;    double pbfact,pbfact1;    double gmanew,gmaold;    double ratio1;    double pbo;    double cjfact,cjfact1;    /*  loop through all the diode models */    for( ; model != NULL; model = model->JFETnextModel ) {        if(!(model->JFETtnomGiven)) {            model->JFETtnom = ckt->CKTnomTemp;        }        vtnom = CONSTKoverQ * model->JFETtnom;        fact1 = model->JFETtnom/REFTEMP;        kt1 = CONSTboltz * model->JFETtnom;        egfet1 = 1.16-(7.02e-4*model->JFETtnom*model->JFETtnom)/                (model->JFETtnom+1108);        arg1 = -egfet1/(kt1+kt1)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP));        pbfact1 = -2*vtnom * (1.5*log(fact1)+CHARGE*arg1);        pbo = (model->JFETgatePotential-pbfact1)/fact1;        gmaold = (model->JFETgatePotential-pbo)/pbo;        cjfact = 1/(1+.5*(4e-4*(model->JFETtnom-REFTEMP)-gmaold));        if(model->JFETdrainResist != 0) {            model->JFETdrainConduct = 1/model->JFETdrainResist;        } else {            model->JFETdrainConduct = 0;        }        if(model->JFETsourceResist != 0) {            model->JFETsourceConduct = 1/model->JFETsourceResist;        } else {            model->JFETsourceConduct = 0;        }        if(model->JFETdepletionCapCoeff >.95) {            (*(SPfrontEnd->IFerror))(ERR_WARNING,                    "%s: Depletion cap. coefficient too large, limited to .95",                    &(model->JFETmodName));            model->JFETdepletionCapCoeff = .95;        }        xfc = log(1 - model->JFETdepletionCapCoeff);        model->JFETf2 = exp((1+.5)*xfc);        model->JFETf3 = 1 - model->JFETdepletionCapCoeff * (1 + .5);	/* Modification for Sydney University JFET model */	model->JFETbFac = (1 - model->JFETb)		/ (model->JFETgatePotential - model->JFETthreshold);	/* end Sydney University mod */        /* loop through all the instances of the model */        for (here = model->JFETinstances; here != NULL ;                here=here->JFETnextInstance) {	    if (here->JFETowner != ARCHme) continue;            if(!(here->JFETtempGiven)) {                here->JFETtemp = ckt->CKTtemp;            }            vt = here->JFETtemp * CONSTKoverQ;            fact2 = here->JFETtemp/REFTEMP;            ratio1 = here->JFETtemp/model->JFETtnom -1;            here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*1.11/vt);            here->JFETtCGS = model->JFETcapGS * cjfact;            here->JFETtCGD = model->JFETcapGD * cjfact;            kt = CONSTboltz*here->JFETtemp;            egfet = 1.16-(7.02e-4*here->JFETtemp*here->JFETtemp)/                    (here->JFETtemp+1108);            arg = -egfet/(kt+kt) + 1.1150877/(CONSTboltz*(REFTEMP+REFTEMP));            pbfact = -2 * vt * (1.5*log(fact2)+CHARGE*arg);            here->JFETtGatePot = fact2 * pbo + pbfact;            gmanew = (here->JFETtGatePot-pbo)/pbo;            cjfact1 = 1+.5*(4e-4*(here->JFETtemp-REFTEMP)-gmanew);            here->JFETtCGS *= cjfact1;            here->JFETtCGD *= cjfact1;            here->JFETcorDepCap = model->JFETdepletionCapCoeff *                    here->JFETtGatePot;            here->JFETf1 = here->JFETtGatePot * (1 - exp((1-.5)*xfc))/(1-.5);            here->JFETvcrit = vt * log(vt/(CONSTroot2 * here->JFETtSatCur));                    }    }    return(OK);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -