Qucs-GUI  0.0.19
/home/travis/build/Qucs/qucs/qucs/qucs/components/MESFET.cpp
Go to the documentation of this file.
00001 /*
00002  * MESFET.cpp - device implementations for MESFET module
00003  *
00004  * This is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation; either version 2, or (at your option)
00007  * any later version.
00008  * 
00009  */
00010 
00011 #include "MESFET.h"
00012 
00013 MESFET::MESFET()
00014 {
00015   Description = QObject::tr ("MESFET verilog device");
00016 
00017   Props.append (new Property ("LEVEL", "1", false,
00018     QObject::tr ("model selector")));
00019   Props.append (new Property ("Vto", "-1.8", false,
00020     QObject::tr ("pinch-off voltage")
00021     +" ("+QObject::tr ("V")+")"));
00022   Props.append (new Property ("Beta", "3e-3", false,
00023     QObject::tr ("transconductance parameter")
00024     +" ("+QObject::tr ("A/(V*V)")+")"));
00025   Props.append (new Property ("Alpha", "2.25", false,
00026     QObject::tr ("saturation voltage parameter")
00027     +" ("+QObject::tr ("1/V")+")"));
00028   Props.append (new Property ("Lambda", "0.05", false,
00029     QObject::tr ("channel length modulation parameter")
00030     +" ("+QObject::tr ("1/V")+")"));
00031   Props.append (new Property ("B", "0.3", false,
00032     QObject::tr ("doping profile parameter")
00033     +" ("+QObject::tr ("1/V")+")"));
00034   Props.append (new Property ("Qp", "2.1", false,
00035     QObject::tr ("power law exponent parameter")));
00036   Props.append (new Property ("Delta", "0.1", false,
00037     QObject::tr ("power feedback parameter")
00038     +" ("+QObject::tr ("1/W")+")"));
00039   Props.append (new Property ("Vmax", "0.5", false,
00040     QObject::tr ("maximum junction voltage limit before capacitance limiting")
00041     +" ("+QObject::tr ("V")+")"));
00042   Props.append (new Property ("Vdelta1", "0.3", false,
00043     QObject::tr ("capacitance saturation transition voltage")
00044     +" ("+QObject::tr ("V")+")"));
00045   Props.append (new Property ("Vdelta2", "0.2", false,
00046     QObject::tr ("capacitance threshold transition voltage")
00047     +" ("+QObject::tr ("V")+")"));
00048   Props.append (new Property ("Gamma", "0.015", false,
00049     QObject::tr ("dc drain pull coefficient")));
00050   Props.append (new Property ("Nsc", "1", false,
00051     QObject::tr ("subthreshold conductance parameter")));
00052   Props.append (new Property ("Is", "1e-14", false,
00053     QObject::tr ("diode saturation current")
00054     +" ("+QObject::tr ("I")+")"));
00055   Props.append (new Property ("N", "1", false,
00056     QObject::tr ("diode emission coefficient")));
00057   Props.append (new Property ("Vbi", "1.0", false,
00058     QObject::tr ("built-in gate potential")
00059     +" ("+QObject::tr ("V")+")"));
00060   Props.append (new Property ("Bv", "60", false,
00061     QObject::tr ("gate-drain junction reverse bias breakdown voltage")
00062     +" ("+QObject::tr ("V")+")"));
00063   Props.append (new Property ("Xti", "3.0", false,
00064     QObject::tr ("diode saturation current temperature coefficient")));
00065   Props.append (new Property ("Fc", "0.5", false,
00066     QObject::tr ("forward-bias depletion capacitance coefficient")));
00067   Props.append (new Property ("Tau", "1e-9", false,
00068     QObject::tr ("transit time under gate")
00069     +" ("+QObject::tr ("s")+")"));
00070   Props.append (new Property ("Rin", "1e-3", false,
00071     QObject::tr ("channel resistance")
00072     +" ("+QObject::tr ("Ohm")+")"));
00073   Props.append (new Property ("Area", "1", false,
00074     QObject::tr ("area factor")));
00075   Props.append (new Property ("Eg", "1.11", false,
00076     QObject::tr ("energy gap")
00077     +" ("+QObject::tr ("eV")+")"));
00078   Props.append (new Property ("M", "0.5", false,
00079     QObject::tr ("grading coefficient")));
00080   Props.append (new Property ("Cgd", "0.2e-12", false,
00081     QObject::tr ("zero bias gate-drain junction capacitance")
00082     +" ("+QObject::tr ("F")+")"));
00083   Props.append (new Property ("Cgs", "1e-12", false,
00084     QObject::tr ("zero bias gate-source junction capacitance")
00085     +" ("+QObject::tr ("F")+")"));
00086   Props.append (new Property ("Cds", "1e-12", false,
00087     QObject::tr ("zero bias drain-source junction capacitance")
00088     +" ("+QObject::tr ("F")+")"));
00089   Props.append (new Property ("Betatc", "0", false,
00090     QObject::tr ("Beta temperature coefficient")
00091     +" ("+QObject::tr ("%/Celsius")+")"));
00092   Props.append (new Property ("Alphatc", "0", false,
00093     QObject::tr ("Alpha temperature coefficient")
00094     +" ("+QObject::tr ("%/Celsius")+")"));
00095   Props.append (new Property ("Gammatc", "0", false,
00096     QObject::tr ("Gamma temperature coefficient")
00097     +" ("+QObject::tr ("%/Celsius")+")"));
00098   Props.append (new Property ("Ng", "2.65", false,
00099     QObject::tr ("Subthreshold slope gate parameter")));
00100   Props.append (new Property ("Nd", "-0.19", false,
00101     QObject::tr ("subthreshold drain pull parameter")));
00102   Props.append (new Property ("ILEVELS", "3", false,
00103     QObject::tr ("gate-source current equation selector")));
00104   Props.append (new Property ("ILEVELD", "3", false,
00105     QObject::tr ("gate-drain current equation selector")));
00106   Props.append (new Property ("QLEVELS", "2", false,
00107     QObject::tr ("gate-source charge equation selector")));
00108   Props.append (new Property ("QLEVELD", "2", false,
00109     QObject::tr ("gate-drain charge equation selector")));
00110   Props.append (new Property ("QLEVELDS", "2", false,
00111     QObject::tr ("drain-source charge equation selector")));
00112   Props.append (new Property ("Vtotc", "0", false,
00113     QObject::tr ("Vto temperature coefficient")));
00114   Props.append (new Property ("Rg", "5.1", false,
00115     QObject::tr ("gate resistance")
00116     +" ("+QObject::tr ("Ohms")+")"));
00117   Props.append (new Property ("Rd", "1.3", false,
00118     QObject::tr ("drain resistance")
00119     +" ("+QObject::tr ("Ohms")+")"));
00120   Props.append (new Property ("Rs", "1.3", false,
00121     QObject::tr ("source resistance")
00122     +" ("+QObject::tr ("Ohms")+")"));
00123   Props.append (new Property ("Rgtc", "0", false,
00124     QObject::tr ("gate resistance temperature coefficient")
00125     +" ("+QObject::tr ("1/Celsius")+")"));
00126   Props.append (new Property ("Rdtc", "0", false,
00127     QObject::tr ("drain resistance temperature coefficient")
00128     +" ("+QObject::tr ("1/Celsius")+")"));
00129   Props.append (new Property ("Rstc", "0", false,
00130     QObject::tr ("source resistance temperature coefficient")
00131     +" ("+QObject::tr ("1/Celsius")+")"));
00132   Props.append (new Property ("Ibv", "1e-3", false,
00133     QObject::tr ("gate reverse breakdown currrent")
00134     +" ("+QObject::tr ("A")+")"));
00135   Props.append (new Property ("Rf", "10", false,
00136     QObject::tr ("forward bias slope resistance")
00137     +" ("+QObject::tr ("Ohms")+")"));
00138   Props.append (new Property ("R1", "10", false,
00139     QObject::tr ("breakdown slope resistance")
00140     +" ("+QObject::tr ("Ohms")+")"));
00141   Props.append (new Property ("Af", "1", false,
00142     QObject::tr ("flicker noise exponent")));
00143   Props.append (new Property ("Kf", "0", false,
00144     QObject::tr ("flicker noise coefficient")));
00145   Props.append (new Property ("Gdsnoi", "1", false,
00146     QObject::tr ("shot noise coefficient")));
00147   Props.append (new Property ("Tnom", "26.85", false,
00148     QObject::tr ("parameter measurement temperature")
00149     +" ("+QObject::tr ("Celsius")+")"));
00150   Props.append (new Property ("Temp", "26.85", false,
00151     QObject::tr ("simulation temperature")));
00152 
00153   createSymbol ();
00154   tx = x2 + 4;
00155   ty = y1 + 4;
00156   Model = "MESFET";
00157   Name  = "T";
00158 }
00159 
00160 Component * MESFET::newOne()
00161 {
00162   MESFET * p = new MESFET();
00163   p->Props.getFirst()->Value = Props.getFirst()->Value; 
00164   p->recreate(0); 
00165   return p;
00166 }
00167 
00168 Element * MESFET::info(QString& Name, char * &BitmapFile, bool getNewOne)
00169 {
00170   Name = QObject::tr("MESFET");
00171   BitmapFile = (char *) "MESFET";
00172 
00173   if(getNewOne) return new MESFET();
00174   return 0;
00175 }
00176 
00177 void MESFET::createSymbol()
00178 {
00179   // put in here symbol drawing code and terminal definitions
00180   Lines.append(new Line(-10,-15,-10, 15,QPen(Qt::darkBlue,3)));
00181   Lines.append(new Line(-30,  0,-10,  0,QPen(Qt::darkBlue,2)));
00182   Lines.append(new Line(-10,-10,  0,-10,QPen(Qt::darkBlue,2)));
00183   Lines.append(new Line(  0,-10,  0,-30,QPen(Qt::darkBlue,2)));
00184   Lines.append(new Line(-10, 10,  0, 10,QPen(Qt::darkBlue,2)));
00185   Lines.append(new Line(  0, 10,  0, 30,QPen(Qt::darkBlue,2)));
00186 
00187   Lines.append(new Line( -4, 24,  4, 20,QPen(Qt::darkBlue,2)));
00188 
00189   Ports.append(new Port(  0,-30));
00190   Ports.append(new Port(-30,  0));
00191   Ports.append(new Port(  0, 30));
00192 
00193   x1 = -30; y1 = -30;
00194   x2 =   4; y2 =  30;
00195 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines