My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MESFET.cpp
Go to the documentation of this file.
1 /*
2  * MESFET.cpp - device implementations for MESFET module
3  *
4  * This is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2, or (at your option)
7  * any later version.
8  *
9  */
10 
11 #include "MESFET.h"
12 
14 {
15  Description = QObject::tr ("MESFET verilog device");
16 
17  Props.append (new Property ("LEVEL", "1", false,
18  QObject::tr ("model selector")));
19  Props.append (new Property ("Vto", "-1.8", false,
20  QObject::tr ("pinch-off voltage")
21  +" ("+QObject::tr ("V")+")"));
22  Props.append (new Property ("Beta", "3e-3", false,
23  QObject::tr ("transconductance parameter")
24  +" ("+QObject::tr ("A/(V*V)")+")"));
25  Props.append (new Property ("Alpha", "2.25", false,
26  QObject::tr ("saturation voltage parameter")
27  +" ("+QObject::tr ("1/V")+")"));
28  Props.append (new Property ("Lambda", "0.05", false,
29  QObject::tr ("channel length modulation parameter")
30  +" ("+QObject::tr ("1/V")+")"));
31  Props.append (new Property ("B", "0.3", false,
32  QObject::tr ("doping profile parameter")
33  +" ("+QObject::tr ("1/V")+")"));
34  Props.append (new Property ("Qp", "2.1", false,
35  QObject::tr ("power law exponent parameter")));
36  Props.append (new Property ("Delta", "0.1", false,
37  QObject::tr ("power feedback parameter")
38  +" ("+QObject::tr ("1/W")+")"));
39  Props.append (new Property ("Vmax", "0.5", false,
40  QObject::tr ("maximum junction voltage limit before capacitance limiting")
41  +" ("+QObject::tr ("V")+")"));
42  Props.append (new Property ("Vdelta1", "0.3", false,
43  QObject::tr ("capacitance saturation transition voltage")
44  +" ("+QObject::tr ("V")+")"));
45  Props.append (new Property ("Vdelta2", "0.2", false,
46  QObject::tr ("capacitance threshold transition voltage")
47  +" ("+QObject::tr ("V")+")"));
48  Props.append (new Property ("Gamma", "0.015", false,
49  QObject::tr ("dc drain pull coefficient")));
50  Props.append (new Property ("Nsc", "1", false,
51  QObject::tr ("subthreshold conductance parameter")));
52  Props.append (new Property ("Is", "1e-14", false,
53  QObject::tr ("diode saturation current")
54  +" ("+QObject::tr ("I")+")"));
55  Props.append (new Property ("N", "1", false,
56  QObject::tr ("diode emission coefficient")));
57  Props.append (new Property ("Vbi", "1.0", false,
58  QObject::tr ("built-in gate potential")
59  +" ("+QObject::tr ("V")+")"));
60  Props.append (new Property ("Bv", "60", false,
61  QObject::tr ("gate-drain junction reverse bias breakdown voltage")
62  +" ("+QObject::tr ("V")+")"));
63  Props.append (new Property ("Xti", "3.0", false,
64  QObject::tr ("diode saturation current temperature coefficient")));
65  Props.append (new Property ("Fc", "0.5", false,
66  QObject::tr ("forward-bias depletion capacitance coefficient")));
67  Props.append (new Property ("Tau", "1e-9", false,
68  QObject::tr ("transit time under gate")
69  +" ("+QObject::tr ("s")+")"));
70  Props.append (new Property ("Rin", "1e-3", false,
71  QObject::tr ("channel resistance")
72  +" ("+QObject::tr ("Ohm")+")"));
73  Props.append (new Property ("Area", "1", false,
74  QObject::tr ("area factor")));
75  Props.append (new Property ("Eg", "1.11", false,
76  QObject::tr ("energy gap")
77  +" ("+QObject::tr ("eV")+")"));
78  Props.append (new Property ("M", "0.5", false,
79  QObject::tr ("grading coefficient")));
80  Props.append (new Property ("Cgd", "0.2e-12", false,
81  QObject::tr ("zero bias gate-drain junction capacitance")
82  +" ("+QObject::tr ("F")+")"));
83  Props.append (new Property ("Cgs", "1e-12", false,
84  QObject::tr ("zero bias gate-source junction capacitance")
85  +" ("+QObject::tr ("F")+")"));
86  Props.append (new Property ("Cds", "1e-12", false,
87  QObject::tr ("zero bias drain-source junction capacitance")
88  +" ("+QObject::tr ("F")+")"));
89  Props.append (new Property ("Betatc", "0", false,
90  QObject::tr ("Beta temperature coefficient")
91  +" ("+QObject::tr ("%/Celsius")+")"));
92  Props.append (new Property ("Alphatc", "0", false,
93  QObject::tr ("Alpha temperature coefficient")
94  +" ("+QObject::tr ("%/Celsius")+")"));
95  Props.append (new Property ("Gammatc", "0", false,
96  QObject::tr ("Gamma temperature coefficient")
97  +" ("+QObject::tr ("%/Celsius")+")"));
98  Props.append (new Property ("Ng", "2.65", false,
99  QObject::tr ("Subthreshold slope gate parameter")));
100  Props.append (new Property ("Nd", "-0.19", false,
101  QObject::tr ("subthreshold drain pull parameter")));
102  Props.append (new Property ("ILEVELS", "3", false,
103  QObject::tr ("gate-source current equation selector")));
104  Props.append (new Property ("ILEVELD", "3", false,
105  QObject::tr ("gate-drain current equation selector")));
106  Props.append (new Property ("QLEVELS", "2", false,
107  QObject::tr ("gate-source charge equation selector")));
108  Props.append (new Property ("QLEVELD", "2", false,
109  QObject::tr ("gate-drain charge equation selector")));
110  Props.append (new Property ("QLEVELDS", "2", false,
111  QObject::tr ("drain-source charge equation selector")));
112  Props.append (new Property ("Vtotc", "0", false,
113  QObject::tr ("Vto temperature coefficient")));
114  Props.append (new Property ("Rg", "5.1", false,
115  QObject::tr ("gate resistance")
116  +" ("+QObject::tr ("Ohms")+")"));
117  Props.append (new Property ("Rd", "1.3", false,
118  QObject::tr ("drain resistance")
119  +" ("+QObject::tr ("Ohms")+")"));
120  Props.append (new Property ("Rs", "1.3", false,
121  QObject::tr ("source resistance")
122  +" ("+QObject::tr ("Ohms")+")"));
123  Props.append (new Property ("Rgtc", "0", false,
124  QObject::tr ("gate resistance temperature coefficient")
125  +" ("+QObject::tr ("1/Celsius")+")"));
126  Props.append (new Property ("Rdtc", "0", false,
127  QObject::tr ("drain resistance temperature coefficient")
128  +" ("+QObject::tr ("1/Celsius")+")"));
129  Props.append (new Property ("Rstc", "0", false,
130  QObject::tr ("source resistance temperature coefficient")
131  +" ("+QObject::tr ("1/Celsius")+")"));
132  Props.append (new Property ("Ibv", "1e-3", false,
133  QObject::tr ("gate reverse breakdown currrent")
134  +" ("+QObject::tr ("A")+")"));
135  Props.append (new Property ("Rf", "10", false,
136  QObject::tr ("forward bias slope resistance")
137  +" ("+QObject::tr ("Ohms")+")"));
138  Props.append (new Property ("R1", "10", false,
139  QObject::tr ("breakdown slope resistance")
140  +" ("+QObject::tr ("Ohms")+")"));
141  Props.append (new Property ("Af", "1", false,
142  QObject::tr ("flicker noise exponent")));
143  Props.append (new Property ("Kf", "0", false,
144  QObject::tr ("flicker noise coefficient")));
145  Props.append (new Property ("Gdsnoi", "1", false,
146  QObject::tr ("shot noise coefficient")));
147  Props.append (new Property ("Tnom", "26.85", false,
148  QObject::tr ("parameter measurement temperature")
149  +" ("+QObject::tr ("Celsius")+")"));
150  Props.append (new Property ("Temp", "26.85", false,
151  QObject::tr ("simulation temperature")));
152 
153  createSymbol ();
154  tx = x2 + 4;
155  ty = y1 + 4;
156  Model = "MESFET";
157  Name = "T";
158 }
159 
161 {
162  MESFET * p = new MESFET();
163  p->Props.getFirst()->Value = Props.getFirst()->Value;
164  p->recreate(0);
165  return p;
166 }
167 
168 Element * MESFET::info(QString& Name, char * &BitmapFile, bool getNewOne)
169 {
170  Name = QObject::tr("MESFET");
171  BitmapFile = (char *) "MESFET";
172 
173  if(getNewOne) return new MESFET();
174  return 0;
175 }
176 
178 {
179  // put in here symbol drawing code and terminal definitions
180  Lines.append(new Line(-10,-15,-10, 15,QPen(QPen::darkBlue,3)));
181  Lines.append(new Line(-30, 0,-10, 0,QPen(QPen::darkBlue,2)));
182  Lines.append(new Line(-10,-10, 0,-10,QPen(QPen::darkBlue,2)));
183  Lines.append(new Line( 0,-10, 0,-30,QPen(QPen::darkBlue,2)));
184  Lines.append(new Line(-10, 10, 0, 10,QPen(QPen::darkBlue,2)));
185  Lines.append(new Line( 0, 10, 0, 30,QPen(QPen::darkBlue,2)));
186 
187  Lines.append(new Line( -4, 24, 4, 20,QPen(QPen::darkBlue,2)));
188 
189  Ports.append(new Port( 0,-30));
190  Ports.append(new Port(-30, 0));
191  Ports.append(new Port( 0, 30));
192 
193  x1 = -30; y1 = -30;
194  x2 = 4; y2 = 30;
195 }