/* * device.h - device class definitions * * Copyright (C) 2004, 2005, 2006 Stefan Jahn * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this package; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, * Boston, MA 02110-1301, USA. * * $Id$ * */ #ifndef __DEVICE_H__ #define __DEVICE_H__ namespace qucs { class circuit; class node; class net; namespace device { // creates external resistor circuit circuit * splitResistor ( circuit * base, // calling circuit (this) circuit * res, // additional resistor circuit (can be NULL) const char * c, // name of the additional circuit const char * n, // name of the inserted (internal) node int internal); // number of new node (the original external node) // removes external resistor circuit void disableResistor ( circuit * base, // calling circuit (this) circuit * res, // additional resistor circuit int internal); // number of new node (the original external node) // creates external capacitor circuit circuit * splitCapacitor ( circuit * base, // calling circuit (this) circuit * cap, // additional capacitor circuit (can be NULL) const char * c, // name of the additional circuit node * n1, // first node of new capacitor node * n2); // second node of new capacitor // removes external capacitor circuit void disableCapacitor ( circuit * base, // calling circuit (this) circuit * cap); // additional capacitor circuit // checks whether circuit is enabled int deviceEnabled ( circuit * c); // circuit to be checked // computes current and its derivative for a MOS pn-junction void pnJunctionMOS ( nr_double_t Upn, // pn-voltage nr_double_t Iss, // saturation current nr_double_t Ute, // temperature voltage nr_double_t& I, // result current nr_double_t& g); // result derivative // computes current and its derivative for a bipolar pn-junction void pnJunctionBIP ( nr_double_t Upn, // pn-voltage nr_double_t Iss, // saturation current nr_double_t Ute, // temperature voltage nr_double_t& I, // result current nr_double_t& g); // result derivative // limits the forward pn-voltage nr_double_t pnVoltage ( nr_double_t Ud, // current pn-voltage nr_double_t Uold, // previous pn-voltage nr_double_t Ut, // temperature voltage nr_double_t Ucrit); // critical voltage // computes the exponential pn-junction current nr_double_t pnCurrent ( nr_double_t Upn, // pn-voltage nr_double_t Iss, // saturation current nr_double_t Ute); // temperature voltage // computes the exponential pn-junction current's derivative nr_double_t pnConductance ( nr_double_t Upn, // pn-voltage nr_double_t Iss, // saturation current nr_double_t Ute); // temperature voltage // computes pn-junction depletion capacitance nr_double_t pnCapacitance ( nr_double_t Uj, // pn-voltage nr_double_t Cj, // zero-bias capacitance nr_double_t Vj, // built-in potential nr_double_t Mj, // grading coefficient nr_double_t Fc); // forward-bias coefficient // computes pn-junction depletion charge nr_double_t pnCharge ( nr_double_t Uj, // pn-voltage nr_double_t Cj, // zero-bias capacitance nr_double_t Vj, // built-in potential nr_double_t Mj, // grading coefficient nr_double_t Fc); // forward-bias coefficient // computes pn-junction depletion capacitance nr_double_t pnCapacitance ( nr_double_t Uj, // pn-voltage nr_double_t Cj, // zero-bias capacitance nr_double_t Vj, // built-in potential nr_double_t Mj); // grading coefficient // computes pn-junction depletion charge nr_double_t pnCharge ( nr_double_t Uj, // pn-voltage nr_double_t Cj, // zero-bias capacitance nr_double_t Vj, // built-in potential nr_double_t Mj); // grading coefficient // compute critical voltage of pn-junction nr_double_t pnCriticalVoltage ( nr_double_t Iss, // saturation current nr_double_t Ute); // temperature voltage // limits the forward fet-voltage nr_double_t fetVoltage ( nr_double_t Ufet, // current fet voltage nr_double_t Uold, // previous fet voltage nr_double_t Uth); // threshold voltage // limits the drain-source voltage nr_double_t fetVoltageDS ( nr_double_t Ufet, // current fet voltage nr_double_t Uold); // previous fet voltage // calculates the overlap capacitance for mosfet (meyer model) void fetCapacitanceMeyer ( nr_double_t Ugs, // gate-source voltage nr_double_t Ugd, // gate-drain voltage nr_double_t Uth, // threshold voltage nr_double_t Udsat, // drain-source saturation voltage nr_double_t Phi, // built-in potential nr_double_t Cox, // oxide capacitance nr_double_t& Cgs, // resulting gate-source capacitance nr_double_t& Cgd, // resulting gate-drain capacitance nr_double_t& Cgb); // resulting gate-bulk capacitance // computes temperature dependency of energy bandgap nr_double_t Egap ( nr_double_t T, // temperature nr_double_t Eg0 = Eg0Si); // bandgap at 0K // computes temperature dependency of intrinsic density nr_double_t intrinsicDensity ( nr_double_t T, // temperature nr_double_t Eg0 = Eg0Si); // bandgap at 0K // calculates temperature dependence for saturation current nr_double_t pnCurrent_T ( nr_double_t T1, // reference temperature nr_double_t T2, // temperature nr_double_t Is, // saturation current nr_double_t Eg, // bandgap at 300K nr_double_t N = 1, // emission coefficient nr_double_t Xti = 0); // temperature coefficient // calculates temperature dependence for junction potential nr_double_t pnPotential_T ( nr_double_t T1, // reference temperature nr_double_t T2, // temperature nr_double_t Vj, // built-in potential nr_double_t Eg0 = Eg0Si); // bandgap at 0K // calculates temperature dependence for junction capacitance nr_double_t pnCapacitance_T ( nr_double_t T1, // reference temperature nr_double_t T2, // temperature nr_double_t M, // grading coefficient nr_double_t VR, // built-in potential ratio nr_double_t Cj); // zero-bias capacitance // calculates temperature dependence for junction capacitance nr_double_t pnCapacitance_F ( nr_double_t T1, // reference temperature nr_double_t T2, // temperature nr_double_t M, // grading coefficient nr_double_t VR); // built-in potential ratio: Vj(T2) / Vj(T1) } // namespace device } // namespace qucs #endif /* __DEVICE_H__ */