Qucs-GUI
0.0.19
|
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 }