Previous | 199869 Revisions | Next |
r26877 Wednesday 1st January, 2014 at 20:28:59 UTC by Couriersud |
---|
Fixed PNP model and added test netlist (bjt.c) [Couriersud] |
[nl_examples] | bjt.c* |
[src/emu/netlist] | nl_parser.c nl_setup.c |
[src/emu/netlist/devices] | nld_twoterm.c nld_twoterm.h |
r26876 | r26877 | |
---|---|---|
62 | 62 | netdev_device(n, "R"); |
63 | 63 | else if (n == "NETDEV_D") |
64 | 64 | netdev_device(n, "model", true); |
65 | else if (n == "NETDEV_QNPN") | |
66 | netdev_device(n, "model", true); | |
67 | else if (n == "NETDEV_QPNP") | |
68 | netdev_device(n, "model", true); | |
65 | 69 | else if ((n == "NETDEV_TTL_CONST") || (n == "NETDEV_ANALOG_CONST")) |
66 | 70 | netdev_const(n); |
67 | 71 | else if (n == "NETLIST_START") |
r26876 | r26877 | |
---|---|---|
21 | 21 | NET_MODEL(".model 1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)") |
22 | 22 | NET_MODEL(".model 1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)") |
23 | 23 | NET_MODEL(".MODEL BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45V ICRATING=100M MFG=ZETEX)") |
24 | ||
24 | NET_MODEL(".model BC556B PNP(IS=3.83E-14 NF=1.008 ISE=1.22E-14 NE=1.528 BF=344.4 IKF=0.08039 VAF=21.11 NR=1.005 ISC=2.85E-13 NC=1.28 BR=14.84 IKR=0.047 VAR=32.02 RB=1 IRB=1.00E-06 RBM=1 RE=0.6202 RC=0.5713 XTB=0 EG=1.11 XTI=3 CJE=1.23E-11 VJE=0.6106 MJE=0.378 TF=5.60E-10 XTF=3.414 VTF=5.23 ITF=0.1483 PTF=0 CJC=1.08E-11 VJC=0.1022 MJC=0.3563 XCJC=0.6288 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.8027 Vceo=65 Icrating=100m mfg=Philips)") | |
25 | 25 | NETLIST_END() |
26 | 26 | |
27 | 27 |
r26876 | r26877 | |
---|---|---|
228 | 228 | |
229 | 229 | // Assume 5mA Collector current for switch operation |
230 | 230 | |
231 | if (_type == BJT_NPN) | |
232 | m_V = d.V(0.005 / alpha); | |
233 | else | |
234 | m_V = - d.V(0.005 / alpha); | |
231 | m_V = d.V(0.005 / alpha); | |
235 | 232 | |
236 | 233 | m_gB = d.gI(0.005 / alpha); |
237 | 234 | if (m_gB < NETLIST_GMIN) |
r26876 | r26877 | |
---|---|---|
314 | 314 | { |
315 | 315 | double vE = INPANALOG(m_EV); |
316 | 316 | double vB = INPANALOG(m_BV); |
317 | double m = (_type == BJT_NPN) ? 1 : -1; | |
317 | 318 | |
318 | int new_state = (vB - vE > m_V ) ? 1 : 0; | |
319 | int new_state = ((vB - vE) * m > m_V ) ? 1 : 0; | |
319 | 320 | if (m_state_on ^ new_state) |
320 | 321 | { |
321 | 322 | double gb = m_gB; |
322 | 323 | double gc = m_gC; |
323 | double v = m_V; | |
324 | double v = m_V * m; | |
324 | 325 | if (!new_state ) |
325 | 326 | { |
326 | 327 | // not conducting |
r0 | r26877 | |
---|---|---|
1 | /* | |
2 | * bjt.c | |
3 | * | |
4 | */ | |
5 | ||
6 | ||
7 | #include "netlist/devices/net_lib.h" | |
8 | ||
9 | NETLIST_START(bjt) | |
10 | /* Standard stuff */ | |
11 | ||
12 | NETDEV_CLOCK(clk) | |
13 | NETDEV_PARAM(clk.FREQ, 1000) // 1000 Hz | |
14 | NETDEV_SOLVER(Solver) | |
15 | NETDEV_PARAM(Solver.FREQ, 48000) | |
16 | NETDEV_ANALOG_CONST(V5, 5) | |
17 | NETDEV_ANALOG_CONST(V3, 3.5) | |
18 | ||
19 | /* NPN - example */ | |
20 | ||
21 | NETDEV_QNPN(Q, BC237B) | |
22 | NETDEV_R(RB, 1000) | |
23 | NETDEV_R(RC, 1000) | |
24 | ||
25 | NET_C(RC.1, V5) | |
26 | NET_C(RC.2, Q.C) | |
27 | NET_C(RB.1, clk) | |
28 | NET_C(RB.2, Q.B) | |
29 | NET_C(Q.E, GND) | |
30 | ||
31 | /* PNP - example */ | |
32 | ||
33 | NETDEV_QPNP(Q1, BC556B) | |
34 | NETDEV_R(RB1, 1000) | |
35 | NETDEV_R(RC1, 1000) | |
36 | ||
37 | NET_C(RC1.1, GND) | |
38 | NET_C(RC1.2, Q1.C) | |
39 | NET_C(RB1.1, clk) | |
40 | NET_C(RB1.2, Q1.B) | |
41 | NET_C(Q1.E, V3) | |
42 | ||
43 | //NETDEV_LOG(logB, Q1.B) | |
44 | //NETDEV_LOG(logC, Q1.C) | |
45 | ||
46 | NETLIST_END() |
Added: svn:eol-style + native Added: svn:mime-type + text/plain |
Previous | 199869 Revisions | Next |